Some people might say that as a programmer loving open source I am embracing the end of my career. I've never met anyone who has an informed opinion about it, but I assume that there are people saying Open Source is about doing work without getting payed. I imagine critics look at Open Source developers as if they're out of their minds to be creating things that corporations just steal from them.
I also think corporations should ensure they only use open source code. Woah... back up the train, if they do that then how will I get payed. Here's the magic, if they use open source code they'll pay me to make it better (or at least better for them). And what's more since it's Open Source, I'm making it better for everybody.
So a question comes to mind. How is that better than the current state of software design? To answer that you must understand what the current state is. Currently a software engineer (or a team of them) is hired either by an independent software company or by a company that does something else (like making tires). There are two distinct patterns that are followed depending mostly on the size of the programming department.
If an programmer works for a large programming department typically he spends a significant ramp up period learning the coding practices, which is way "this company makes code". This set of coding practices is entirely different from any practices he's used before (if he's worked for another company his skills at that companies coding practice are useless). The problem is these practices grew organically with generations of programmers before him making their stamp in trying to enforce rigidity and fault tolerance into the chaotic programming world. No company does it the same, and thus the code and the practices are one off products.
If an programmer works for a small programming department typically they just ask him to "make some programming happen". The engineer works his best (or sometimes his laziest) to set up a framework and build what the boss wants. Normally the code is buggy and barely conforms to what is necessary because the programmer created it himself with very little input. Then he continues to grow his team while creating a list of coding practices so that he can get others to work on the same system he's working on without messing it up too badly.
It's a pretty dystopian world where no programs will ever work together and every company is reinventing the wheel (poorly).
With Open Source you get thousands of eyes looking at code, looking for faults and fixing them. With Open Source you get hundreds of new programs that evolve and grow into something everybody can use. With Open Source you can pay a fraction of the price (just the price to pay some programmers to tweak the program to your specifications). Or pay whole teams of engineers to develop brand new exciting programs.
Now a company might question why they have to be the ones to "pay money" to Open Source. The other companies aren't paying, so why should they. They can just continue making their proprietary code and steal Open Source stuff when it does what they want it to.
First, if you do that open source will die. Eventually these programmers and hackers will not have the fortitude to keep making programs for ungrateful businesses. They may even make a new copyright so that no company with proprietary code can use their source, if they got angry enough.
Second, you limit the amount of open source you can use. Because you wouldn't want to "waste time" working on open source code that other people would get to use for free. So when you could have just tweaked Trac you end up rewriting the whole thing. Only more buggy.
Right now companies are taking the fruit that fall from the open source tree because it's free. Some companies are tending the tree, because they understand the advantage in the long run. Others are still buying programmers and forcing them to create the same fruit that could be had from Open Source, and those programmers, though they try their hardest will be no match for what Open Source brings to the table. You try being one programmer against hundreds, see how it feels. To have to find all the bugs on your own, to code without having other people to watch and help.
I can't wait until all code is Open Source and companies hire me to make programming advances in the direction they want to go. Think of the conversation like this:
"I'm glad you could come in, tell me what code bases have you worked in."
"Well I've been working inside Mozilla (I did a change for Ford that allowed them to open up 3D models). I've done some work on E-Term at home because I wanted to embed it in my desktop. I've made some changes to compiz-beryl to allow ATT to flip between 3D renderings of network maps in real time."
"That's great. I can't tell you much at this stage but we'll need your 3D expertise on some modifications to Gnome."
You stand there happy as a clam knowing that while you are working for one company you're providing a service to humanity as a whole by making their programs stronger and more capable with no strings attached.
Wednesday, March 12, 2008
Subscribe to:
Posts (Atom)