Mysql, Oracle and the European Commission

I am a bit of a cynic, and my cynic-sense definitely lit up when I read this:

http://monty-says.blogspot.com/2009/12/help-saving-mysql.html

He wants to have his cake and eat it too. Or as they say in Italian, he wants to have his wife drunk and the barrel full (really!).

He sold Mysql to Sun for a great deal of money – around one billion dollars. Even if his share is only 1% (which I doubt), that is still 10 million dollars, which is enough for anyone normal to live the rest of their life without ever having to work again. If he walked away with 10% of the deal, that’s 100 million dollars.

Monty writes:

I have spent the last 27 years creating and working on MySQL and I hope, together with my team of MySQL core developers, to work on it for many more years.

Since it’s under the GPL, he can do that himself for as long as he wants – he doesn’t have to worry about making a living, after all. If he took away something closer to the 100 million number, he can also fund several of his friends to work on it for years and years, without worrying much about income. They could always do consulting if they wanted to make a few bucks, in any case.

Now, what he’s worried about is that Oracle will no longer put money into Mysql. I agree that that’s a real risk.

However, I also think that since it’s Oracle’s money that is being spent, they have the right to do as they see fit, within certain limits, and this case is well within those limits. My view is that there are plenty of cases when governments should intervene. For instance, if Mysql were the only competitor to Oracle in the database market, it might be quite unhealthy to let them buy it. But that’s not the case – not at all. There are numerous competitors, both closed and open.

So the risk to ‘the public’ is relative: people bought into a product that may now stagnate, but if they really want, they have plenty of other places they can jump without too much pain (SQL is a standard, after all). It’s like if FreeBSD disappeared tomorrow: you could switch to OpenBSD or Linux or something else. Perhaps not painlessly, but it wouldn’t be the end of the world, either (let’s hope FreeBSD has a long and happy future ahead of it, though).

We’re back to wanting to both have and eat the cake: Monty seems to want the EC to force Oracle to divest itself of Mysql or impose various restrictions on its development. If he had imposed those conditions on Sun when that sale was made, they might not have done the deal, or placed a smaller value on it. He didn’t, but now he is back and trying to impose them on a deal in which he is not a participant (although I suppose he may have some Sun shares). That doesn’t strike me as being entirely fair: if he really wanted to ensure the future of Mysql, he would not have sold the company.

In terms of open source, keep in mind that Mysql was not released under the GPL until 2001:

http://www.mysql.com/news-and-events/generate-article.php?id=23

For many years it was under a “sort of open” license that was not proper open source.

Then there’s the Richard Stallman angle: that somehow, Mysql “deserves” to have developers funded to work on it. I don’t buy that, either. Mysql is a nice project, but I don’t think that there’s any moral imperative that the government should step in and fund some open source projects. Should the EC step in and say that Oracle should also fund Postgres development while they’re at it? There are plenty of deserving projects that could use some cash to fund their development. For instance, my friend Salvatore is looking for donations for Redis development. It’s not as big or “important” a project as Mysql, but it’s good code and already being taken up by various companies. For that matter, I’d like to keep working on Hecl full time.

In short: I hope that the EC approves the sale “as-is”. I also hope that Oracle continues to take good care of Mysql, but if they don’t, that is ultimately their decision as long as there remain plenty of competitors in the market.

I think that our time as “the open source community” is better spent fighting for more important things: against bad software patents, for open standards in governments, and that sort of thing, that will benefit everyone, rather than trying to wrest control of Monty’s code back from Oracle after he’s already been paid handsomely for it.

Google Design Annoyance

I’m the last person in the world to have much of anything to say about visual design, but this one is so blatant that even I can’t help but notice:

Adsense

Analytics

See the big blue button in the same place? In one case, it is a ‘sign up’ button, in the other it is an ‘enter if you already have an account button’. This is visually confusing for those (and there are a lot of us, I’m sure), who use both products.

Stopping DocBook Version Control Churn

I have been getting frustrated with DocBook’s generation of HTML files, because it seems to gratuitously insert random id’s for things in a pattern that doesn’t repeat, so you run xsltproc on the same file twice, and the output changes. subversion, git, etc… pick up on the differences and want to save the new version, which is quite annoying.

I figured out a way to get around this. I have no idea if it’s ugly or not, but it works and that’s enough for me. Comments/ideas/improvements welcome.

<xsl:template name="object.id">
  <xsl:param name="object" select="."/>
  <xsl:choose>
<xsl:when test="$object/@id">
  <xsl:value-of select="$object/@id"/>
</xsl:when>
<xsl:when test="$object/@xml:id">
  <xsl:value-of select="$object/@xml:id"/>
</xsl:when>
<xsl:otherwise>
  id-<xsl:number level="multiple" count="*"/>
</xsl:otherwise>
  </xsl:choose>
</xsl:template>

The key is the line:

  id-<xsl:number level="multiple" count="*"/>

which replaces

  <xsl:value-of select="generate-id($object)"/>

The problem is that generate-id, at least in xsltproc, uses a fairly random bit of data (memory location) to create the id.

My fix uses the location of the element within the document as the id.

Windows for Developers?

Unfortunately, in order to do some BlackBerry hacking, it looks like I need a copy of MS Windows, to run under some sort of virtualization software. It’s possible to get most of the bits and pieces sort of working under Linux, but I don’t want to spend too much time fiddling; I’d rather spend it hacking.

To be brief and to the point: anyone out there know if there are deals for developers, open source or otherwise, to buy a legitimate copy of Windows? It’d sure be easy to just download it, but I believe in respecting other developers’ licenses just as I want them to respect mine.

However, if I could save a few bucks and spend them on my daughter Helen, instead of Mr. Gates and company, I sure wouldn’t mind. Any ideas?

Running the BlackBerry Emulator on Linux

I seem to have gotten it to work, more or less consistently (although I’ll keep my fingers crossed).

The first step is: do everything this guy says, and thank him profusely, as he seems to have blazed a path for everyone else to follow.

http://www.slashdev.ca/2008/03/27/blackberry-simulator-in-linux-sort-of/

Keep in mind that newer versions of the JDE (mine is 4.7) have different devices, so create, for instance, a 9500.sh instead of the 8800.sh.

These points bear repeating, as gleaned from the comments on the above post.

  1. Make sure you have the very latest Wine that you can find and is somewhat stable. I used this: deb http://wine.budgetdedicated.com/apt intrepid main
  2. Get gdiplus.dll (search for it with Google) and install it in your .wine/drive_c/windows/system32/ directory. (From Cay in the comments).
  3. Get msxml.msi (Google, again) and run it like so: wine start msxml.msi, which should install it in wine for you. (From Patrick).
  4. Edit your shell script to make wine stick with one processor: task -c 0 wine fledge.exe .... (From Andrey in the comments)

To load up your hello world application, select the file menu, “load java program”, and then in the emulator, go to the ‘downloads’ section (double clicking on the main screen should get you to the applications). Your app should be there.

So far so good, although the whole thing is a gigantic pain in the neck compared to development with platforms like Java ME or Android, where Linux versions exist.

Update

Sadly, it still randomly exhibits problems. How frustrating.

Something I’d like to See: Cheap J2ME “device”

Here’s the idea: there are tons of games and things out there for j2me (err, make that “Java ME”), and it’s a fairly simple API, it’d be nice to have something that’s a bit less than an actual phone, that can be loaded up with stuff to play.

I’m specifically thinking of my daughter when I talk about this – she loves to grab mom and dad’s phones and run around with them, but it’d be better if she had something of her own, and, hey, why not make it something real where I could write some neat little games or interactive things?

There are some mobile phones that are getting very cheap, that would probably do nicely, but the really cheap ones don’t have J2ME. I think the price for this should be under 50 dollars.

I suppose the best thing would be to find a cheap phone on eBay, but I think there’s a market for something similar to what I’m describing.

ruby-oci8 and libaio

Not of concern to most people reading this via a feed, but it’s one of those things I think is nice to write up as a public service, should anyone else encounter the same error. I’m stuck doing some Rails work with Oracle, and so I needed to get ruby-oci8 working:

http://ruby-oci8.rubyforge.org/en/InstallForInstantClient.html

These instructions are pretty good. I followed them, the gem said it had been installed correctly…. and yet:

ERROR: ActiveRecord oracle_enhanced adapter could not load ruby-oci8 library. Please install ruby-oci8 library or gem.
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in
`establish_connection':RuntimeError: Please install the oracle_enhanced adapter:
`gem install activerecord-oracle_enhanced-adapter` (LoadError)

Argh! After some straceing, I finally figured out what was missing: the libaio1 package. You need to have it or things will fail like this. It’s very odd that the installation doesn’t complain about it.

Custom Twitter Sites, BikeChatter.com Updates

I’ve been hacking away at http://www.bikechatter.com, adding a few things like votes and tags so that you can choose which broad categories you want to follow. The first will let people vote for the most interesting tidbits that come through twitter, whereas the second will let me add more people without overloading those who are, say, not interested in reading what coaches have to say, or are only interested in professional women racers, etc… I don’t think I’ll bother with individuals – if you want that, just add them to twitter yourself! At most I might see about putting in an ‘exclude list’… but we’ll see; I’d prefer to keep things simple.

Since I love cycling so much, adding stuff to this site has always just been kind of a fun side project, something to relax with in the evenings, rather than something I thought about in monetary terms. However, the basic idea seems to be popular, and as luck would have it, I’ve been approached by someone looking to buy the code behind BikeChatter to drive their own custom twitter site. If someone has gone to the trouble of writing me, there must be other people interested too, so I thought I’d publicly state that I’d be willing to do similar deals with people interested in having their own custom twitter site. Interested? Write me at davidw@dedasys.com . I’d be happy to tell you what the code can and cannot do, and discuss any ideas you may have, in order to let you know if it’s a good fit, or if you’d have to do a lot of work.

The code is pretty straightforward Ruby on Rails. I use Postgres as a database, but others should work fine too. As is obvious, I’m not much of a design guy, but it shouldn’t be too hard to plug in your own look and feel.

Swap Desktops

This weekend’s hacking efforts:

What it does:

I like to have my “workspace” in virtual desktop 1, where I have 3 emacs windows, and 4 urxvt windows (bash shells). Sometimes, however, it’s a bit of a pain to swap back and forth between client work and DedaSys work. One obvious approach is to replicate the window setup in a different virtual desktop. However, I’m used to having everything “just so”, so that I can quickly move to the desktop south of the main one to have my browser, east to get to the shells that connect to host things run on, and so on. And if I put my ‘local’ workspace on a different virtual desktop, it would screw all that up, so I wrote the above code. It utilizes the wmctl program to swap virtual desktop N with virtual desktop M, meaning it takes all windows from N, and puts them on M, and all the windows from M and puts them on N. If I have a bit more time, perhaps I’ll take a stab at the C code in wmctl and add a new option to swap virtual desktops.

Ovi and Hecl

Granted, Hecl’s demo application is not the sort of things end users are going to want to use on a day to day basis, but I thought I’d use it to go through the process and see what I could see about Ovi.

Unfortunately, it didn’t go well, I got this the other day:

Comments from the QA team:
FAILED due to the devices not compatible by OVI store, OVI supported devices are can be found from the link
https://publish.ovi.com/help/content_providers (public, Qa in progress -> Qa failed)

The file failed QA on the following target(s):

  • Device: Unpublished Protos – XXXxYYY – Another Test Device

Which isn’t all that clear, putting it mildly. Hrm. Maybe I’ll try with something else just to see what can be seen.