uWeb - a Web Development Kit
This originally started out as a - drum roll ..... - Library of Objects for Writing Web Pages!!!!
I'm not sure what it is right now because I decided that I should write up
a Functional Specification. Please, no groans - I'm sure you always
write a spec before you start coding. (Design Goals are outlined below, but please take a look at the
spec: it has some scenarios which make things much clearer - and it's at least a little funny)
So Why am I doing this?
Pretty much out of Desperation because I haven't been able to find anything
which does what I want.
Over the past year and a half I've looked at Drupal, Joomla!, Ruby on Rails,
PostNuke, Flash, Codeigniter, and the general idea of MVC systems
Each is a HUGE system which Solves a set of problems nicely but . . .
- They don't say what the problems are Up Front, so you have to learn them
before you can deduce what it is (at least I did).
- They're all presented as the solution to “Everything Web”
- They take a long time to learn to customize.
- They are Big and Bulky
- and, most Importantly, . . . My problem doesn't easily fit into their original problem.
I've wasted a lot of time 'getting up to speed' only to find out that I don't
want to use them.
Here are my Design Goals:
- Light Weight. By that I mean, a competent programmer should be able to grab it and start useful coding within a couple of hours.
This means that whatever it is, it's easy to install. In fact, it should be so easy, we don't even think of installing it.
- Simple. No fancy interfaces. Only really useful, easily understood 'parameters'. Doesn't require tuning.
- Support rather than Require. Frameworks and MVC things all impose their model. Drupal and friends/enemies go further by supplying an elaborate GUI control/configuration/command facility that you have to work within. Drupal's system of 'hooks' is pretty good, but it still imposes a lot of structure and convention in order to do anything at all.
Support means to provide facilities with as few coercive requirements as possible.
- Solve the Well Known, Frequently Occurring Tasks Simply and Elegantly. We all know we need to be able to register, authenticate, and authorize users. There are thousands of implementations - all similar. This is something we should be able to take out of the can and just use without thinking about it.
- Free and Usable in 'for pay' projects. This will be released under LGPL
- Modern. To hell with Netscape 4, I.E. 5.5, PHP 4, Mysql 4, etc. The Internet is a broad enough ocean that we don't need to support old, dead fish.
- Self Contained. Stable is impossible. Self Contained isn't. If it is Self Contained, then we can include a copy in every site we build. That means we can maintain it Loooooong after it becomes obsolete. Combined with Simple and Light Weight - this is a Good Thing.