blog/index on LeoSimons.com

Please note that I'm moving all my personal website pages to my new blog on wordpress.com; this page may be removed at some point in the near future.

FSF achieves apache license compatibility in latest GPLv3 draft

From this document (PDF):

We are pleased to report that the Final Draft makes the Apache License, version 2.0, fully compatible with GPLv3. (...) The Final Draft makes the Apache indemnification clause compatible with GPLv3 by adding a new category of additional conditions in section 7 that may be applied (...) Another change we have made to section 7 should make clearer that the trademark clause in section 6 of the Apache license is compatible with GPLv3.

Thank you, FSF.

Read more on the FSF site, and head over to Dalibor's blog for more on what's happening in the java open source landscape these days (hint: a lot!). My modest previous blog entry was about the previous public draft.

Among other things, this license compatibility is good news because it means that the GNU Classpath community (if/when they move to GPLv3) can choose to freely use apache-licensed code such as Xerces, Tomcat, Harmony, and other projects, pretty much "as they see fit" (complying with the apache license will not be that hard for any GPLv3-licensed project). And with OpenJDK being under the GPLv2, they can also use all of that code. Freedom for free software hackers is increasing with leaps and bounds.

GPLv3 draft 3 proposed patch for Apache License compatibility

Dear Free Software Foundation,

in your explanation of the changes made between GPLv3 draft 2 and GPLv3 draft 3, you write:

We regret that we will not achieve compatibility of the Apache License, Version 2.0, with GPLv3, despite what we had previously promised.

I share your regrets. License compatibility between the Apache License v2 and the GPLv3 would help tremendously to bridge some of the legal divide that hampers many FLOSS projects on a daily basis.

Therefore, I propose to patch GPLv3 draft 3 to explicitly state compatibility between the ALv2 and the GPLv3, by adding a section such as this one:

Notwithstanding any other provision of this License, you have permission to link any covered work with a work licensed under version 2 of the Apache Software License, and to convey the resulting combination. The terms of this License will continue to apply to your covered work.

(this text is nearly identical to section 13 of the GPLv3 draft 3 text, replacing "Affero General Public License" with "Apache Software License", and removing the assertion about the license that will apply to the apache-licensed work.)

Thank you for your consideration.

Best Regards,

Leo Simons

(the above is a copy of an e-mail sent to brett at fsf dot org)

My Geotagged photos, hosted on Flickr, displayed on Google Maps

Leo Simons' geotagged photos hosten on Flickr and displayed on Google Maps

(neat trick learned from sharkbait.)

Disclaimer: I uploaded my first pictures to flickr only yesterday.

Review of Google Apps

If you e-mail lsimons A jicarilla dot nl (which no-one ever does), the e-mail no longer ends up in my inbox, it ends up at gmail.jicarilla.nl. Encouraged by a collegue, I've been giving Google Apps a try.

Setting up

They have this figured out amazingly well. It definitely made me gow "wow". And again, "wow". If you own a domain, and you have access to the DNS settings for that domain, they guide you, step by step, to making their different services avaialble under that domain, including using it for e-mail.

I had it all done within an hour, just clicking around and following some instructions (most of them, I didn't read). It just works so much better than other managed hosting solutions I've tried in the past (like things using cPanel), it's amazing.

It was a little annoying that it kept forgetting that I, while being Dutch and living in The Netherlands, like to have all my user interfaces in English. I had to change that behavior in every individual app, and when I changed my location information, some of it flipped back to English.

GMail

The free account is 2GB, which is not enough for me. The paid account is 10GB, which is still not enough for me. So migrating is not even an option, even if GMail was deemed secure enough by the powers that be @ work.

Things I like

  • the 'conversation' model where you can manage whole conversations (wouldn't work for my work e-mail though, where many people just hijack threads all the time)
  • the keyboard shortcuts
  • the gtalk integration
  • how editing of an e-mail starts inline by default, and you can break it out later

Things I don't like

  • The unneccessary information and hints like, "visit settings to save time with keyboard shortcuts". I'm a geek, the first thing I visited was the settings.
  • The primitive filtering. I am used to having all the power of procmail available to me (filtering by mailing list headers that ezmlm adds, for example). I can't ever see this working.
  • Tags. I'm used to folders, and they are a vital part of what helps me mentally "switch hats" between job/open source/personal tech interest/private life. I don't see how I could do that with tags.
  • No offline mode, or at least its not that clear to me how to get that.

All in all, it's just very different, and I'm not actually looking for different. I suspect large parts of the world feel similarly and just want to keep their basic three-pane interface. Of course, there's not that many people that process as much e-mail (and as weirdly) as I do, so I can understand how the GMail interface is not exactly optimized for people like me. I definitely would recommend it to, for example, my parents, if they hadn't been using Outlook Express (and before that, Netscape Mail) and just want to keep using such an interface.

Google Calendar

Day view, week view, month view. Snappy interface. Search. Multiple calendars distinguished by color. iCal support. Creating an event in the right spot takes just a few seconds. I like.

I miss is the GTalk mini-window, that GMail does have, in the calendaring interface.

What would truly make this a killer app for me is if I could sync from Apple's iCal to it, instead of just subscribe to Google Calendar from iCal. The reason for that is that I often jot things down while offline, and I'd want those automatically appearing (or at the click of a button) on google as soon as I had a network connection again.

Oh, and then of course I'd need Apple's iCal to support SSL.

I would definitely recommend google calendar to anyone that needs a calendaring solution, especially if you want to use shared calendaring, and you don't need to edit your calendar while offline.

Google Docs and spreadsheets

It works, and it autosaves your work, and it has revisions. I could never actually use this (since I need to work with all these big technical and/or legal MS Word documents which have comments, master pages, revision tracking, etc), but it is otherwise really nice for simpler things. Especially the shared editing.

This would be one of my favorite apps on the web, and I would probably actually use it the next time I need some loose planning for something (like a party or a conference call or whatever) if it weren't for the existence of Dabble DB. Google's solution works, but dabble is magic.

Integration between pieces

While everything except the page creator-generated website is available over SSL, the links between the pieces (i.e. when you're in google calendar and you click on "gmail") keep redirecting back to plain HTTP. In general, security seems, ehm, not paranoid enough for people like me.

While, wherever you are, there's always a link to the other apps within reach in a consistent location, there's still a highly modal way of working, where you have to mentally switch from writing an e-mail to writing a document. You can't actually send a google docs document as an e-mail easily; you have to export it, save it locally, switch to gmail, create an e-mail, navigate to the file, upload the attachment, type the message, and send it. Hpff. Similarly, you can't select a document in google docs and use "send to" (windows) or drag-and-drop (mac) to create an e-mail out of it.

This is really where either the microsoft solution (outlook, office, windows explorer integration, "start > my recent documents") or a geeky solution (like me...mutt, SubEthaEdit, spotlight, locate/find/ls, office available when I need it) offers stellar productivity, and where trying to do it "in the web browser" still completely breaks down.

Managedness

Think of all the things you get for free in this solution! High availability (from any computer!), good backups (or so I assume), incredible search and filtering capabilities, real web-based collaborative editing. I think what it removes from the average computer user (or IT administrator) is the need to worry about many of these things. Once you get used to it, it works. And google has a proven record to keep things working.

It's just that I already have these things...high availability (yay, svn), good backups (hurray for backuppc), great search (spotlight, mairix), better filtering (procmail, unix command line) and more mature collaborative editing (again svn, and SubEthaEdit)...and I can trust in myself instead of placing trust in a US company (with the US having laws I am not always a fan of).

Page Creator

It seems to work ok enough, and is easy enough to understand. It produces HTML 4.01 traditional which doesn't validate. I didn't spend much time with it; I prefer writing my XHTML-compliant HTML by hand...

Google Talk

We pretty much standardize on skype at work, and my non-geek friends pretty much standardize on MSN these days. Until they integrate GTalk with those closed silos, it is not that useful to me.

Start Page

Yawn. I've never seen one of these that I liked. I tried to use it, but quickly just dragged the service URLs into my firefox bookmarks toolbar.

Conclusion

Google's current offering is easy to set up and easy to use for certain distinct, well-defined tasks. Yet, it is not secure enough for the paranoid (even if you trust google with your data). Nor does it offer productivity resembling anything a modern-day knowledge worker is used to.

As far as web-based solutions go...I like the e-mail offering from Yahoo! better. I like Dabble DB better for collaborative editing. Yet, google currently has the best calendaring solution I've seen, and is seemingly the fartest along with offering integration between all the different pieces.

The big plus to this offering, and google is getting this right in an amazingly intuitive way, is that it simplifies administration dramatically. For any small business IT administrator that is struggling to get MS Exchange and SharePoint up and running, going with the google setup will definitely be a breath of fresh air.

I won't be switching to actual use of Google Apps any time soon, but I would definitely recommend small businesses, schools, families, and individuals to evaluate it and try it out. It is simple, it is intuitive, and it is free (or really cheap at $50/user/year if you want paid support and more storage).

Google Apps is serious competition for microsoft, even if perhaps not yet for the enterprise. Even if it doesn't take off in a big way, this new solution will help to break the microsoft monopoly, and will get microsoft to produce better products at a lower price. Yay!

Replace maven with a shell script

One of the things I find myself trying to instill in a lot of our developers these days is that a little pragmatism can often go a long way.

By popular demand (really!), here's my trivial shell script that pretends to be maven. For smallish projects and small sizes of your local maven repository, it is orders of magnitude faster than doing an actual maving run, and it has many other advantages over the "real" maven.

Of course, I don't actually use this script (much). Lately I've been using Ant 1.7 with Ivy. Oh, And mod_perl's Apache::Test for TripleSoup.

#!/usr/bin/env bash
artifactId=`xmllint --noblanks project.xml |
        egrep -o '<id>[^>]+<\/id>' |
        sed -e 's/<id>//' -e 's/<\/id>//'`
groupId=`xmllint --noblanks project.xml |
        egrep -o '<groupId>[^>]+<\/groupId>' |
        sed -e 's/<groupId>//' -e 's/<\/groupId>//'`
currentVersion=`xmllint --noblanks project.xml |
        egrep -o '<currentVersion>[^>]+<\/currentVersion>' |
        sed -e 's/<currentVersion>//' -e 's/<\/currentVersion>//'`
shortDescription=`xmllint --noblanks project.xml |
        egrep -o '<shortDescription>[^>]+<\/shortDescription>' |
        sed -e 's/<shortDecription>//' \
            -e 's/<\/shortDescription>//'`
package=`xmllint --noblanks project.xml |
        egrep -o '<package>[^>]+<\/package>' |
        sed -e 's/<package>//' \
            -e 's/<\/package>//'`
organization=`xmllint --noblanks project.xml |
        grep -A5 '<organization>' |
        egrep -o '<name>[^>]+<\/name>' |
        sed -e 's/<name>//' \
            -e 's/<\/name>//'`

for jar in `find $HOME/.maven/repository -name "*.jar"`; do
    CLASSPATH=$CLASSPATH:$jar
done
CLASSPATH=`pwd`/target/classes:`pwd`/target/test-classes:$CLASSPATH
export CLASSPATH

echo Building $artifactId-$currentVersion.jar...
rm -Rf target
mkdir -p target/classes
mkdir -p target/test-classes
cd src/java
javac -nowarn -Xlint:-deprecation -source 1.4 -target 1.4 \
        -d ../../target/classes \
        `find . -name '*.java'`
for dir in `find . -type d -not -path '*svn*'`; do
    mkdir -p ../../target/classes/$dir
done
cp -r `find . -type f -not -name '*.java' -not -path '*svn*'` \
        ../../target/classes
cd ../..
mkdir -p target/classes/META-INF
cp -f LICENSE* NOTICE* target/classes/META-INF 2>/dev/null
cat > target/classes/META-INF/MANIFEST.MF <<MFEND
Manifest-Version: 1.0
Created-By: Apache Maven Simulator 1.0
Extension-Name: $artifactId
Specification-Title: $shortDescription
Specification-Vendor: $organization
Specification-Version: $currentVersion
Implementation-Vendor: $organization
Implementation-Title: $package
Implementation-Version: $currentVersion
MFEND

cd target/classes
jar cf ../$artifactId-$currentVersion.jar *
cd ../..

echo Installing $artifactId-$currentVersion.jar...
mkdir -p $HOME/.maven/repository/$groupId/jars
cp target/$artifactId-$currentVersion.jar \
        $HOME/.maven/repository/$groupId/jars

echo done