Open Source Licensing Choices

InfoWorld has an interesting story on GPL’s decline (might be a strong word) in favor of some more permissive licenses, notably Apache, MIT, and BSD. I think this part hits the main deciding factor:

Originally associated with variants of Unix, these “permissive” licenses took their names from the universities at Berkeley and Massachusetts: the BSD and MIT licenses. These licenses allow you to do almost anything with the associated software, including making it closed, proprietary software to which the four freedoms no longer apply. This is also a source of controversy, as some people consider it wrong to take open source software and prevent others in the future from using, studying, modifying, and distributing it.

Many corporations out of licensing concerns forbid GPL, rational or not. In my experience if you want to keep your project open to as many enterprise and corporate uses as possible, BSD, MIT or Apache is your best bet. I don’t think many these days still forbid all open source. Some still forbid GPL. They will use GPL licensed software, just not the code.

Deciding what license you pick is an important part of any software project.

Introducing “It’s All Good”

Several months ago I was looking for a good way to monitor not just my server, but the actual services on the server. Just responding to a ping doesn’t mean everything is OK. As the old saying goes “if you can’t find it, build it”. The result of this is a little project called It’s All Good.

At its core it’s a light framework for checking various aspects of a server and deciding if things are operating within defined parameters or not. So far it has “out of the box” support for:

  • CPU Load – As simple as it sounds. Check that your CPU load doesn’t exceed a threshold you define.
  • Disk Usage – Sets off an alarm when your server is running low on disk space.
  • SMTP Ping – This makes a connection to your SMTP server to check that it’s online and operational.
  • MySQL Check – Checks to see if it can make a successful connection to a MySQL server.
  • HTTP(s) Check – This can connect to a HTTP or HTTPS server and check that it connected successfully as well as check that for a condition on the page. This is handy to make sure a web app is up and running or that your SSL cert isn’t expired.

Like I said, it’s just a framework, so adding other checks are relatively easy. There’s lots more I want to include (memory, disk IO, process monitor for example). It’s designed to monitor the host, not a series of servers (though technically doable). This isn’t Nagios, it’s a way to get a quick glance at your key services on a host.

On its own it doesn’t send any notifications. It’s designed to be combined with the keyword monitoring feature of services like Pingdom, Monitis, Host-Tracker, SiteUptime, or Howsthe.com among others. This way you not only check services, but the server itself. If anything fails, you will be notified by your monitoring provider.

It’s All Good also has a UI for an admin to view which can give you the status and a basic rundown of its polling data. It’s also designed to so that it’s pretty easy to read on mobile devices like the iPhone, making it a great dashboard for on the go.

Lastly it’s designed to be pretty light and quick, so unless you are monitoring a ton of things on your server, it shouldn’t have any real overhead.

So far I’ve only implemented real support for the checks for Linux. I suspect most will work on BSD, and Darwin (though not all). Windows still needs some help. Patches are welcome. I’d also like to support things like IP whitelist/blacklists (automated via RSS fetches), and lots of modules to extend what it can keep track of.

Licensed GPL v2.

Apple Kills ZFS Support

I mentioned over a year ago that Apple was porting Sun’s ZFS file system to Mac OS X. While it was available as read-only on Leopard it seems to have been completely pulled from Snow Leopard. For something that was suspected to be the future of disk storage for Mac OS X, that seemed odd. Now Apple has officially discontinued the project.

I had heard about the ongoing NetApp vs. Sun patent war where NetApp feels that ZFS is too close to WAFL. It seems likely that Apple doesn’t want to get involved in that. Apple even has a fear of that potential with OGG Theora. Once the transition was made to ZFS it would be a costly and time-consuming effort to swap with something else since Mac OS has never been very file system neutral.

A new theory is that the Oracle/Sun deal leaves the company developing two filesystems: ZFS and Btfs. It sounds like Oracle’s Btfs is the more likely future. If Apple switched to ZFS they would have been left as the only platform using it. Linux can’t fully switch since the CDDL license isn’t fully compatible with GPL meaning it would need to be implemented through FUSE. Btfs is coming along for Linux.

Reading through Btfs, it seems like a lot of the big advantages of ZFS are already in Btfs though it lacks full disk encryption. It does however add online resizing. It’s also GPL and has support from RedHat, Novell, IBM and was accepted into the Linux mainline kernel as of 2.6.29rc1. That means it already has a much more robust community and seems likely to be widely accepted in UNIX land.

So will Apple switch to Btfs for Mac OS X 10.7 or 10.8? I think the two possibilities are that it will either build something in-house, or switch to Btfs. I think Btfs offers a compelling set of features and would allow Apple to brag about more compatibility with other OS’s and potentially adopt features as the file system matures at a low-cost. It’s possible we’ll hear something as soon as WWDC 2010.

Edit [10/25/2009 @ 6:30 PM EST]: Confirmed via Daring Fireball

Microsoft’s Open Source Decoy

So Microsoft will open up with information on many protocols/formats, and provide a “covenant” not to sue open source developers. Note the exception. Microsoft reserves the right to sue companies who commercially distribute such implementations. They need to get a license. As Microsoft put it in their principles:

Open Source Compatibility. Microsoft will covenant not to sue open source developers for development and non-commercial distribution of implementations of these Open Protocols.

As far as everyones reaction to this, Arstechnica wins with the best quote:

“Instead of offering a patent license for its protocol information on the basis of licensing arrangements it knows are incompatible with the GPL—the world’s most widely used open source software license.”

It may settle some curiosity in regards to how close certain reverse engineered implementations are to the actual protocol, but beyond that I don’t think it will make any difference. I think this caveat would limit most projects ability to utilize the information. I don’t think any major project is willing to utilize code subject to that limitation.

For example I mentioned just the other day that Exchange compatibility would bring about the most corporate adoption to Mozilla Thunderbird. Well this could potentially help make that a reality, except Mozilla’s commercial arm would be subject to trouble come release time. Not to mention any downstream commercial distribution that includes it (including many Linux distributions) unless they include a version without this code.

It may however be possible for a company to sell a product and offer a GPL licensed open source “plugin” or “addon” that adds the functionality. So for example Thunderbird would ship as usual via Mozilla Messaging and various Linux distributions. If you wanted exchange compatibility you would need to go to mozilla.org and download the addon for it. Similar to the current process for the provider for Google Calendar. However this adds a nasty extra step for users. It’s far from ideal.

The other notable thing in my mind is this part of their principles:

Industry Standard Formats. Microsoft supports many data formats promulgated by standards bodies in its products today. We will apply Principle II with respect to any standards-based data formats in our high-volume products. We will incorporate customer advice from our Interoperability Executive Customer Council and our ongoing community and customer engagement efforts to give us guidance to prioritize which standards we support in any given product release.

We want OpenDocument.

So despite all the media attention, I don’t think open source gained much today. There’s potential (OpenDocument getting priority would be nice), but really no big win. I just don’t see projects giving up GPL, and I’m pretty sure this agreement would violate GPL.