Reinventing wheels versus using the perfectly good set you have
In a column on Zope Lessons Learned, Jon Udell writes:
It seems silly to recreate, in a scripting platform, services that already exist in the environment. On the other hand, since those services aren't guaranteed to exist in the same way in every environment, you can argue that the scripting platform should be self sufficient even if that means reinventing wheels...This is something else I've been thinking about with regards to the PersonalServer / DesktopWebAppServer I want to put together. Thing is, between the slice of a full peer I have at decafbad.com, and the full UNIX environments I have on my 2 linux boxen and one iBook, I have 90% of the environment I want already.
I have databases, I have web and mail servers, I have WebDAV, and I have schedulers. Should I just say to hell with it and get on with writing the top layer? That is, the actual apps I want to run on this nifty personal server framework? I have been so far, and calling it "prototype". Telling myself that these little apps are just "playing around" for until I build a "real" desktop environment in which to host the apps.
So why reinvent all the wheels to which Jon refers? Because they "aren't guaranteed to exist in the same way in every environment", and I would like to distribute and share my work to people who don't have a full peer, 2 linux boxen, and an iBook. So, I'd like this stuff to be a simple little wrapped up package that's easy to drop in on a Win32 box. Or a Linux box, or a Mac OS X box. So, in order to make a cross-platform PersonalServer, I have to reinvent the wheels and create a run-time environment that itself runs on all platforms so that I don't have to modify the upper layers of the app.
Hmm... Or, I could just get to work within the excellent environments I already have, screw reinventing wheels, and actually create some apps that would be worth making cross-platform on some later date. :) Because the longer I work on reinventing wheels, the fewer things I have that are really any fun to play with in the end.
Besides, who would I be kidding if I didn't admit that the stuff I'm playing with right now is for early adopters and AlphaGeeks? So why waste a lot of time making a pretty box with a bow now?
MacOsX exists, and RadioUserLand exists, so I might as well stand on their shoulders. I wish I could find the permalink, but Dave Winer was talking about Open Source developers banding together on a mailing lists to "crush" a commercial product. He works toward the conclusion that this is stupid and useless, and that cooperation is more in everyone's interest. Not to be a dittohead in the Cult of UserLand, but they seem to be bearing this out. RadioUserLand is so open and inviting for tinkering that I think most of what I'd want from an Open Source clone is already there.
Hell, I even prefer MacOsX over Linux now. Am I selling my hacker soul? I don't think so. :)
Okay, okay, enough babbling. I'll forget about writing my OS-within-an-OS for now and write the apps on top of it.