So it took a couple of days to implement PikiPiki. It could have more features, but I'm trying to keep it simple.
Consider a project to build such a system fifteen years ago. We want:
- Collaboration between any number of people
- Support threadmode and collaborative authoring, and allow people to go back and refactor existing work
- Accessible from almost anywhere on the world
- Client and server that run on Microsoft and several Unix variants.
- Quick searching of the whole database
- Hypertext links and back-links
- Simple enough to use in a few minutes with little training
- Embed or link to graphics and other resources
Almost certainly people would have imagined a much larger project running over a year; perhaps it might have become a
HundredPersonProject. (Consider Xanadu, for example: much more ambitious, but far slower.) A decade or so later it's one person and a couple of days, because
- A very reusable infrastructure is in place in the Internet, web browsers, and web servers.
- Higher-level languages (Perl, Python) are more easily available.
- Faster machines allow simpler solutions, such as BruteForce search of the database rather than maintaining indices and use of scripting languages.
- Common designs for web sites (and WikiClones in particular) are reasonably well established.
So, in a way we have achieved an improvement in productivity of several orders of magnitude, mostly through reuse. I think also it's important to try to believe that there is a simple solution, and that you can get a surprising amount of functionality done in a week. (c.f. the 'UnpluggableComputer
?' paper.)
If I pick my problem to match a solution that already exists then I can solve the problem very quickly. If I want to build a blue two-story house then I can probably 'build' that house in a weekend, if I already have a white two-story house.
If I can convince myself and my family we'll be happy with a new kitchen and coat of paint rather than a whole new house we'll save a lot of money -- and in software the difference is even greater.
I'm not sure whether "high level languages" make a difference. ThoughtsWeaver took "a single day using pretty standard Shell scripts and simple C++ programs." I doubt if it would have taken much longer in C, and Shell scripts have been around for decades.
So I'd put it all down to various kinds of reuse, and MooresLaw. And the reuse is mostly at the level of entire programs, not some wizzy fine-grained component architecture. -- DaveHarris
It made a difference to me: if nothing else, it skips compiling, gives proper stack traces, and gives built-in power tools like regexps. Many of these things have been around on unix for years, but it's only relatively recently that most PCs could get to the net. -- MartinPool
CategoryWiki