I believe in Open Source for technical reasons, but I also believe in
Free Software for ethical ones. I make a point not to choose one of
these philosophies over the other, but instead to emphasise how great
it is that the same rules - epitomized by the DFSG or OSD - are worth following for two entirely different reasons.
Anyway, while I don't always live up to the goal of never using
non-free software, when programming for personal reasons I have at
least aimed for the goal that there should be a not-so-distant prospect
that what I write can run on an entirely Free system.
Thus when I wrote nrdo, its initial versions may have depended on Java
and Oracle, but I was entirely confident that Classpath and company
would eventually be able to run it, and that a Postgres backend could
be developed (both of these happened). When I ported it to C# it was
(quite apart from being necessary for my job) under the assumption that
it would run under mono in the near future (it does, as far as I know,
although it's been a long time since I tested it and mono has changed a
When I wrote NRobot, running under mono was a primary goal, although I test it less often than I would like.
Even cmScribe, which is proprietary software that I'm paid to work on,
I fully expect to be ported to mono and Postgres eventually (if only
because it will make our company's story about hosting cheaper - no SQL
Server license required!).
But I've succumbed to temptation and written something that has no
prospect of running on a free system anytime soon. Apparently Microsoft
has said that it does not believe it's possible for the mono project to
clone its new Avalon GUI toolkit and Indigo messaging system without
licensing some "Intellectual Property" from them, and apparently (at
least in the case of Indigo) the mono people have accepted this and are
not currently planning Avalon or Indigo clones.
Which is a shame, because it means that I've violated my principle of
only doing stuff which will ultimately be runnable on Free systems, and
means that mono users won't be able to see this: