I have a desire to see things proceed quickly. This is, in general, a good thing – but not without drawbacks. It gives me an inflated expection as to how quickly I can ‘get into’ a project. I started thinking about this topic when I considered the python IDEs/editors available and wondering when there’d be one I liked. I realized that often me (even as a developer) has a seriously skewed idea of how long projects can take to reach fruition.
For example – I’d like work on the following:
new packaging system
X replacement (now more for architectural cleanliness than anything)
I’d like to see progress on:
A unified GL/video API for linux that deals with both console/graphics mode and is accessible by any windowing system
When I wondered why it took so long to see progress I started to consider my own experience. Academic projects tend to be simple. They tend to be less than a couple of thousand LOC (I’m probably overestimating) and you tend to build the architecture yourself. Not only that, the project is tied to whatever you’re learning so you don’t have to educate yourself on the ideas behind the design/implementation.
Now imagine you have to work on a 1M LOC project. It’s been written over a period of years using and architecture that’s not well documented and that someone else has designed. There’s a maze of files, directories and build scripts. It uses concepts that you may not be familiar with. This is the reality of most code out there. The truth is, if you want to contribute you must be willing to put in an amazing amount of time to understand the architecture, its strengths and its limitations. You’ll probably do this through a combination of small fixes and general interest. After that’s done you can start doing more intensive work/redesign. But even then, unless you’re Software Superman (and I’m sure there are quite a few) you won’t be able to tackle massive changes.
I think I forget just how long it _can_ take for projects to reach maturity. It took over a decade of concentrated effort by a large number of contributers for the kernel to reach the state its in today. Both GNOME and KDE have seen years of effort put in by contributers. X has probably seen its fair share of time spent. In this day and age where Slashdot brings us to the minute news of the latest and greatest software projects, the latest alternative to X and so on…its easy for us to forget that behind the latest release was hours of effort learning, understanding and lots of failures.
It’s something I’m going to have to come to terms with.