The first thing you learn when taking a course in software design is this:
You’re never done developing a computer program
This is a huge contrast with business-models in which we’ll produce hammers: we’ll need a metal bar and a wooden stick; and once you finished designing the production process, on which you will probably want to take a patent because you want to benefit from your great invention, you will have perfect products which do not ask for modification. In this model patents stimulate the quest for better solutions.
The Ones We Don’t Mention (from now on: TOWDM) copy this model to this digital environment, but instead of stimulating improvement they are slowing it down to minimum speed. Patent trolls appear: companies who’s only goal is to register new patents and to sue anyone who’s infringing them.
It becomes a major problem when those companies’ only interest is to sell more copies of their product. They will try to create monopolies through closing down standards, implementing their own closed protocols, closing their source code, patenting their frameworks, … This only leads to bogus software which will require the end-user to pay another sum of money to fix a small problem.
What if the head of our hammer fell off? Right! We’ll glue it on! What if there’s an error in closed proprietary software? You’re not allowed to fix it and should wait for an update which can take for ever, or you’d better buy a newer version.
My father is a famous (at least, that’s what he claims) linguist which has done, and is still doing, very interesting research on computer assisted language learning (CALL). Our Saturday morning chats mostly consist of discussions on how to make even better software designs and coffee. One of his first projects was a program on which people could study French verbs: verbapuces. This program, released 20 years ago, was a big hit, and it was the best software for studying verbs ever. I’m 20 years old, and when I was 12 I studied my verbs using verbapuces. Verbapuces was written in pascal, and it was written so it could fit on one of those large wobbly floppy discs (sure you remember those, but you probably don’t remember them containing 3000 different verb conjugations). I’m not exaggerating: A quick google query returned this forum in which this topic asks in 2009 how to copy verbapuces diskettes from 1995 onto a usb-stick to use the software on the train. This probably won’t work, since the program is written for MS DOS, not longer supported by MS.
What has become of verbapuces? The source has never been released (even I never had a glance at it) and this timeless piece of software (equally timeless as emacs/linuxkernel) is gone. No-one will ever be able to use the software he was using in his youth. Do you call this technological innovation?
I’m afraid the same destiny awaits any .NET application you write. The patented .NET framework is constantly changing to be able to bring new products which could sell more copies of the latest version of visual studios. It is not portable to any other upcoming operating systems you would want to develop for.
There have been attempts to port the .NET framework to other operating systems by implementing the .NET specification: eg mono by novell which is ‘protected’ by microsoft’s community promise. Although microsoft seems to do a great deal for the communities driven software world here it is not a big gift at all. Why would we trust a devil’s promise? They have sued tomtom for implementing FAT in the linux kernel in the end. And… If you read the ‘promise’ a little deeper you’ll notice only the basic packages are protected, but the more advanced packages someone might need are left ‘sueable’.
I do not want to sound disrespectful towards my parents. I look up to my father and when he talks about software design I try to be attentive as possible. He’s the best at finding incredible effective solutions for questions that sound incredibly simple. He taught me programming is much more than typing code into a computer. On the contrary, programming in the open source way is only 10% coding, and 90% thinking without implementing it on modern/old technologies.
Although I’m your son and I’m programmed to disagree with you, you’re right: a software design should be made without thinking about technology at first, but please, don’t make your software depend on patented software. 1% of that 10% consists of choosing which technology you’re going to use and which developing model you’re going to apply. This choice cannot be overrated and it makes the difference between a timeless product and a product that will survive for 2 years.
-Pieter — follow me on identi.ca