Alex Hudson

Thoughts on Technology, Product, & Strategy

Month: July 2009

Compiling Bongo

Recently, we changed the build system of Bongo – we’ve moved away from autotools. This isn’t to say that autotools is necessarily that deficient, but the new CMake system we’re using is a lot more suitable for our kind of project. This has brought some immediate benefits – much simpler build system, much quicker compiles and installations (‘make install’ in particular is now much faster), and a slightly simpler source tree. We can also now build binaries out-of-source, which is a huge boon.

However, we haven’t yet really documented properly all the different build options and how it works. So here it is – your primer to the new Bongo build system.

Once you’ve checked out Bongo, you’ll see a source tree which looks something like this:

$ ls
ABOUT-NLS  cmake           COPYING  import   INSTALL  po      TODO
AUTHORS    CMakeLists.txt  doxygen  include  man      README  zoneinfo
ChangeLog  config.h.cmake  HACKING  init     NEWS     src

The first thing we should do is create a new directory to do our build in: this stops all our build files from littering the source tree.

$ mkdir build
$ cd build/

Now we need to configure the build. There are two ways of doing this, and I use both! One way is good to start off, the other way is good for tweaking. You’ll see what I mean, but let’s start with the initial configuration. This is how I usually start:

$ cmake ../ -DCMAKE_INSTALL_PREFIX=/tmp/build -DBONGO_USER=alex -DCMAKE_BUILD_TYPE=Debug -DDEBUG=On

The first argument points to the Bongo source directory. Because I made a ‘build’ directory in the source tree and went into it, we’re just pointing at our parent directory. Then come some other options. Every option is prefixed with “-D”, and some of them are CMake options and others are Bongo options. In full:

  • CMAKE_INSTALL_PREFIX: where we want to install to. I use /tmp/build for testing, and /usr/local/bongo when I want to run it in production.
  • BONGO_USER: which user you want Bongo to run as. I use my user account for testing, “bongo” for production. You can also run as “root” if brave (not recommended!)
  • CMAKE_BUILD_TYPE: set this to Debug to generate information for gdb, otherwise leave this option out.
  • DEBUG: enable code paths which generate debugging messages. Both this option and the previous are for either advanced users or developers, really.

There are other options to the Bongo build, but these are the main ones. However, once you’ve configured Bongo, you may want to tweak something: perhaps turn on debugging, or change one of the file paths, or something different. The easiest way to do that is simply:

$ ccmake ./

Note that it’s “ccmake”, not “cmake”. This starts an interactive application where you can change each configuration item. You point it at the build directory, not the source, and it gives you all the various tweakable options. You’ll see that they are the same options that we pass to cmake – and indeed, you can pass them to cmake! There’s even an advanced mode with even more knobs (press ‘t’). When you’re done, press ‘c’ to configure the build and then ‘q’ to quit.

Once you have configured the build, you have access to the usual make commands:

$ make
$ make install
$ make clean

The first builds Bongo, the second installs it to your prefix, the last removes the built files.

Boycotts as consumer judo

MJ Ray has some interesting thoughts on the recent discussion of BoycottNovell’s lash out at people criticising RMS’ GCDS keynote. For the sake of being open, my reaction to RMS’ speech (which I didn’t see) was that it sounded pretty distasteful: I don’t think there was any sexist intent, but the choice of words was pretty poor.

I think a key problem with BoycottNovell is that it left the lands of “corporate judo” a long time ago: motivating people to spend (or not) their money is one thing (to be applauded – it’s a basic tenet of capitalism, after all), and telling people why they shouldn’t buy a certain company’s products empowers them to make better choices. Rallying against individuals rather than the corporation, though, rather crosses that line.

Too much of what that site does is essentially dividing the free software world into “pro-Microsoft” and “anti-Microsoft”, and calling out the people unfortunate enough to make it into the first category as trolls, shills and/or liars: as an easy example, the guy who edits the ODF standard fell foul of not being anti-Microsoft enough, so they post speculation about his links. It seems even the person who started BN no longer wants to have anything to do with it (can’t directly link, but just search for “you guys are nuts”), having seen the latest hatchet-job on a member of the Ubuntu community.

You can do similar things by looking up their views on virtually any prominent GNOME developer, or people employed by Novell, too. Everything gets categorised, along with people outside the community like journalists, and the whole thing has a whiff of McCartyite witch-hunt about it. If it was calm, considered and reasoned, I doubt people would have a problem with it – but in practice it’s the literal mud-against-the-wall experiment. The “pasting logos/words/phrases on top of photos of people” has a real Perez Hilton-quality about it, and I don’t think that’s a compliment.

Realistically, BN is now such a large body of articles that most of the harmful ones are mired in the dross of repetitive repost, and do little direct damage themselves. However, I doubt that much consumer judo can be laid at their door, and I would bet a fair proportion of people who are in a position to purchase large amounts from Novell are never going to bother wading through that site. Whether or not you agree with their intentions, from the point of view of being effective it’s pretty clear they’ve lost.

Come on, Facebook – re-instate Tom Brake MP

Now, I’m not a huge one for using web applications as a means civic communication – I tend to believe that communicating with your representatives is much better done in a public space rather than a private one like Facebook. However, this story (on the face of it) is quite disturbing.

Transport for London recently announced the removal of the N213 night bus service between Croydon and Sutton. For many people, particularly young people going out of a night in Croydon, although this service wasn’t overcrowded it was important. A number of people on Facebook started a group to protest this, and took to the streets of Wallington last night.

Our local MP, Tom Brake, has been a Facebook user for years now and has tended to be pretty good about using it intelligently: joining good local causes, using it as another way of letting people know what he’s up to, and that kind of thing. So, he also joined the “Save the N213” group and posted various letters that he’d sent to the Mayor / TFL.

Now, however, Facebook has suspended his account: it’s like he doesn’t exist on the site any more. No comments, no profile, unceremoniously de-listed from the various groups.

Fine upstanding local residents

Fine upstanding local residents

Why has this happened? Well, according to LibDem Voice, “his account was automatically suspended when their system detected an unusually large amount of traffic to and from his account“. That is to say, the protest against the N213 – which Tom was participating in, not really organising – was too successful, and Facebook assumed something bad was happening.

MPs need to be easily accessible by their constituents. On issues like public transport, children and young adults are particularly important because they don’t have the option driving. Representing them effectively means, realistically, being able to contact the local community via Facebook (and services like it) because that’s what these people use in the same way older generations write letters to the local newspaper.

It’s difficult to know what to do about this. It’s difficult to see how a kind of public service obligation could be imposed on something like Facebook; equally, setting up something genuinely public and civic-minded is unlikely to attract the demographic we’re talking about.

Google Chrome OS

As I drove to a business planning session (a.k.a. entrepreneur funday) this morning, I heard on the radio that Google had announced their intention to release a consumer operating system. This was interesting news, albeit too brief, and being at this event I wasn’t able to check the news until I got back this evening.

Pretty much the first thing I read was Andrew Savory‘s take on this. Wow, how disappointing.

Not technologically, though. A browser on top of a Linux core – ok, that makes sense. It will obviously need a few other bits and pieces too, but intrinsically we’re not a million miles away from where Pyro was going (as Alex Graveley noted). However, the community side of it is deeply, deeply disappointing. But, considering Android, not entirely surprising.

Although the announcement ends “we’re definitely going to need a lot of help from the open source community to accomplish this vision” I somehow doubt that: this is another example of FLYOSS – Fly-tipped Open Source Software. All the vision I’m seeing here is the old joke about Messers. Bodjit & Scarper dancing in my head.

There is a lot of talk about the security architecture about this, but I’m pretty sure that’s not the hardest problem to solve when you’ve junked virtually every app bar the browser, and there is a lot of talk about how great this will be for developers. But will the apps be as compelling as those created using Mozilla Prism or Adobe Air? Or will Google re-invent that wheel too, with their own desktop toolkit? Will Chrome OS need a Google account to work?

I think Google are about three years late with this already, anyway – the Netbook revolution has pretty much come and gone, and people are just installing Windows on them. It’s ridiculous, but people don’t much care about the size/speed of them, and they’re getting them basically for free with broadband contracts. By Q3 2010 that boat will have not only sailed but be half-way around the globe on its world cruise.

Mono and the MCP

It has been interesting watching the debate around Mono over the past few months. As essentially an independent observer – albeit one who has used Mono and can almost code C# – I couldn’t help the sneaking feeling that somehow, some of this was being orchestrated behind the scenes.

Particularly on the “anti-Mono” side, it has been pretty clear that an agenda of agitation has been in effect, with various distributions being prodded into making statements either way and various “users” kicking up stink on mailing lists – not least a certain infamous blog writer being caught red-handed whilst goading people on to write angry letters. I don’t know if speeches like Stallman’s were co-ordinated – I suspect more likely happenstance – but it all seemed very well timed.

And now it seems that Novell have been leading Microsoft into giving a Community Promise surrounding patent claims that cover the “standard” parts of Mono. I predict this is going to have a surprisingly negative effect within the community, however. It validates the arguments of people worried about Mono, and this proposed split of Mono into “Standard bits covered by MCP” and “Other bits not covered by MCP” is actually going to fuel the flames: inevitably, people will assume the non-MCP bits are a total patent mine-field, no matter what is actually in that area. Parts that people are quite happily shipping right now – such as ASP.net – will be targetted next by people “anti” Mono. And for the parts covered by MCP; well, I expect not much to change: certainly, it’s not likely to convert many people to Mono.

In this scenario, I would actually suggest this is a step backwards. People will read the MCP news as an admission that Mono is at risk from Microsoft patents, and it certainly will not unite the community in any fashion.

Personally, though, I think this move signals that Mono is now basically big-time. I don’t know how many will agree, but the smoke-signals have been in the air for a while: major products such as Sims 3 by EA shipping with Mono, for example. It’s big enough that Microsoft is having to sit up and take notice; it cannot be long now before Microsoft starts shipping either parts of Mono or its own implementations of key Mono tools and libraries.

I don’t think “the Mono issue” is going to be resolved in the Linux community any time soon. However, as I’ve said before – I don’t think that matters. The community of people using Mono, and the community for whom Mono is an attractive proposition, is an extremely large and probably not (for a large part) particularly Linux users.

Like Firefox before it, Mono is becoming a break-out technology which appeals to an entirely different set of developers. In Firefox’s case, it became the web developer tool par excellence due to its vastly better debugging, inspection and developer tools. Mono isn’t comparable with MS’ development tools yet, but already has a strong appeal to people wanting to use .net development tools in non-Windows environments. You can use Mono to develop for Microsoft’s own Xbox 360 – as far as I’m aware, you can’t do that with Microsoft’s own .net yet.

It will be interesting to see where the Linux community moves to on this issue over the next couple of years. Whether or not Mono gets used much doesn’t really matter any more though; Mono is now an entirely successful project in its own right and it’s going to be here whether we like it or not.