Free and Open Source

You are currently browsing the archive for the Free and Open Source category.

I’ve been working on addresses and locations in Drupal for the last few days.

Addresses, it turns out, are not as simple as you would think. The OASIS document specifying name and address structures in XML stretches to 67 pages. And the bulk of that is worth reading. (If addresses do it for you.) I won’t give a direct link to the document – it’s part of a zip file containing lots of other stuff. Search on xAL (extensible Address Language), xNL (extensible Name Language), xNAL (guess), xPIL (extensible Party Info(?) Language).

There are lots of resources, but for me, this superb address resource stands out. Thank you Frank.

A while ago I wrote down some of the thoughts Simon Phipp’s had on models of Open Source and Free licences. Now Simon (with help) has put down the thoughts in a white paper which says it  better and much more thoroughly.

The Free Software Foundation launches the first draft of the GPL version 3 today at MIT. It’s an interesting time for Open Source Licences.

A few months ago we held Our Social World. One of the participants and a speaker was Simon Phipps of Sun. Simon is the Chief Open Source Officer. He spends a lot of time on Open Source and has been responsible for a number of initiatives in Sun, from reducing the number of Open Source licenses that they use, to setting up an Ombudsman to help the Open Source community interact with Sun. Simon has thought a lot about Open Source.

Simon and I had a discussion about Open Source. Simon sketched a model on a peice of paper about how he thinks of the open source environment.

This diagram has several notions embedded in it:

Open Source Landscape

I think Simon calls this the FOSS Virtuous Cycle, and if I understood correctly, it’s the model upon which Sun’s Open Source strategy is predicated.

Let’s look at it in a bit of detail:

The model is built upon 3 pillars and breaks down into 3 interaction areas. (I’m not certain that the term ‘pillar’ was the one that Simon used.) The pillars are:

  • The Commons of software that can be used – a body of software;
  • The Developer – or developers -  the people who build software;
  • The Works – the software that they build using the Commons.

The Developer takes software from the Commons and uses this to build the Works. The Works or part of the Works are returned to the Commons for others to use.

This cycle is governed by forces in each area:

  • Developers may use software from the Commons according to the terms of the Licence. Free and Open Source allow you to use software from a wide Commons;
  • They produce the Works according to some Business Model. It may be that their work is supported by hardware sales, that they are enthusiasts working for free, or some other model;
  • Governance controls the return of the Works or parts of the Works to the Commons.

This is a general model for software licensing. It works for commercial software too, whether collaborating or not collaborating (though if the whole cycle is inside a single company, it’s much less interesting). It allows organisations to collaborate on one level and compete in others; for instance, many companies can build products using the same Commons, and can compete at product level. Depending on the governance that applies, the products may gain features from the others over time.

Simon considers the Governance to be a key differentiating factor between licenses. In discussion he broke this into three sorts:

  • The CYA style licence – BSD and Apache, for example. These licences don’t insist that software built using the Commons is returned to the Commons, although there’s a powerful force pushing developers to return their improvements to the Commons if they want their software to be supported
  • File-based community licences – for instance the Mozilla Public Licence (MPL) or Sun’s Common Development and Distribution License (CDDL). These licences insist that any improvements of existing software in the Commons should be returned to the Commons. New software need not be returned to the Commons; and,
  • Project-based licences – for instance the GPL. These licences insist that any work which incorporates software from the Commons must be licensed under the same terms.

I think that this model has a lot to commend it. More about this in the next post…

Update: Here’s the GPL V3 draft 1.

A long time ago, I got the chance to go to the Grand Canyon. It’s pretty amazing, I don’t really have the words to describe it adequately. It’s just amazing…at points it’s 10 miles from edge to edge, with a near vertical drop-off to the bottom. It’s huge. But at some places you can look across to the horizon and see flat land stretching outwards, then when you take a few more steps and see that there is an enormous chasm between you and the edge of the world.

Software seems like that to me at the moment.

We’ve discovered the power of the Internet, and being connected. We’ve discovered that we can devise new applications for groups of people, that we can aggregate information for something larger than the individual bits. We’ve found out that being able to access information from anywhere is hugely useful.

But our desktops and the Internet are two completely separate software worlds.

If we build a web-based system then it’s accessed through a browser and can’t interact with our desktop.

If we build a traditional bit of software then it has to be installed to be used, and it will be subject to platform quirks and problems with particular configurations.

There’s a chasm between the two worlds.

AJAX and Web 2.0 is better, but at the root it’s an attempt to make the browser behave like the desktop. And it’s subject to it’s own problems. Nevertheless, I think that this is a step towards the solution.

Here’s what I want:

  • I want to be able to make applications that are client-server in nature;
  • They should expose a web interface for when I’m not at my PC;
  • They should have a federated data-store behind them; that is, there is some data I don’t want to expose to the Internet but the data that is exposed to the net should be part of a bigger whole, rather than a copy. Alternatively if the data exposed to the net is a copy, then syncronisation should be 99.9% automatic;
  • I want to be able to run any application without being connected to the Internet, maybe with reduced functionality;
  • I want my applications to enjoy all the benefits of normal desktop interaction; the granularity of actions should be small; I don’t want to think of the world in pages, and I do want to be able to drag and drop;
  • I want to be able to try applications without an install. I’m willing to install if I decide that something is useful.
  • I want security; I don’t want my PC open to crackers.

Mostly, this vision is already achievable. (Microsoft is calling this sort of app a smart client.) But it takes hard work because you have to build the infrastructure by hand. In fact, most of the infrastructure is re-usable and should be abstracted into a tool and framework.

Now there are two or more environments that are partly suitable:

  • Java. Can run on the desktop. Can run on the server. Can run on multiple platforms. Can deliver responsive apps – witness Eclipse. But there’s no easy way to build dual-headed apps that I know of. Do you know of a way? There’s the ability to run from the web with Webstart.
  • .Net. Can run on many versions of Windows. Runs on client. Runs on server. Has good integration. Can build dual-headed apps. But it’s not great for delivering software if you don’t want the source to be readable. Granted you can get an obfuscator, but a industrial-strength obfuscator should be part of the basic package. A big downside: you need the giant 20MB runtimes to be on the client machine. There is no linker available as part of the MS package which would reduce the size of most apps and allow you to ship a single file, but you can buy one from Remotesoft. And lastly, .Net isn’t big on platforms other than Windows.

I’m sure that there are other ways of doing this too; for instance, if you install the PHP and GtK runtime on the client then you could use PHP locally and remotely. But other solutions are less integrated.

Overall, I don’t think that either of these solutions are great. It seems like it’s going to be write-n-times for a while.

Jonathan Swartz has a very interesting blog entry about moving Solaris to free software, and how this has paid off. Sun have gained 3.4 million licensees as a result. Most of them come from HP. It’s a hugely impressive achievement.

However, his post has raised a lot of questions in my mind. They are all directed at understanding whether the experience that Sun has had would be transferrable to other software projects; I’m very interested in whether free and open source can be the basis of a sustainable business model for ‘pure’ software developers. It’s clear that it is possible in some software categories – witness Red Hat and MySQL – but can the lessons be applied in a broader context?

So here we go… 

HP customers are probably switching to Solaris because of the travails that HP has been undergoing. So excluding HP customers, how many have switched? How many of them are completely new to Solaris? This would be a good indicator of the level of interest. It would also be interesting to know about the rate of adoption over time. You’d expect an early blip in the graph, but the ongoing adoptions are much more important as a measure of whether the open sourcing is sustainable.

I also wonder if there are any stats on persistence because that’s even more interesting. I know I’ve tried a lot of operating systems in my time. I’ll download them, install and work with them for a few weeks. See how I like them, and whether they are better or worse than what I’ve tried before. I’m no longer an OS/2 user, despite having spent a couple of years as a developer and integrator. Nor do I use Slackware. Red Hat. And more. I expect that all these companies consider me to be a licensee. The real measure of licensees is persistence of use. So what measures are there on persistence?

Software is a complimentary product for Sun. They sell hardware. If they can increase the sales of hardware through free software, that’s a benefit and a way to justify the expenditure on the software. I’d be interested to know something about the conversion rate to Sun hardware of licensees. If the conversion rates were low, I’d be more impressed; it would mean that despite the apparently low complimentarity, Sun are convinced that it’s beneficial move.

Jonathan is clear that companies are willing to pay money for free software and that it’s the support attached that makes the difference. So I’m interested in knowing whether the income from licensees is greater than the cost to Sun of support plus development. If it is, then it’s clear that OpenSolaris is self-sustaining and will continue to grow. If it’s not, then Solaris under this business model is a bad bet for your future as a user. Of course software development is a length-of-string problem; you can always spend more money. So what’s the level of expenditure on Solaris development? This should give an indication of the amount of development on Solaris. An alternative way to answer this would be to understand the level of community involvement in improving Solaris. A measure of the number of commits would be a good indicator of the amount of development that Solaris is experiencing if it’s compared to other similar projects.

Of course, all these measures are early-indicators. We need a few years to see whether it’s working or not, and to know if any good figures were transitory first-wave adoption. Nonetheless, I think that the facts that Jonathan gave are hugely encouraging and seem to show that Sun is on the right course. I hope that in the future we’ll have some insight into these other factors; it would give an even better picture.