In something of a marked departure from the previous post about making hideous little girls out of plasticine, I thought perhaps we might explore something I don’t write about an awful lot within the annuls of this personal blog - software development.
I work as a professional software and web developer. I learned to program computers before the world wide web existed, and still remember the walled gardens that fought a losing battle against it in the early days. I remember Microsoft “not getting” the internet at all (in many ways they still do not) - not many people recall that Windows 95 shipped without a browser. It didn’t even install a TCP/IP stack by default (the low level plumbing that lets your computer talk to other computers across the internet).
During the years immediately prior to Windows 95, there were other options. I remember never being able to justify buying a copy of IBM OS/2, and feeling that I was missing out - the widely held view at the time was that it was better than Windows. Of course the public only learned years later of the internal falling out between Microsoft and IBM; that OS/2 really did start out in life as the next generation of Windows, and that history might have been very different indeed if Windows 3 hadn’t sold by the bucket load.
What to do? Around this same time Linux had appeared, and was growing in popularity. It was technical, complicated, and support was almost non existent. It had one huge saving grace to students everywhere - it was free. I remember buying an early distribution of SuSE Linux in about 1994. I remember being stunned when the “fvwm2” window manager appeared for the first time. I remember the awe, and the sinking feeling that I would never understand half of this new operating system.
Professional and family life dictated a certain amount of pragmatism over the next decade. I got on with life, and Windows continued to rule home and business desktops. Something else was going on though. Linux was embraced by the exploding world wide web, and was quietly taking market share from the leviathan servers that had once served information across the globe. In a classic case of the right things crossing each other’s paths at the right time, Linux, GNU, Apache, MySQL, PHP, Perl, Tomcat, Java and a few other technologies combined.
What’s the result ?
Microsoft will never rule the computers that feed information on the internet. It has nothing to do with cost either - it has everything to do with freedom. The freedom to share knowledge, expertise, and source code between projects. The freedom to make things better, to explore, to tinker, to investigate. The freedom to improve, to embrace, to extend, and to share.
Among my professional peers I am one of the very few who has worked on open source projects outside of my professional job. I have witnessed first hand the difference in quality that sharing, and peer review can bring. While it’s true that a lot of free software is garbage (who really ever needed a pair of eyes to follow your mouse pointer around the desktop?), the more important projects engender a healthy spirit of competition within the development community - to not be seen in a bad light by your peers; to create something well built, well documented, well tested.
Professional developers in the commercial world will argue that they are just that - professional. They will conveniently ignore that they write code to a design dictated by somebody else (which they will privately criticise), being charged the least amount possible for, for delivery at the shortest possible deadline. Documentation and testing are often a luxury that customers will choose not to invest in. “Professional” indeed…
The alternative is the open source world. A world with no project budgets, no dictated design, and no deadline. Successful projects will capture the imagination of the community, who will invest enormous amounts of time, effort, experience and expertise to help create something that they usually need. Commercial organisations that “get” open source software - and benefit from it - often donate funds, or invest their own developers time. Projects are allowed to become as good as they can be, rather than as good as a deadline or budget allows.
It might sound odd for somebody with my background - a career working as a developer on commercial projects with tightly bound intellectual property rights - to hold the free/open source software movement in such evangelistic terms. I have no answer to that. I will perhaps smile, and point out that all developers working on commercial projects take advantage of open information - the fruits of developers, testers, designers, bloggers, and any number of other innumerable people who have chosen to share everything they have learned. A quiet childish voice in my head tells me that those who will not share should not be allowed to benefit from the work of those that do.
What am I saying here?
Commercial developers want to have their cake, and eat it. I’m not so sure I like it, but I have no real option but to follow the grave train. Little mouths to feed. Bills to pay. At least I can be content in knowing that I do share what I can, and I am fully aware of the dichotomy I face.