Opportunistic (very recommended to follow this link) programmers, as we are, here at Ubuntu, the Kubuntu developer branch recently came to wonder about the miracle of opportunity.
Now first of I want to make clear that programming based on opportunity is not the same as programming based on freedom.
For that you should first read the free dictionary entry on opportunity and try to understand it. So let me give two examples, one for programming based on freedom and one for programming based on opportunity.
You do not like that GNOME is using a closed source toolkit, so you create another desktop environment based on a free toolkit.
This is programming based on freedom. You have the freedom to find it bad that a closed source toolkit is used, and you have the freedom to create a new desktop environment. Just like you have the freedom to use Windows and not give a mushroom about whether the software you are using is free software or not.
Users are getting more and more unsatisfied with the software in Debian stable, so you fork it and advertise a new distribution with more recent software versions.
Here we have the opportunity to get a vast user base with minimum effort. Of course you also have the freedom to do this, no doubt, everything includes freedom at some level, but you do not have the freedom to get a ready to go system with minimum effort, you get the opportunity to.
This was rather theoretical, so let me give you some real life examples, from a recent IRC conversation:
<apachelogger> game of the day
<apachelogger> go to planet.ubuntu.com
<apachelogger> and search for "opportuni"
<apachelogger> I get 28 hits
<apachelogger> must be new record
<apachelogger> KOpportunistic, doesn't look that bad, maybe we should rename
<Quintasan> OpportunistiK
<Quintasan> I fixed it for you :)
<nixternal> apachelogger: hahahaha, someone else did the same thing you did the other day...I think you won with 28 though
You see, I had the opportunity to propose this (btw, rather awesome game) because there is a lot of coverage on the word opportuni[stic,ty], and Quintasan had the opportunity to fix my distro name, because it was broken. nixternal had the opportunity to respond to me because I had made that statement, if I hadn't said anything he would have had the freedom to start a conversation with me that might have lead to that statement. From this we can learn that any type of conversation is filled with opportunities, so if you are entering a command on a shell you are indeed doing opportunistic programming! The shell, or the executed command, gives you a reply, and you again have the opportunity to enter some more, or exit.
<ScottK> I do opportunistic programming all the time, but it's not going to get entered into any contests because it's for $WORK.
This is an interesting rule. Contested opportunistic programming must not be $WORK!
-*- Quintasan might not understand
<Quintasan> what it exacly means?
Quintasan: The idea is that opportunistic programmers ares doing normal application development like most people think of it. It's small, one off, scripts or small apps to solve local needs.
Having such things be FOSS is almost irrelevant because it really is a local need.
And in this part I want to be serious. This is indeed a very true statement. See. If you are creating a shell script that sets your MAC address to different one, whenever you exceed your traffic limit on some by-MAC-restricted-internet-service, then that is opportunistic programming. However, that local need might indeed be growing beyond that scope and you create a generic MAC changer script that works on all Linux based systems, in which case, I for one, would not call it opportunistic anymore.
Now for some random wisdom:
<apachelogger> ScottK: it is all about opportunity of not understanding it! [trying to explain why it easy to not know what opportunistic programming means]
<apachelogger> you see, you have the opportunity to understand it
<apachelogger> but that implies you also have the opportunity to not understand it
<apachelogger> that is worht a blog post!
<apachelogger> And apparently it was worth a typo too. Oh my!
<ScottK> apachelogger: If it's worth doing, it's worth doing wrong.
And finally I had the opportunity to write a serious blog post, but then again I do not particularly care about python and neither do I care about the fact that apparently opportunistic programming == python programming.
But please, pretty please, join me and break my "opportuni"-search-on-planet.ubuntu.com-highscore, you could for example post your score on identi.ca and tag it with #opportunistic ;)
(all links are sponsored by Microsoft Bing search ... allegedly)