Blog

guitone 1.0rc5 Windows installer available

Sorry that it took a while, but I got largely distracted by other things. Finally the Windows installer binary for [guitone 1.0rc5](http://www.thomaskeller.biz/blog/2010/11/06/guitone-1-0rc5-released/) is [available for download](http://guitone.thomaskeller.biz/g/download) – compiled under WinXP SP3 with Qt 4.7.1.

Please let me know if you encounter problems, for example by reporting issues in [guitone’s bug tracker](https://code.monotone.ca/p/guitone/issues/).

#112123

Today I completed my ScrumMaster certification. After the two days with [Joseph Pelrine in early November](http://www.thomaskeller.biz/blog/2010/11/05/why-i-do-open-source-development/) they finally send me some login for their website scrumalliance.com, offered a short web-based test (which you couldn’t really fail) and tada – now I can call myself [“Certified ScrumMaster”](/bewerbung/csm.pdf).

So everything seemed to look fine, but wait, why has this certificate an expiry date tacked on it? Uh, yes, erm, I’m supposed to renew it every year beginning from 2012 for 50 bucks. Its not like your drivers license – once you’ve learned to ride your car you cannot unlearn it, right? All the knowledge about Scrum is of course totally forgotten and buried in my head when the magic year 2012 has been reached… now thats business!

But hey, I got something in return. I’m listed with the other 112122 fellows on their website as CSM and are “allowed” to use the term “CSM”, the “logo” (which I had to extract via photoshop from the certificate itself, because they do not offer a download) and the nice little Scrum community they build around the website.

Thank god that Joseph was entertaining and educational enough for the two days in November that all the (company) money was worth the certification. The certificate itself and the “services” around it are certainly not worth it.

The fuzzy cloud

Until now “the cloud” (the computing paradigm) was for me more or less a fuzzy defined hype I missed to really “see” the advantages of: I delegate infrastructure resources to some external “hoster” and pay for that, but I instantly got this nagging fear that I’ll loose full control over my resources and data when I’d do so.

While I am (unfortunately) not in the right business for experiencing and working with “the cloud” myself, I’m still very interested in learning about the possibilities and changes cloud computing introduces, especially from the development point of view.

Today I now stumbled upon [Adrian Cockcroft](http://perfcap.blogspot.com/)’s outstanding [presentation](http://www.slideshare.net/adrianco/netflix-on-cloud-combined-slides-for-dev-and-ops) in which he outlines how Netflix, the company he’s working for, introduced cloud-based services step by step as a replacement for traditional data center services and monolithic architectures. After reading through the roughly hundred slides I can say I’m much more confident to believe that all this *is* the right direction in the future, also (but not solely) because it forces us developers to write much more domain-independent, easy servicable, stripped down code.

So if you have 30 minutes for a very good introduction in practical cloud computing, I urge you to [go ahead and read the slides](http://www.slideshare.net/adrianco/netflix-on-cloud-combined-slides-for-dev-and-ops).

guitone 1.0rc5 released

I’m proud to announce the immediate release of guitone 1.0rc5. This fifth release candidate requires monotone 0.99.1 or later. The plan is to release guitone 1.0 final together with monotone 1.0 final
by the end of this year.

Amongst some minor bug fixes, this release also features a new “server mode” with which remote monotone databases can be explored (requires compatible netsync servers with remote automation permissions).

The tarball and a Mac OS X disk image can be [downloaded already](http://guitone.thomaskeller.biz/g/download), a Windows binary should follow shortly.

As always, please [report bugs](http://code.monotone.ca/p/guitone/issues/) if possible. And I’m still looking for more translators – if you’re interested, [drop me a note](mailto:me@thomaskeller.biz).

Thanks for reading,
Thomas.

guitone Mac OS X package

Newer versions of Qt come with the nice and handy tool `macdeployqt` – I think it first appeared offically in 4.6. What this basically does is that it looks for linked Qt libraries and plugins in your binary file and copies the needed ones over to your application bundle, so your application is ready for distribution.

So far so good, this worked nicely with the [Carbon binaries](http://qt.nokia.com/downloads/qt-for-open-source-cpp-development-on-mac-os-x) supplied by Nokia, but it stopped working properly with the Cocoa builds. While the latter are advertised as “…for Mac OS 10.5 – 10.6” and really let you build and run your application on 10.5 (yes, I still haven’t followed the crowd and updated), the `macdeployqt` does not. It depends on newer versions of `strip` and `install_name_tool` which only come with newer versions of Xcode, i.e. >= 3.2. And guess what… yes, Xcode 3.2 is of course not available on 10.6.

(Nokia has actually an older, already closed [bug report](http://bugreports.qt.nokia.com/browse/QTBUG-9318) on the issue, but I doubt they will fix the issue, they do not invest much anyways on non-mobile platforms these days and 10.7 is soon out as well, making 10.5 look even more deprecated…)

So at first I thought “lets try build a Cocoa distribution” for guitone, because I believed this could bring some speed and other improvements and I accepted that I had to kick 10.4 support out of the way for this to achieve, but this bug is actually a show stopper for me.

I’ll probably have to give away Mac packaging for guitone in the mid-term future anyways. I do not plan to upgrade to 10.7 nor to a complete new Mac (I don’t like the direction Apple is heading, but this is a different story) and Qt 4.8 will definitely no longer ship with Carbon support.

Why I do Open Source development

I was on a scrum master certification over the last two days, lead by [Joseph Pelrine](http://www.metaprog.com/blogs/about/), and beside the enormous amount of knowledge on Scrum and the not lower amount of anecdotes and stories he experienced with *[insert famous IT company here]*, he came out with one particular interesting hypothesis:

“Doing Open Source software is like having an affair.”

He argued that if people would have enough fun with their daily development tasks and would identify enough with their company, they wouldn’t have the need for doing Open Source, they would not spend their valuable time developing free stuff.

So, am I cheating my company?

Certainly I love Open Source and Free Software in general. One reason why I love it that much is because I come in contact with interesting and very smart people. For example, I learnt many things from the friendly folks in the monotone community over the last couple of years, things which I did not learn or even came in contact while doing my daily business. And guess what, my company participated and profited from this many times, because I carried a lot of this knowledge back to my day job.

Beyond learning another major thing of Open Source for me is recognition. I don’t get a lot recognition for my daily business – either because most people like my boss just don’t care how software is manufactured and how the process works (after all, its the money that counts, eh?), or because the artifact I’m developing vanishes anyway because some marketing guru of a customer decided to “well, not go into this direction any further”. Sure, the money is ok, everything is paid, but it just plainly demotivates you if you work for the trash can.
With Open Source you work on stuff you or other people demand, you get the reward in terms of positive feedback if you help them solve their problems and you get public recognition for the source code you publish.

So again, am I cheating my company? I don’t think so. Open Source allows me to think outside of the box and try new things, for all of which would be no time in narrowed sprints or busy project plans, and my company profits from that.
But yes, maybe this also opens the door for new employments in the future as well, but lets face it, doing Open Source work is often the only possibility to personally get ahead in this industry today.

monotone 0.99.1 released (updated)

The monotone team just released 0.99.1 of its version control system. This is a minor patch release which fixes two regressions:

1. If monotone 0.99 was built on x86_64, a missing variable initialization lead to a crash when parsing netsync URLs.
2. monotone 0.99 reported wrongly `12.1` as automate interface version number, whereas this should have been `13.0`.

The release can be downloaded at the [usual location](http://www.monotone.ca/downloads.php). **(Update:** A [windows installer](http://www.monotone.ca/downloads/0.99.1/monotone-0.99.1-setup.exe) is ready to download as well, thanks to Stephen.**)** Sorry for the recent release flood, we promise to cool now for a while…

Thanks for your ongoing support,
Thomas.

monotone 0.99 released (Updated)

**[Update]** Unfortunately some last minute changes make this release break on x86_64 – the issue has been fixed in the meantime, [the patch is available here](http://code.monotone.ca/p/monotone/source/commit/1719598391da11b01b3a574e5b96a315d3d33810/). My apologies, we’ll put out a new release shortly. **[/Update]**

We, the monotone developers, are very proud to release version 0.99
of our distributed version control system.

This release contains almost countless bug fixes, changes and new
features, so I’m listing only the outstanding ones here:

* Selectors have been overhauled to support the calculation of
common sets of revisions, like e.g. differences, ancestors,
parents or children of input revisions.

* Monotone’s URI syntax has been extended and is now the default
for all kinds of netsync actions (the old syntax remains available
until 2.0 though).

* All netsync commands now come with a “dry-run” mode which
shows incoming and outgoing changes, such as revisions and certs.

* The command line UI was cleaned up and improved a lot and now
supports negatable and completable options amongst other things.

* Many automate commands have been added and existing one improved.

* Monotone regained its manual page – automatically generated from
the command tree – which is also available localized through
the new ‘manpage’ command.

A complete list of changes is available in the [NEWS file](http://www.monotone.ca/NEWS).
The tarball can be [downloaded here](http://www.monotone.ca/downloads.php)
– binaries are posted there as they come in.

Finally, this release also marks the beginning of a new version
numbering scheme, where we try to maintain stable versions up to a
certain point and add only non-breaking changes as minor releases.

The upcoming version 1.0 now is such a stable release, actually the
first one after more than 6 years of development. It will only contain
bug fixes and documentation improvements, but no additional new
features, and is planned in Q4 2010.

**Thank you all for your ongoing support!**

Thomas
– on behalf of the monotone team.

Fatal errors with monotone 0.48 and SQLite 3.7.3

If you encounter errors like this recently

$ mtn pull
mtn: fatal: error: null result in query: …

this might because you’ve updated your SQLite version to 3.7.3 or later. The SQLite guys fixed a bug in their API which we have worked around for ages. [This patch](http://pastebin.ca/1970723) fixes the issue and another minor nitpick. Its unfortunately not part of the recently released 0.48.1 and must therefor be applied manually.

If you can’t recompile, the best thing for now is to downgrade SQLite to 3.7.2 or earlier. You may also want to bug your packager of choice to
include the above fix until we release 0.99 – the next version which includes the above fix as well – in a couple of days.

Sorry for the inconveniences!

monotone 0.48.1 released, please update your servers! (Updated)

We, the monotone team, have just released version 0.48.1 of our version control system.

This release contains an important security bugfix amongst minor other changes: monotone servers that have remote command execution enabled can be crashed if the client sends an empty command string to the server. If you have this feature enabled, we urge you to update your servers to the new version. Distributions should hopefully provide new packages soon as well.

If you cannot update for some reason and do not want to deactivate the feature completely, you can also simply place the following workaround in your server’s monotonerc:

function get_remote_automate_permitted(key, command, opts)
if command[1] == “” then
return false
end

— remaining configuration …

end

The new version can be downloaded at the usual place. Binaries are posted as they come in.

Update: monotone’s NEWS entry doesn’t make it clear which versions are affected by this vulnerability. Since remote command execution became available in 0.46, the affected versions are 0.46, 0.47 and 0.48.