Product or Framework

I'm heading off to the Plone summit next week and a few people have sent me their opinion on what they'd like to see change. Personally it comes down to one simple thing for me.

Every time I hear Paul Everitt at a Plone conference, he asks a question "Is Plone a product or a framework?". A whole bunch of people raise their hand and it rarely ends up being a product. I've always wanted to jump and ask the questions this way: "Is Plone currently a product or a framework?" and "Should Plone be a product or framework in the future?".

For me this is a key question because it then provides a reference to allow decision making. Products focus on easy install, ease of use, documentation. Frameworks tend to focus providing a base for solutions to be built on top of. As consultant I've seen lots of the latter, such as, building large numbers of archetypes for collecting highly stuctured content, something that would be a doddle in say Django. I've seen them because people struggle and come to me for help.

There is a fundamental problem here in that technical computer consultants and specifically the ones providing Plone solutions sell their time. There is little recognition of the time spent setting up and installing Plone, that's so easy. So the money comes from selling the customisations. Making Plone more of a product, alters the source of customisation revenue. It doesn't mean there's no money, it just to be made in different sources such as - analysing a clients needs configuring Plone correctly, maintenance and the like. But the people most keen to make a change, maybe have the most to lose.

Once we've got a focus of which we want to pick, we can then provide a base for questions I would have like:

The web based customisation story for Plone has been a great success. And a great failure.

If it's a product how much web based customisation should be allowed?

If it's a framework that requires a set skill level to go near Plone, how much skill level is needed.

As an example (and this is heresay, I haven't done this in Plone 3) I believe making a portlet in Plone 3 is now a lot more involved. Which way does this move Plone? It's easy to manipulate and configure portlets through the web so score one for a product. It's a saner setup for a backend, so score one for the developers, but I think it's a minus one for a framework. Consultants have a much harder time making portlets (well at least till its figured out). So perhaps portlets have been a win for Plone and moving it to a product.

If we know where we want Plone to go we can start to frame technology decisions. And for the record for many years I've thought of Plone as framework that is getting closer and closer to being a product.

If you have opinions you want me to voice there like, moving it all to JavaScript, then let me know.

Update: changed the sentence "Making Plone more of a product, reduces the customisation money", to "Making Plone more of a product, alters the source of customisation revenue".

Chandler

Prompted by this article on Chandler, I did a little bit of digging on Chandler. I remember Chandler being launched and a bunch of people sending me emails about this Outlook killer. They were all very excited by it, but me being the grumpy git said "yeah right". I was mildly interested for one reason: it was written in Python.

Like most people I tried some builds and then some more and still there wasn't anything there. It was a shame and it quickly dived off the radar. Looks like the application is reaching a turning point and may or may not be around much longer. A quick review sounds like its the planning and not the code that's the problem.

Joel pointed out the problems you get trying to do an open source project, something Alan and Alex found a long time ago with Plone. You have to make something before people will contribute:

But when you have an app that doesn’t do anything yet, nobody finds it itchy. They’re not using it. So you don’t get volunteers.
Joel Spolsky

This post doesn't blame Python, rather the management philosophy:

There was no objective basis for decision-making.

It's that simple, really. Without an objective basis, there was no way to argue from anything except opinion, with nobody's opinion being more important than anyone else's.
Philip J Eby

But that post was by Philip J Eby, a die hard Python fan. However I do believe if Python was the problem, he'd say so. So then I started worrying about Python being the problem. This site seems to think it be:

Unfortunately, I'm am still left in the dark to speculate. Can large scale projects be successful implemented around a dynamic programming language? The burden of proof was out there several years ago, now more than ever, the development community needs some incontrovertible evidence that dynamic programming languages can scale.

I don't buy that. Python is a strong language. There are a ton of projects out there that fail that are using closed source tools. The list of projects using Python is long (just realised YouTube is written in Python), off the top of my head I think of the stuff Enfold and Blue Fountain have done, some of which completely kick ass.

No off to find some proof to counter this argument, but first I have to get some work done.

Rails is magic

A slightly kinder post than Zed's rant called Rails is shitty.

As Chris said this exact stuff has been leveled at Zope 2. A while back I was doing why move to Django over Rails and the answer for me was simple "Ruby is magic. Rails is more magic. Ruby on Rails is magic squared".

Their assertion that there is no planning in Rails, just stuffing hacks out with a very short time frame in mind feels right, although I'm sure that's not the case. All I really want is someone to clean up the insanity in there. Just simple things like select_date which is unbound date widget and date_select which is a bound date widget. I think or perhaps I got them the wrong way round. Turns out both of them suck completely anyway.

Macbook Air

Must admit been looking forward to this announcement, I got caught up in the pre conference rumours and followed the blogs on the keynote. I've been looking forward to hearing about the new MacBook. This is because a few years ago I had a small Sony and loved it. Except it didn't run OS X, just crappy old Windows. The idea of something that combined the size of the Sony and OS X and Apple polish (and not being a Sony) would rock.

So with baited breath I watched the keynote and oh my god its gorgeous. I want one. But then the doubt set in.

I was briefly a road warrior (well road peasant more like) and loved the Sony, because it was small, slept quickly, was light and a super long battery life. I used the thing all the way from Vancouver to Manchester, one battery (8hrs). I used to goad the person in front of me to put the seat down because I could still work the entire way.

The MacBook Air. Light, yep check. Sleeps and restarts quickly, I bet it does. Long battery life, well they advertise 5 hours, so that really means 4 and after a few cycles, more like 3. Hmmm nope. Size, well it's thinner than a MacBook but slightly bigger the other way 1.08 x 12.78 x 8.92 vs 0.16 to 0.76 x 12.8 x 8.94. I can't use my MacBook on a plane. Hmm.

I think it's sexy, the idea that they've got rid of most ports and a superdrive is great. Fabbo. But will it work on the flight Vancouver to Manchester? No. So for that reason I've really cooled down on this laptop and I've gone from "I'll do anything to get it" to "Yeah if my MacBook breaks, maybe".

Just in case you weren't sure that Virgin Media suck

I've phone Virgin 4 times today to get a MAC code so I can calmly and smoothly move to another ISP. Any ISP would do. However first time told to call different number. Called different number on hold 20 minutes. Called again on hold 1 hour 30 mintues. Called again on hold 15 minutes. Gave up. Fumed a lot. Tried their web site, it's broken. Go and cancel bank direct debit since thats the only way to get any attention from them.

Open Source CMS FUD

The other day I received this email about why open source CMS's are not being considered for a project. Honestly I just laughed when I saw them, but here goes. This is the list of things a closed source CMS is meant to bring:

It is likely to have a number of features built in already

What open source CMS's don't? If you go to CMS Matrix site and compare them you'll find Plone compares very well. In fact, if you look at the list, there are far too many features in some of those products.

This also doesn't consider a simple point, what if the feature doesn't do what you want? A term like "Groupware" which Vignette (for example) has is meaningless to since its so vague. How do you propose to change that in a closed source CMS? It would likely be easier in an open source CMS. Before you choose a CMS pick those features you really need and then research how those are done in depth on your platform.

It is likely to be more reliable and faster to implement

Really? What is that based on? If I remember a Tony Byrne talk a while back, the majority of closed source vendor money is made off of consulting dollars. It's likely to be more expensive. The implementation all depends upon the skill of the people implementing it. Some are incredibly easy to simple installs. There are a whole bunch of very bright people out there who can install an open source CMS. Shockingly enough, there's a whole bunch of cowboys in the open source and closed source world who can make a mess of it. At least in the open source world you can pick your implementor.

Documentation and training are usually significantly stronger

This is the only one I'll partially agree with here. Plone is the exception here, there's lots of training and documentation available for Plone it. But for most open source projects it's not great. Again though this creates a common fallacy, that documentation in closed source projects is better . And rarely is it great, in fact time again I've heard "I paid $50k for this system and all I got was this PDF, if i'd used Plone I would have 3 books and plone.org". Before you pick a closed source vendor, ask about this.

It is easier to find developers trained in a particular closed source CMS

I don't buy that. Yes finding Plone developers can be a challenge, but that's because Plone is doing very well and most people who know Plone are gainfully employed. But I can take Drupal off the shelf and then find any PHP programmer which are as common as muck and have them work on it. A few months ago I was configuring Moodle quite successfully.

Of course, if it's a closed source CMS, you are assuming it as at least configurable or can be changed. That's not always the case. Open source CMS's have all the code available and the API's apparent to you. That is far, far more power than you will ever need.

Conclusion

Minor point: the original comments said commercial not closed source. I use closed source since there's an implicit assumption from the here that commercial == closed source. I don't like that - Plone, Drupal, Alfresco and other CMS's are clear big commercial successes.

These comments are quite sweeping statements and seem to be based on belief that "commercial" is better. Perhaps its based on the idea that if you buy something, you will get everything you need and if not you'll have someone to complain to. Or perhaps its that all open source projects have terrible marketing.

I was pleasantly surprised to note that the list did not mention price. No where does it mention this and I 'm glad because I don't believe a good open source implementation is a huge amount cheaper. Just because you don't pay licensing fees doesn't mean you shouldn't expect to pay for implementation, analysis, development and training. Paying for this from a good company will make all the difference.

RDP on Mac OSX

Using a Mac and RDP to connect to a Windows box? Find that you can't type a backslash, that most useful of all characters for Windows paths? Then you need: Backslasher. A little program that sits on the Windows box and translates ` into \. Thank god for this little fella.

Accessible Google Charts

Good job here caring about accessiblity. A Google Chart is an image grabbed from the Google cloud, not very accessible if you can't see the chart. This converts the table into a URL the chart API likes. This is probably much easier for developers as well who can instantly get their head around a HTML table.

via Ajaxian

TalFlatPages

Django provides flatpages but these won't inherit from your page templated pages, only the Django templating language one. Talflatpages is a very simple app that copies completely from flatpages, but changes the default template to be a tal one, using main_template in a macro (I'm sure you can change this to suit your site).

Only a small project so not bothering with a release, grab it from SVN here:

 http://svn.clearwind.ca/public/django/talflatpages/

Update: got the URL for SVN wrong, corrected.

Using profiles with Django

There's a feature in Django to add in new values to a user record, use a profile. Here's an example: http://www.b-list.org/weblog/2006/jun/06/django-tips-extending-user-model/. So first thing I did was write a unit test for it, which failed.

This got me confused for a minute because I thought that when you created a user, it created the profile for you automatically. Duh! So for the record here's a simple unit test, create a user, set the company (a field on the Profile object), retrieve it and check the company is still there.

import unittest
from models import Profile
from django.contrib.auth.models import User
from django.contrib import auth

class TestSecurity(unittest.TestCase):
    def setUp(self):
        user = User.objects.create_user(username="bob",
                                        email="j@j.com",
                                        password="pwd")
        user.save()
        
        profile = Profile.objects.create(user_id=user.id)
        profile.company = "Test"
        profile.save()

    def testProfile(self):
        user = User.objects.get(username="bob")
        assert user.get_profile().company == "Test"

UK Government IT projects

The cost to the taxpayer of abandoned Whitehall computer projects since 2000 has reached almost £2bn
Guardian

Nothing new in here, but this project:

It was being used to report around 30,000 crimes a year but began to falter when defence technology company, Qinetiq, was brought in to build a replacement in 2005. Costs began to spiral and the new system was deemed to be unfit for purpose, resulting in suspension of the service last March and final closure in December. The deal is now subject to a legal dispute, with Qinetiq claiming that it has completed the work it was contracted to do.

Reminds me of this project:

This is in sharp contrast to conventional contracts which attempt to pass on risk – or rather, as Mathew Riley, the company’s commercial director for Terminal 5, ‘the financial consequences of risk’ – to contractors. BAA realised that such contracts do not really work because ultimately either the risk would always fall back on itself, or the attempt to pass on risk would result in massive legal claims and counterclaims.
http://www.christianwolmar.co.uk/articles/pubfinance/apr22,05.shtml

Although Heathrow is possibly as close as you can get to hell on earth, they do have something to teach us.

iPlayer: first thoughts

It's taken a long time for the BBC to get there, but a few weeks ago iPlayer launched. iPlayer has a Flash based player (like every other site in the world) that lets you see programmes from the last 7 days. After that they no longer show up on the site. In the last few days we've watched Doctor Who, Top Gear, Robbie the Reindeer and Have I Got News For You.

For most they've worked really well, a couple of times the flash based player just kept hanging and it took a stop and start to get them working. One was followed by a 20-30 minute outage of everything bbc.co.uk, so probably nothing to do with the iPlayer. But once they were running they ran without any delay in full screen mode. As the site gets more popular I hope they can keep the bandwidth going, watching an hour of Doctor Who without any pausing is great.

I'd really like to see the navigation a little easier and maybe some RSS feeds so I can see when an episode of the few shows I'd like to watch is actually coming on without having to go and search. But all in all, very impressed.

The only real shame in the whole thing is that it took the BBC so long to get there in the fight for client side DRM technology. Once upon a time, writing software for the desktop made sense. But the web solves that problem, who cares about downloading, just watch straight on the web, remove the problem. Well sort of, sites like vixy.net will catch up and the game will be on to stop downloads, but for the moment, well done BBC.

In the end iPlayer should be something really good, bear in mind the BBC is the single biggest creator of television content in the world (and probably the best). That will beat any number of YouTube clones.

Catching up

I do try to remember to post on places we've been that were good. Before our trip to Egypt we went to Llandudno for the weekend. It was a nice weekend, but being in November was a little cold, windy and well closed.

We did find a great bed and breakfast, they took really good care of us and the kids. That evening we went to the Albert Pub which has been renovated and is serving great food. The waiters were quite flustered by our request to take our desert out, and packed up a huge pile of ice cream and cheesecake for us. It then proceeded to leak all over the table in the hotel so we just had to eat it all.

One thing that we enjoyed seeing were the seagulls, grabbing muscles from the sea shore. They'd fly up a metre or three then drop them on the pavement. Repeating this until the muscles cracked open and could eat the insides. And it made some for interesting photos.