Tuesday, August 03, 2004
new target platforms

As my sunburns turn into a mere pre-cancerous glow (don't freak Mom, it's just the turn of a phrase), I've been thinking about different targets for coding.

I've been doing a lot of thinking about Cocoa lately, but nothing seems to be kicking me in the ass in a way that says "You must write me." Which is somewhat sad, since I really do want to do something significant in Cocoa.

It occurs to me that I should look into the foundations of GMail a bit. GMail on the client side is a large amount of Javascript, with XML-RPC used as the interface to the backend. Think about that. It's a web-based application, but a bit more complex than you normal run-of-the-mill web-based application. GMail, when it ships, will be one of the best examples of the Browser as the new development platform. It won't be the first, certainly, but it will be one of the best implemented. Personally, when I'm using GMail, I'm not very aware that the app is not on my own machine. I don't feel all that constrained by being in a browser. Well, at least not often.

This leads me to think that a nice platform to target would be Mozilla/Firefox, rather than any particular OS. And if the implementation language was cross platform, like say Python, this app would run anywhere that Python and Mozilla/Firefox ran.

I've also been thinking a lot about IMAP as a user interface. If you think of an email message as a blob of information tagged with metadata, the possibilities open up quite nicely. You can also go the other way, and instead of IMAP being an interface to a message store, it can be used as an interface for anything that presents a hierarchical view of blobs tagged with metadata. There are many email clients out there that support IMAP access, and they all become clients of any code that presents its data using IMAP.

So, is there a nice Python library that makes it easy to write servers, and also provides ready access to the server side of the IMAP protocol? Well of course. Twisted comes to mind immediately, although I suppose you do it with just the standard Python distribution as well.

In my opinion, the weak point of using Python/Twisted/Mozilla as platform is the necessity of using Javascript. I suppose that I could forgo Javascript and just use standard HTML forms for the interaction, but what makes GMail so nice is the Javascript.

Let's enumerate the skills necessary to target this platform:

  1. Python
  2. Twisted
  3. HTML/XHTML/CSS
  4. Javascript

Wow, you have to pull a lot of rabbits out of your hat these days if you want to do something even slightly cool.

I still think it's a good idea. It should be easy enough to get a project far enough along so that if there was a particular skill that you sucked at, help could be provided by some volunteer that believes in the project.

Side note -- in my experience, getting other people interested enough in your project to be something other than a user is the toughest task. With the few projects I've shipped, I've had very little problem getting people to use them, but I have yet to have someone submit a patch or contribute new functionality. I'm not complaining here, I'm just making an observation, and I'm curious if it holds true for other projects. I suspect that the projects that have many developers involved probably started out with many developers involved. Solitary endeavors tend to remain as they are.

10:49:49 AM    comments ()  trackback []