Recent blog entries for federico

24 Jul 2008 »

Wed 2008/Jul/23

  • I'm writing a little utility that generates Git repositories from some unpleasantly-formatted data. The test suite for this was really simple to write: you can simply ask git, "give me the SHA-1 hash that you have for the content" at the end of the test run (i.e. "git-cat-file -p HEAD" and parse out the "tree" hash from there). If the obtained hash matches your expected hash, then you know the test succeeded. This is much easier than comparing all of the expected/obtained content by hand.

Syndicated 2008-07-23 19:03:00 from Federico Mena-Quintero - Activity Log

22 Jul 2008 »

Tue 2008/Jul/22

  • Document-centric GNOME

    Here is my presentation from GUADEC: Document-centric GNOME (ODP).

    Document-centric GNOME

    The code for document-centric Nautilus consists of the journal view and the Nautilus extension interface for journal providers. This code is not finished yet (nothing gets displayed to the screen; it's all engine code), but you can take a look here:

    git clone git://gitorious.org/nautilus/mainline.git nautilus-document-centric

    The master branch contains the document-centric code, which is built on top of nautilus-2.22.2. You can also visit the Gitorious repository for document-centric Nautilus and create your forks there.

  • John Anderson has posted a great little tutorial on Nautilus tips and tricks. Life-savers for me: the list of keyboard shortcuts and enabling the "advanced permissions" view.

Syndicated 2008-07-22 12:42:00 from Federico Mena-Quintero - Activity Log

16 Jul 2008 (updated 16 Jul 2008 at 20:08 UTC) »

Wed 2008/Jul/16

Syndicated 2008-07-16 12:07:00 (Updated 2008-07-16 20:08:34) from Federico Mena-Quintero - Activity Log

3 Jul 2008 (updated 3 Jul 2008 at 20:04 UTC) »

Thu 2008/Jul/03

  • Mario Ðanić has another interesting post about distributed version control systems. He proposes that each developer (or at least, every maintainer) could use the DVCS of their choice, but then we could have a common web/collaboration interface to all the DVCSs.

  • My current favorite way of developing against a stable release:

    $ cat ~/bin/make-nautilus
    #!/bin/sh
    module_name=nautilus
    diff_name=~/suse/11.0/src/SOURCES/nautilus-document-centric.diff
    anchor_name=OPENSUSE_11_0_PATCHES
    branch_name=document-centric
    cd ~/src/$module_name
    git diff $anchor_name..$branch_name > $diff_name
    cd ~/suse/11.0/src/SPECS
    if rpmbuild -ba $module_name.spec
    then
        cd ../RPMS/i586
        gnomesu rpm -Uvh --force *$module_name*
        notify-send -t 0 "$module_name is installed now"
    else
        notify-send -t 0 "$module_name doesn't build!"
    fi

Syndicated 2008-07-03 11:29:00 (Updated 2008-07-03 20:04:30) from Federico Mena-Quintero - Activity Log

26 Jun 2008 »

Thu 2008/Jun/26

  • John says:

    The main reason [why git-mirror.gnome.org doesn't make git.gnome.org any easier] is of course the polluted logs (filled with git-svn rev id metadata). I would resist any module having a Git repo with such ickyness in its history.

    This is a non-issue. Ruby on Rails used to be hosted on Subversion, and then it switched to Git. To do the conversion, they simply used git-svn. You can do "git clone git://github.com/rails/rails.git", then "git log" and search for "git-svn" in the output in order to find the git-svn metadata.

    You'll see this:

    ... git-based development goes here ...
    
    commit 67022671bfa28d5675a30925a8d1e271c576f4d2
    Author: David Heinemeier Hansson <david@loudthinking.com>
    Date:   Thu Apr 10 22:09:13 2008 -0500
    
        Testing commits
    
    commit ed99dda174da439a0947cdabea3babf027c672ac
    Author: Rick Olson <technoweenie@gmail.com>
    Date:   Thu Apr 10 18:06:05 2008 +0000
    
        Change validates_uniqueness_of :case_sensitive option default back to true (from [9160]).  Love your database columns, do
    n't LOWER them.  [rick]
        
        git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@9248 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
    
    ... svn-based development went here ...
    	    

    So, in the commit logs, you have everything since $beginning_of_time until $switchover_date with the git-svn-id strings, and everything after that without any such garbage, as would be normal for "plain" git repositories.

    Having that metadata in the log actually provides valuable information.

    If you have to do code archaeology (which Eric Sink calls "traceability"), then the commit log will tell you when the svn->git switchover occured. Before that point, you know that any branches are dead-ends and merges are funny (svn didn't handle them).

    You'll know that before the switchover point, information about code attribution will not be 100% clear, as you couldn't specify --author in an svn commit (so you'll perhaps have to look at the actual ChangeLog and hope that the committer was kind enough to say "original patch by $author").

    When you do a conversion between revision control systems, you keep the old system around in read-only mode for if anything goes wrong. It's nice to know that if we ever need to check something in the original SVN repository, we'll have the SVN revision numbers from the git-svn metadata.

    Finally, the git-svn strings in commit logs will disappear really quickly from your everyday view. They just appear further and furter back in time, and you seldom look at those commits, anyway.

  • Mario Ðanić has been investigating about adapting Gitorious for KDE. He says he would be happy to talk to people who would like to adapt Gitorious for GNOME's needs as well. Among other things, Mario is working on the Summer of Code to write a GNOME client for the openSUSE build service.

Syndicated 2008-06-26 10:55:00 from Federico Mena-Quintero - Activity Log

25 Jun 2008 »

Wed 2008/Jun/25

  • Git-mirror.gnome.org is AWESOME and John Carr deserves large amounts of beer for it. The git-mirror has already saved my ass twice this week ("Where is this patch in trunk? Was it backported to the stable branch?"). Now that we actually have full Git repositories of GNOME, we could easily move to using Git for everything.

    Søren, Bryce, James, and myself had a pretty productive time hacking on support for RANDR 1.2 in gnome-desktop, gnome-settings-daemon, and gnome-control-center, all in Git repositories.

    Gitorious is like a free version of Github: you can create public Git repositories in a central server, push to them, and monitor who clones your repositories. Later those people can inform you, "I have some cool stuff in my repo; you should fetch those changes from it". Or you can say the same to them, and Gitorious/Github will notify the people in question. This is far, far more productive than monitoring an svn-commits-list or similar.

    Gitorious is hosted in a Gitorious installation itself, so you can of course "git clone" is source code. It would be reasonably easy to use this in GNOME's infrastructure, and it would automatically let module maintainers communicate better with contributors (and allow contributors to play with experimental branches without disrupting the maintainer's work).

  • ... Which reminds me, if you are tired of wasting your time with Subversion, be sure to attend the BoF on distributed version control systems at GUADEC, where Behdad and yours truly will delight you with our widely-acclaimed acrobatic act.

Syndicated 2008-06-25 12:37:00 from Federico Mena-Quintero - Activity Log

26 May 2008 »

Tue 2008/May/20

  • This year I am mentoring two students for the Summer of Code:

    Andrei Soare is working on measuring memory fragmentation in the GNOME libraries. The idea is to find the main culprits for fragmentation, and see what we need to do to fix them (use more stack allocations? provide substring APIs that can take a buffer and a length, instead of g_strdup()ing temporary crap everywhere? use flat buffers with pointers into them for static structs rather than structs full of pointers to individually-allocated sub-buffers?). Andrei's code is available as a Git repository. So far, he has a modified version of of Stefan Kost's bprof, suitable for use with Stuart Parmenter's memview. Andrei has found a few bugs where we do things like using g_free() on a malloc()ed buffer, or vice-versa. I hope he starts blogging his first fragmentation plots soon.

    Stanislav Slušný is working on profiling the calendar in evolution-data-server, in particular the engine for live queries. The query engine is very simple; it just iterates through all the items in a calendar and returns the items that match the query. We think that most queries are of the form, "give me all the items in $date_range", so the query engine could use a smart data structure like an interval tree to avoid scanning all the items. So far, Stanislav has added a logging mechanism to evolution-data-server so that we can see which queries get performed (by Evolution itself, the panel's clock applet, and various things across the desktop), and how long the queries remain active. This is available in a Git repository. Stanislav showed me a couple of pretty sexy plots of query lifetimes; let's hope he blogs about them soon.

Syndicated 2008-05-20 21:02:00 from Federico Mena-Quintero - Activity Log

22 Apr 2008 »

Tue 2008/Apr/22

  • And now for a gratuitous baby picture.

    Luciana in the ladle

Syndicated 2008-04-22 10:50:00 from Federico Mena-Quintero - Activity Log

17 Apr 2008 »

Thu 2008/Apr/17

Syndicated 2008-04-17 15:26:00 from Federico Mena-Quintero - Activity Log

25 Mar 2008 »

Tue 2008/Mar/25

  • Projects for Summer of Code 2008

    This year I will mentor at most two of the following four projects:

    Making evolution-data-server's calendar smaller and faster (for GNOME). E-d-s was written in the very early days of Evolution, and it needs some profiling love. In this project you will profile the calendar part of e-d-s to make it use less memory, and be faster as well with an optimized query engine.

    Reducing memory fragmentation in GNOME (for GNOME). The GNOME platform libraries do many allocations of small objects. Your task will be to do an analysis of memory fragmentation, similar to what was done for Firefox 3.

    Making removable hard drives Just Work(tm) (for openSUSE). Currently, when you plug in a blank hard drive through USB, nothing happens. The device node gets created in /dev/sdb or whatever, but you don't see anything happen in your screen. Your task will be to improve things around HAL, PolicyKit, and gnome-volume-manager to detect this situation, and to make the right thing happen.

    Reliable unmounting of removable media (for openSUSE). When you want to unmount or eject a removable volume that is being used, you get a meaningless error message. There is no way to know which programs are still using the volume. Your task will be to make GNOME tell you which processes are using the volume, and give you a chance of killing them.

    If you are a student, please see GNOME's very nice page on information for students. This will be useful to you even if you choose one of the projects for openSUSE. Don't miss out on this great opportunity to become a well-recognized member of the free software community and win USD 4500!

Syndicated 2008-03-25 12:30:00 from Federico Mena-Quintero - Activity Log

104 older entries...

New Advogato Features

FOAF updates: Trust rankings are now exported, making the data available to other users and websites. An external FOAF URI has been added, allowing users to link to an additional FOAF file.

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!