Echte programmeurs kiezen voor Open Source
Vandaag was familie/kennis van de vriendin van mijn vader op bezoek. Ook iemand met een eigen bedrijf, een zeer succesvol eigen bedrijf zelfs. Toch kon ik me er niet toe brengen om daadwerkelijk mijn marketingpraatje te gaan zitten houden. Uiteraard omdat zoiets in mijn ogen niet hoort wanneer iemand op visite is, maar ook omdat ik te druk bezig was met andere dingen. Die paar seconden dat Hanneke probeerde om een dialoog te starten tussen mij en Ton, heb ik al heel snel afgekapt.
“En Tim, als je Ton ompraat, heb je weer een interessant netwerk, want hij kent heel veel mensen.”
“O, maar ik zit niet in het vak om mensen om te praten. Als hij tevreden is met wat hij heeft, moet hij dat uiteraard gewoon blijven gebruiken,” zei ik, meer als excuus om het gesprek te ontwijken omdat ik echt weer naar mijn werkkamer toe wilde.
Ton gebruikt al jaren Microsoft en is er zeer tevreden mee. En hij was zelf ook een tijdje een programmeur geweest en vond dat goed te doen onder Windows. Waarop ik zuchtte, hem volledig gelijk gaf en de kamer ben uitgegaan. Dergelijke gesprekken hebben gewoon geen zin.
De vraag of je Closed Source (Microsoft, Apple, HP-UX, AT&T Unix, whatever) of Open Source (Linux, FreeBSD, NetBSD, Plan9, Hurd, whatever) moet gebruiken, is een zinloze discussie bij iemand die al jaren verknocht is aan datgene wat hij heeft. Zo’n discussie ontaart namelijk altijd in een gegooi met modder naar weerszijden en het evangeliseren van de eigen keuze. Zowel voor de Open Source fanaat (zoals ik) als de Closed Source fanaat (zoals Ton). Gegronde redenen komen maar zelden bovendrijven, simpelweg omdat het onderwerp voor een IT’er nu eenmaal dicht bij het hart zit.
Terwijl ik echter op mijn werkkamer weer bezig was, sloop een overzicht van enkele argumenten wel in mijn hoofd. Voornamelijk pro Open Source, wanneer je een programmeur bent. Nu wil ik mezelf geen hardcore programmeur noemen (ik gebruik niet eens C!), maar ik denk wel dat ik een beter inzicht heb in de mensen die ik echte programmeurs noem, in tegenstelling tot de mensen die ik hobby programmeurs noem.
Eerst even een uitleg van deze twee termen. Een echte programmeur vind ik iemand die aan een programma werkt om een probleem op te lossen. Bijvoorbeeld, mensen die FreeBSD op een Microsoft XBox laten draaien, of mensen die besturingssysteem opbouwen en verbeteren, gewoon omdat ze het kunnen. Nee, dit zijn niet de programma’s die de gemiddelde gebruiker dagelijks gebruikt, dit zijn programma’s die veel dichter op de echter hardware liggen dan bijvoorbeeld je tekstverwerker. Maar daar houdt het niet op, tekstverwerkers worden ook gemaakt door echte programmeurs, net als de browser waarmee je deze pagina bekijkt. Ik denk om echt in te zien waar ik de grens trek, is weten hoe die echte programmeurs te werk gaan. Daarover zodadelijk meer.
Ikzelf ben een hobby programmeur. Zo heel nu en dan waag ik me wel eens aan een klein beetje “echt” werk, maar meestal schuif ik dat liever door naar anderen. Als je kijkt op mijn programs pagina, zie je de projectjes die ik bedoel. Een simpel programmaatje (scriptje, eigenlijk) waarmee mijn vader makkelijk foto’s kan verkleinen in een directory. Of een ingepakte versie van een grafische tekstverwerker voor je browser. Of een hele kleine aanpassing aan een bestaand programma, zodat het STARTTLS gebruikt om een beveiligde verbinding aan te maken, in plaats van ldaps://. Met die laatste begeef ik me misschien een heel klein beetje in de richting van wat ik echt programmeren noem.
Want het aanpassen van een bestaand programma, om het te laten werken zoals jij wilt, is wat ik echt programmeren noem. Niet je eigen taken aanpassen aan de werking van het programma, maar het programma aanpassen aan je taken. Als je werkt aan een tekstverwerker en je komt een fout tegen in een programma waar je gebruik van maakt (bijvoorbeeld een besturingssysteem), niet je tekstverwerker aanpassen zodat het om die fout heen kan werken, maar de fout oplossen. Dat is echt programmeren. Niet programmeren om iets werkend te krijgen, maar programmeren om iets goed werkend te krijgen.
Iedere programmeur kan een werkend programma schrijven. Echt, geloof me, met een beetje oefening is het eigenlijk helemaal niet zo moeilijk. Dat is ook waarom we tegenwoordig zoveel problemen zien met bestaande programma’s. Denk aan de ERP systemen die een specifieke werkwijze opdringen. Of de tekstverwerker die je niet met de betekenis van je tekst bezig laat zijn, maar met de grafische weergave ervan. Of de emailclient die, omdat het zo praktisch werkt, maar gewoon alle bijlages van emails opent en opstart. Of het besturingssysteem dat zoveel mogelijkheden biedt, dat het een waar paradijs is voor mensen die je computer stuk willen maken.
Zoals ik al zei, vind ik dat er twee manieren van programmeren zijn: Echt programmeren en hobby programmeren. Echt programmeren is een samenspel van de programmeur, de werking van de computer en een hele reeks aan afspraken en protocollen die zijn vastgelegd over de werking van die computer. Dus verder kijken dan je neus lang is en eventueel problemen oplossen daar waar het probleem echt bestaat, niet je eigen programma om de problemen heen bouwen. Hobby programmeren is snel iets in elkaar zetten, iets wat werkt en waarschijnlijk om een heleboel fouten in de onderliggende laag heenwerkt. Oogkleppen op en enkel je doel in de gaten houden. Soms werkt dit laatste. Maar als je het goed wilt doen, dan werkt het niet. Echt programmeren kost meer tijd, maar het resultaat mag er dan ook zijn.
Een echte programmeur, zo’n goede, waar ik waarlijk tegenop kijkt, die vindt dat hij fatsoenlijk werk moet afleveren. En fatsoenlijk werk is in haar ogen niet iets dat enkel werkt, maar iets dat goed werkt.
Met name managers en bedrijfsleiders hebben moeite met in te zien waarom ze moeten kiezen voor iets dat goed werkt in plaats van precies hetzelfde dat gewoon werkt. Immers, in gebruik is het verschil toch niet te merken? Het werkt allebei en het doet waar het voor gemaakt is. En dan kom ik terug bij mijn tegenzin om de discussie aan te gaan met Ton, die misschien best wel heel goed weet waar hij het over heeft, maar die ik met alle geweld niet zou kunnen overtuigen om op Open Source over te stappen.
… En toen was het te laat om nog goed na te denken en dit stukje tekst is een harrewar geworden van allerlei ideeën. Misschien wel interessant om eens een goed artikel over te schrijven. Links die dan nog interessant zouden zijn:
- Het gevolg van hobby programmeren in een (relatief) ‘harmless’ omgeving
- Waarom je beter meteen echt moet programmeren in plaats van achteraf dweilen
Dat was de rant voor vandaag. Totaal onleesbaar, maar ik maak er nog wel wat van.
(notes voor mezelf: library dependencies, echt programmeren op lange termijn pas interessant, nieuwe hardware, hw specs voor win95-winxp)
The Open Source Heretic – Forbes.com
I just read an article about how McVoy, the founder of BitMover, thinks about Open Source these days. Clearly, he had some bad experiences with an Open Source developer and now he loaths everything Open. Well, maybe that’s an overstatement, but he still isn’t saying nice things about Open Source. Take for example this article on Forbes, in which he says Open Source isn’t a sustainable business model. Even though that’s just his opinion and he has a right to his opinion, I think his reasoning is kinda flawed.
For example, just below the brief explaination of how Red Hat operates, he’s quoted with:
“One problem with the services model is that it is based on the idea that you are giving customers crap–because if you give them software that works, what is the point of service?”
But, a few paragraphs beneath that, he’s quoted as:
“Open source software is like handing you a doctor’s bag and the architectural plans for a hospital and saying, ‘Hey dude, if you have a heart attack, here are all the tools you need–and it’s free,’” McVoy says. “I’d rather pay someone to take care of me.”
Now, I think this is a nice contradiction. And it takes you immediatly to the essence of Open Source business models. You don’t pay for the program, you pay for the support. Because even if you have the program, you’re still on your own on how to implement this. And making a reference to McVoy’s last quote, you still need to be a docter to make use of the tools. You still need to be a professional (or at least an experienced amateur) in Open Source to know how to deploy it best.
And that’s where the essence of Open Source business models lies, not in the fact that you can make some tool, but in the fact that you know how to deploy it best. You need someone who knows how all those different tools can neatly co-exist and even work together on a common goal. And if I need to alter a program to make it work in your specific setup, I’ll make those alterations available for everyone, because I’m not doing something special, I’m doing something another professional can do as easily. But I’m saving someone else’s time. Like they save my time by contributing back to the Open Source community. It all connects.
And that’s how an Open Source-based company, like our company, works and thrives. It’s a shame McVoy doesn’t understand this.
Bill Gates Might Switch to Linux!
After the unexpected Microsoft Linux a few years ago, Microsoft again is in the news because there are rumours about how Bill Gates might switch to Linux in a few months. It’s said that he’s tired of all the blue screens that his beta Longhorn installation is giving him and his favourite games refuse to run in a Trusted Computing environment. Since his games work great with Cedega on Linux, he’s considering a switch to the Open Source operating system.
The industry is baffled, since for years, Gates has been claiming that Linux doesn’t compare favourably to Microsoft’s own operating system, Windows. Which distribution he might use is still uncertain, although sources tell us he might consider Ubuntu and Mandriva.
The power of might is mighty indeed.
Inspired by “Slashdot | Google Might Disappear in Five Years“
SMC sucks (but alas, they’re not the only one)
Since Hanneke came to live here, she brought her own computer. And we have a wireless network here, so it would be only fair to buy her a wireless PCI card so she can join in on our network and share our Internet line. All fine and dandy. But of course, me being me, I had already installed Ubuntu Linux (the recently gone-out-of-date Warty Warthog) so I decided to make sure I got a card for Hanneke that was supported by Linux. You’d expect most cards to be supported already, in any case, but alas, reality differs here. So I checked out the Prism 54 project, to see which companies offered cards that were supported by Linux. They have a list of supported cards so I checked with my online supplier which ones were available.
On that list is the SMC2802W which was on my suppliers list too, so that’s the one I bought. You guessed it, it doesn’t work. And I could’ve known if I weren’t in such a hurry to buy the card in the first place. Because on the herefore mentioned supporterd cards-site, there’s a disclaimer just above the list of supported cards:
We have a problem. Manufacturers started buying the SoftMAC chipsets, which are not yet supported and may never be, as drop-in-replacements for the FullMAC chipsets without changing PCI IDs and apparantly sometimes not changing even the FCC ID. That said, you are better off first testing a card before buying it. If you can’t test a card and want linux support, I can recommend you just not buy a prism 802.11g based chipset for now.
And the SMC I bought is, of course, a SoftMAC chipset. So it works on Windows XP (some obscure operating system that was already installed on Hanneke’s machine, looks a bit Teletubby-ish and doesn’t even have GNU utils, as far as I could see, let alone a decent development environment (I couldn’t even find the sources of the operating system, but then again, I didn’t search all that hard), so I think it’s still in development by some company or something), but not on Linux. And reading the disclaimer, it looks like a deliberate tactic to have working devices not work anymore. And it seems SMC isn’t even the only company using these tactics.
There’s a bug report about this in the Prism54 bugzilla. I hope they can fix this, I certainly don’t have the skills to fix it myself :(
Why do companies do this? I’m really frustrated. Mostly because it isn’t the first time this happened to me. I had the same trouble when buying a Wifi PCMCIA card for my laptop to use. Then it was a Linksys that just changed chipsets from one version to another, without changing the name of the product. I know use a Cisco Aironet 350 for my laptop, at least I could be sure that one worked. I’ll probably have to buy another card for Hanneke too :(
Can’t we all just get along?
There is an interesting read on Ian Murdock’s Weblog: Can’t we all just get along? It talks about the differences between Debian and Ubuntu, the latter being a derivative of the first. Although I can understand Ian’s problem, I do not share his views.
He’s correct in some respects, for example that Ubuntu’s packages often don’t work on Debian Sarge. But the question is, do we want them to? Debian Sarge is a very stable and secure platform, one we (as a company) prefer to use in a corporate environment. In fact, 45% of our deployments are Debian Woody and another 45% are Debian Sarge. (The rest are mostly different hardware routers and Cisco stuff.) I wouldn’t want those Ubuntu packages working on Sarge! As much as I love Debian, I never thought of it as a desktop distribution. It’s ideal for servers, because it’s stable and has slow update cycles. You know, when people say they choose for Red Hat because they can upgrade often, that’s just not logical. Servers we have are deployed and work without a glitch. They don’t need to be upgraded regularly, just patched for security holes! Why in the world would we want to upgrade a firewall/router? Patch the holes and give me those updates, that’s all I want. And that’s what Debian gives me. Sarge is due to be released very soon and the next version of Debian, Sid, will probably not be released for at least two years. And that’s the way I want it to be. Server protocols don’t change all that often.
On the other hand, a desktop is a machine that needs to be upgraded often. And when I take the time to upgrade, I want it to show. Not just some new buttons, but a nicer interface, new programmes, more features, better spam-detection, et cetera, et cetera. That’s what Ubuntu gives us. Fast release cycles that matter. Each six months we get improvements. Do we want those improvements on a server? Usually not. But when we do want them, it’s easier to backport an Ubuntu package than to build one from scratch.
Just my two cents.
Java fallout: OpenOffice.org 2.0 and the FOSS community
Sometimes I just feel the need to post a “me too” about an article I read with a feeling of “that’s right, you say it, man!”. And trust me, sometimes I just feel the pain which caused a certain journalist to write the stuff. In this case, it’s about the best Open Source office-suite, OpenOffice.Org and a proprietary language that’s used for a lot of the functionality in the suite, Java.
Now, I’ve programmed in Java myself and I must say, it’s usually quite fast to make something in a working order. Not that you’re building nice code or anything, the most crappy code will usually run under Java. Which is nice for new programmers. Indeed, I think that was the reason for my University of Applied Technology to replace their C courses with Java. Java is easy to learn and works almost everywhere.
Although it’s nice to quickly build something in a language which has a lot of safeguards not there in a lower generation language like C. Think about the memory allocation and garbage collector. Nice features and especially nice because those little things allow you to quickly build working code. I don’t think I can emphasize the quick coding part enough. I’m not a C programmer, mind, but I’ve tried it a bit and it’s more difficult.
But you know, C has one great advantage: It’s Open. And Java is not. Being an Open Source Consultant, I feel myself morally challenged when I have to advise someone to use Java. I mean, Java is neat and all, but it’s not Open Source and it doesn’t look like Sun will ever release it under a proper licence. And that’s a problem. Does that make Java any less attractive? No, technically, it’s a nice piece of work (whatever the C and Perl hackers say, I think Java is neat). Did I tell you already you can build something nice really fast? I used it as Servlets and it worked perfectly. We made a lot of nice programmes with Java and it helped a lot that we could focus on the functionality we wanted and leave the tidbits to the language interpreter.
But now I’m an Open Source Consultant, and I feel I should not promote an application that uses a proprietary protocol. But then again, I also promote Samba. Where to draw the line? Well, I don’t draw lines. I advise about things I know and know well and will solve the problem of the customer. So I will promote OpenOffice.org as a very viable alternative to the world’s de-facto office suite. But I don’t have to like it.
In the meantime, I’ll keep my eyes open for office suites that are more Open. When those are ready and work like the known office suites, I’ll switch my advise.
EU rejects Microsoft’s licence offer
Slashdot just pointed me to an article on ZDNet titled “EU rejects Microsoft’s licence offer“. The article talks about the way Microsoft tries to dodge the sanctions the EU put on it because they were abusing their monopoly. This time, it seems the EU holds on to their sanctions and will really demand of Microsoft to comply. I’m wondering for how long this will be… If Microsoft can exclude Open Source development from making use of those sanctions, the whole procedure is pointless, since Open Source is the single largest competitor of Microsoft server products. I hope the EU will hold on to their principles.