I got a netbook, a cute little HP Mini, so that I can hack Moblin on it. The netbook comes with Windows 7. My first impression:
Windows is a flicker/blingfest. Everything prelights and fades in and out. Everything has a tooltip that is unreadable because it disappears as soon as you move the mouse into the tooltip. Progress bars have a periodic swoosh-thing that makes me glance at them and wonder whether I missed something important.
Everything has a right-click menu. Scrollbars have a right-click menu with useful options like "scroll up" and "scroll down".
The Start menu has default entries that are ellipsized and you can't see all their text, unless you wait for the unreadable tooltips. Submenus and subpanes and everything seems to flicker in and out all the time.
Norton this, Norton that. It makes you feel like you will be ass-raped as soon as you fail to satiate Mr. Norton's insatiable appetite for... mouse clicks or something.
IE8 came with four or five toolbars. The stock one, the Norton whatever, the My AOL Search (!?), the favorites bar, and an extra helping of buttons that just seem to add clutter for no good reason. Mr. Norton got in the way of installing Firefox, and then asked for my email address so he could ass-rape my inbox, but I succeeded in fooling him.
Maybe we should change free software's slogan to "we are not a constant pain in the ass, and we don't consider you a criminal".
"If you expect to find yourself standing on the corner of Commonwealth Avenue and Massachusetts Avenue in 2050, should you expect the water be up to your navel, your nipples, or your eyeballs?" The inimitable Dmitry Orlov takes another look at global warming and rising seas.
Zeitgeist Hackfest, Monday
The Zeitgeist team and yours truly are in an energetic hackfest in Bolzano, Italy. We are busy cooking the future awesome.
Next door to our hacking room in the school, the Sugar people are having their own hackfest. Sugar has a Journal similar to Zeitgeist's, so we need to share ideas and if possible an implementation of the journal-of-your-stuff.
We have three sub-teams within the hackfest: the Zeitgeist engine, the Tracker metadata storage, and the end-user GUI tools.
The core of Zeitgeist is a daemon that logs events that get produced as you work on your computer. When you open a file, that makes an event. When you view a web page, that's an event. Having an IM conversation, looking at a video, and playing music are all events.
Zeitgeist logs these events and provides an API to query those events for useful purposes. The Journal, of course, shows you a stream of your most recent events. More sophisticated clients can ask the engine questions like, "what applications have I launched within the past week?", "what files have I used for the longest periods of time within the last month?", "which web pages did I visit while editing my-research-paper.odt?".
Seif Lotfy, Ivan Frade, Mikkel Kamstrup, Alex Gabriel, Markus Korn, and Siegfried Gevatter are working on the engine. They are upgrading the format for the engine's database so that it can support more efficient queries, redoing the external API that clients can use through D-Bus to make queries on the engine, integrating support for Tracker as a metadata storage, and improving the contextual relevancy engine. This last bit is the magic that can tell you, "these are the documents/web sites/etc. that you used together while working on a certain project".
Tracker as a metadata storage
Zeitgeist would like to show you various useful things: the tags that you have assigned to a file (School, Work, Pr0n, Travel), the sources for email attachments or for files that you downloaded from web sites, etc. All of that is just metadata that needs to be stored somewhere, and in some well-defined format.
Zeitgeist used to have a home-grown metadata repository, but it will be using Tracker from now on. Tracker is a metadata storage for RDF triplets. An RDF triplet is a subject/verb/object chunk that looks like "my-thesis.odt/has-tag/School", or "lolcat.jpg/was-an-attachment-from/$email_id". Those are just examples; the actual form of those triplets is formalized in the Nepomuk ontology.
Gnome Activity Journal
And they are closing the school right now, and we have to leave, so I'll tell you more about all of this tomorrow. Ta ta!
Zeitgeist started when Seif Lotfy implemented the Journal idea that I presented during GUADEC 2008. With apologies to people who already saw this presentation, I'd like to review some of its ideas here.
Let us start with a few well-known problems with computers and the traditional desktop paradigm.
"Where was I?" Resuming your work
This is a picture of my (non-computer) desk as I found it this morning:
There's a book on woodworking, opened on the page that talks about workbenches. There's a torn-out page with little diagrams of the various things I want in my workbench. There's a drawing pad with another diagram of the workbench I'm about to build. Finally, there is my mechanical pencil and eraser.
Why is all of that stuff on the desk like that? Simply, because that drawing is precisely what I was doing last night. I can resume work by simply sitting down and taking a brief look at what I've done so far.
By contrast, this is a picture of my computer's desktop as I turned it on today, and as I logged in:
There is my panel full of the usual trinkets, some folders and files that I left there ages ago, and some random crap from the system. Nothing there is related to what I was doing the last time I used my computer. There is no way to resume my work except by remembering what I was doing and then by laboriously opening everything that I had open.
Before you yell, "session management!", let me tell you a story.
Starting a journal
Some years ago, after I stopped working on Evolution, I worked for a brief period in the Ximian edition of OpenOffice.org. Before that, I had never worked on such a complex code base. The source tree was huge. Finding your way around it was real hard work. Things didn't make sense to me at first; there were toplevel directories called things like "sc" and "sw", which didn't make sense at all (later I learned that "sc" was the spreadsheet, StarCalc, and "sw" was the word processor, StarWriter).
The actual source files were buried 5 or 6 levels deep inside the hierarchy. The source for large C++ classes was split into multiple files, called something like shrtnm1.cpp, shrtnm2.cpp for the class ShortName — for someone who had not been working with that part of the code for a while, it just didn't make sense.
Back then I was doing simple changes to OO.o, where I only needed to tweak a couple of files at a time. Simply finding the right file to tweak was hard, and after that, I had a lot of trouble remembering where those files actually were — buried 6-down in the weirdly-named directory hierarchy. After a few days of hunting and re-hunting down the same files, I decided to look for a solution. I could never get desktop-save-mode in Emacs to work, so I started a text file to write down the full pathnames of the files I had been modifying. This way, the next day I wouldn't have to hunt for the files again. Eventually I wrote a chunk of Elisp to do that for me, but that's an implementation detail — if you google for "emacs recently used", you'll see that many people have implemented pretty much the same thing.
This made things much better. I could resume work quickly; to open the last file I had been working on, I simply looked for its filename at the top of the journal, as well as related files which I had opened around the same time as that one.
Before you yell, "dude, get a real IDE!", let me continue the story.
The journal evolves
Some time after that, I started annotating the journal of filenames-in-a-text-file, and turned it into a journal of my work. I've been keeping that journal for almost 4 years. This is a sample from yesterday:
2009/Oct/07 10:42 - About to read "In pursuit of desktop evolution" by Ravasio et al - ~/Downloads/10.1.1.96.398.pdf 12:56 - Finished reading and taking notes in ~/Documents/Gnome/design/articles.txt 13:05 - Paid phone bill, $XXXX, transaction 9404. 14:20 - Worked on http://en.opensuse.org/Documentation_cleanup 15:31 - bgo#597101 - gnome-panel does not start anymore (RANDR) - vuntz fixed it 16:39 - @natfriedman: Recommended sites to find rental apartments: homeaway.com, roomorama.com, airbnb.com, seamlesstransition.com. + check why my subscription to opensuse-wiki didn't work + Add autotools to gnome-activity-journal + See if you can help with bnc#329959 - build service doesn't validate project names + Read http://wiki.zeitgeist-project.com/Teamgeist and send comments + Read Finding and Reminding - http://old.sigchi.org/bulletin/1995.3/barreau.html
Every day I type stuff like that: interesting files that I use, wiki pages that I modify, interesting web pages that don't merit a bookmark but to which I want to keep a reference, random notes, snippets from IM/IRC/Twitter, and a few items from my to-do list (the ones marked with a +).
I find this journal to be extremely useful. Interactive search in Emacs (C-s) lets me find stuff instantly: if I was taking notes on something, I hit C-s notes, then maybe C-s a few more times, and I'll end up finding that part where I wrote "taking notes in ~/Documents/...". I put "(RANDR)" next to anything related to multiple monitors, so it is easy to find.
The journal serves me as a reminder of what I've done, as a repository of links to stuff I've seen, as a note-taking device, as a cut&paste repository of interesting bits of conversations, as a very short-term to-do list, and in general as a chronological dumpster of potentially useful information.
But I'm not an obsessive-compulsive note-taker like you
Uh, maybe. Still, it takes really very little time to annotate stuff there, and it doesn't feel like a burden. I can't live without the info in that journal now.
(That journal is also really useful when I have to fill the stupid timesheets that Novell makes us fill every so often — I can see how many hours I devoted to each thing.)
However, this journal is rather pedestrian, especially when it comes to noting down filenames and URLs. The computer could perfectly well do that for me, and still let me add hand-written notes to the items it logs.
Later, more problems with the desktop metaphor and the vision behind Zeitgeist.
Last week, after the openSUSE Conference, the gentlemen in the following picture hiked through the forests and fields of Franconian Switzerland (don't be deceived, that's actually in Germany), with two purposes:
Allow me to introduce you to the members of the openSUSE Boosters team. All of them have Mexican names.
Our purpose is to work on growing the openSUSE community, by eliminating barriers to entry and by enabling people to contribute in the way they wish.
We will be working in two-week sprints, with a model loosely borrowed from the agile programming community. The initial sprint consists of three teams working in three projects:
Centralized, discoverable and comprehensive developer documentation
The openSUSE wiki is a mess. We will be gathering all the documentation pages, sorting them into a meaningful scheme, and seeing what is missing to document the mass of software, processes, and things that form openSUSE.
Pool openSUSE web services under a common umbrella
We have en.opensuse.org and all the other language wikis, software.opensuse.org to download software (which is not the same as download.opensuse.org), users.opensuse.org for the user directory, and other sites... and it's all a big mess. It is hard to find anything from anywhere. We will get all of these together from a place that is easy to reach.
factory.opensuse.org: Entry page for openSUSE:Factory development
Right now it is pretty hard to find information about how to get started with openSUSE Factory, the development version of the distribution. It is also hard to monitor the status of the distribution: which packages build and which ones don't, what the pending projects are, etc. The proposed factory.opensuse.org will make all of this easy to find.
How to reach us
Every team will be working together with existing subcommunities within openSUSE: the documentation team with the wiki masters, the services people with the sysadmins, etc. You can see the page for the Boosters Team for our individual email addresses, IRC nicks, and all that.
After a pleasant nocturnal hike through the mysterious German woods, we did some light painting.
Those are Guille as lbearing and Pedrito as rbearing. You can see the faint ghost of Pablo with the flashlight behind the big E.
So, how did we do this?
First, set up a tripod precariously on a garden fixture. Have Roberto hold the tripod steady.
Second, have two people (Guille and Pedrito) serve for various purposes: set the focusing distance, and figure out the extents of the text so that it will fit within the picture. Both are pretty hard to do when it's pitch dark outside.
Third, have Pablo use his flashlight, and his beautiful aerial handwriting, to paint the text. He used his spare hand plus a sweater to cover the flashlight when there was a jump in the strokes. Remember LOGO? Pen-up? Pen-down? Same thing here. He started painting next to Guille, and tried to fit the text before bumping into Pedrito.
Fourth, take several test shots with the camera in Bulb mode. You can tweak the aperture to give more/less light to the background. I just pushed the button; they did all the work.
Please go and see this video of a prototype sidebar for the Zeitgeist journal. The Zeitgeist hackers are kicking ass!
Check out these two sophisticated clamping techniques: first, rope-and-tourniquet; second, combining all my bar clamps to make a longer one.
New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.
Keep up with the latest Advogato features by reading the Advogato status blog.
If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!