2009-12-29
Solaris is not open source
This is not exactly news to anyone, but I feel like writing it down anyways: Solaris is not open source, and this matters in practice.
You might well ask, 'but what about OpenSolaris?'
As a sysadmin, the two open source freedoms that I really care about are the freedom to inspect the actual code you are running and the freedom to fix the actual code that you are running. OpenSolaris does not deliver either of those freedoms, as the OpenSolaris codebase is not the same as the Solaris codebase (and I'm not sure if the two were ever the same). In fact, you may well not even be able to replace Solaris things with bits from OpenSolaris without a lot of work.
(That was our experience when we ran into mountd issues; we tried building the OpenSolaris mountd code on some version of Solaris 10, only to find that there were significantly different library APIs. Possibly going backwards in time to earlier OpenSolaris mountd versions would have worked, but then who knows what bug fixes we'd be missing.)
The truth is that while OpenSolaris is interesting and periodically useful, and it's nice to see Sun release the code that way for inspection and potential use outside (Open)Solaris, it's not the same thing as having a real open source Solaris. And Solaris is not open source, not in anywhere near the same way that something like Ubuntu, Red Hat, or FreeBSD is, and this difference does matter to me.
(It may well not matter to developers. Developers likely care much more about the technology and the ideal code than they necessarily care about what exact code customers are running; for most reuse purposes, OpenSolaris is perfectly good. It does mean that there is no way for outside developers to contribute directly to Solaris, but I suspect that Sun considers that a feature.)
2009-12-02
The problem with the OpenSolaris source repository
It's nice that Sun has provided the OpenSolaris source in the form of a VCS repository, but in many ways it's not terribly useful. The problem with it is that the OpenSolaris repo is not a working repository.
By that I mean that it is not what the Sun developers actually work in; instead it is essentially a series of code snapshots converted to a repository. It's nice that we get a sequence of snapshots in a convenient form, and it's nice that it happens relatively often, but it means that examining the repository history is often mostly pointless; the history in no way represents what actually happened during development, and it's common that multiple changes were merged together into one commit.
It would be reasonably okay to pretend that OpenSolaris has only a single line of development, without branches and merges; there is something to be said for keeping your public history simple and thus forcing developers to rebase often and submit clean final changes (generally no one cares about how your change evolved over time, they just care about the final form). But there's no excuse for merging changes together in commits; it just makes it hard for outside people to look at specific fixes, either for commentary or for cherry-picking, and it complicates attempts to bisect for failures, which is a valuable feature if you want outside testing.
(There is also an appearance issue. When the repository you expose to outside people is clearly not your working repository, you are openly advertising that there are first class and second class citizens and the first class citizens get better tools.)
Sidebar: an example of a multi-change commit
In case you're in doubt about those multi-change commit, here's a random example. This is commit acbd69cd0179 (aka commit 11207):
6663229 cw enters infinite loop if fork failed
6663216 cw(1) incorrectly refers to SOS10
6414843 SUNWonbld shouldn't install sgml man pages
6414845 groff reports warnings in SUNWonbld man pages
(Some but not all multi-change commits seem to at least be for the same program or library or area of the kernel. This is not one of those, except vaguely.)