I have a commit access to GNOME svn, so i'm able to do whatever i want with my code, and then commit it. My main free software contribution has been GNOME for a long time.
I've recently started to hack on awffull (log analyser, it's a webalizer fork, but webalizer is dead). I keep submitting patches on the mailing lists, i'm mainly interested in memory usage, which is a real issue with huge logs, and even more on 32bits (allocating more than 2GiB is risky). One of my patch provides a 7% memory usage improvement by using flexible arrays : this saves millions of malloc calls so heap admin / malloc overhead is much lower.
But, even if Steve (upstream) and the mailing list people are great and very responsive, my patches have not been merged yet. I totally understand why they are not already merged, but i have no way to provide my branch to other awffull fans. So i started stacking everything in a local git repository. But now I need again and again to resplit the patches because upstream just can't merge my changes. I now realize how much we need distributed control system (git, monotone, etc). Without it, patches get lost on mailing lists, they get obsolete, they don't apply anymore ... a big waste of work.
With a distributed control system, upstream is able to pull from contributors, merge or cherrypick.
I'm frustrated about awffull, i now better understand how people could be frustrated about GNOME.
I am sorry for everyone (hackers, packagers, etc) who work hard on free software but are unable to (easily) get their job upstream because of the stupid VCS we are still using.
Keyword - monotone
jeudi, 21 juin 2007
we need distributed control system
Par Benoît Dejean le jeudi, 21 juin 2007, 09:39
dimanche, 3 juin 2007
git-merge vs. git-log
Par Benoît Dejean le dimanche, 3 juin 2007, 22:59 - GNOME
I no longer use svn directly for libgtop and system-monitor. I use git-svn instead. I no longer write ChangeLog. But i should because git-merge doesn't seem to preserve revision log. So dear lazy web, how i get the revision log of a branch including all revisions logs comming from merges ? Will it survive branch deletion. monotone propagate can do this but doesn't have a mtn-svn yet :/
mardi, 3 avril 2007
ruby regexp
Par Benoît Dejean le mardi, 3 avril 2007, 15:06
I am working on a bunch of utilities in ruby to process logs and parse hundreds of webalizer reports. I track my work with monotone which runs fine on Windows. I also use monotone to track appliances configurations.
One on my scripts analyses about one thousand of HTTP documents of ~50KiB each. ruby net/http module is perfect to retrieve them. This script is quite slow because of the regex it uses like %r|Foo.+?<B>(\d+)</B>(?:.+?Bar.+?<B>(\d+)</B>)*|m. But as the script runs every night on my desktop, I don't really care if it takes 10 seconds or 10 minutes. It is clean and easy to extend and that's what matters to me.
I have found that slow regexp is a common ruby issue : here's a simple demonstration. More details about regular expressions performance.