Feature Creep

is a term referring to the tendency to keep adding features to a piece of software rather than locking it off and bullet proofing the features you’ve got already. I’m worried I may be a Feature Creep. If Feature Creep is left unchecked there is the risk of creating BloatWare, which is pretty much what it sounds like: Software that’s so full of junk that it becomes unwieldy and flatulent and often no longer suitable for the simple and specific task it was originally designed for. I like to add nice features but I am anxious about the idea of creating bloatware.

The difficult part of avoiding bloatware is that just about every feature is a good idea when you take it on its own (eg export syntax, special paste modes, etc), but providing an interface a large array of features can increase code size and program complexity. Also it greatly increases the risk of bugs, as the system grows in complexity so do the bugs. Hence the KISS principle ("Keep It Simple, Stupid")

Why am I making a text editor?

Another thing to watch is re-inventing the wheel. Or re-re-re-re-inventing the wheel. There are gazillions of Text Editors out there (my second favourite is EmEditor) so why should I bother writing one? To be honest, I think the primary reason is to prove that I can. Of course, there are many other benefits of writing your own software. When you require a feature you dont just wish someone else would create it for you… you make it yourself! Software is very special in this way, because although it is certainly a lot of work to create a fully functional application, it is still quite feasible for an individual to create a piece of software to suit his own needs. This is in stark contrast to almost all other areas of life. For example, if a person finds himself dissatisfied with existing forms of transport, he can not simply build his own hover car. Whereas I can decide to create my own text editor. Even though some other text editors might be created by multi-billion dollar companies, I can still comfortably throw my hat into the ring with a competitive offering. Maybe it wont always be like this, but you must understand, it is an exciting time.

Things I have done today:

  • More Javascript stuff for forms processing. Added a _remember field to forms to specify what should be stored away in cookies. The leading underscore tells the modified Perl script to ignore the field when it is posted, since it is only relevant for the client side JavaScript.
  • Extra processing for href’s, adding appropriate target attributes for images as well as external links (but not mailto: or javascript: links)