Playground Patches

Today I was thinking, “Wouldn’t it be nice, and save me quite a bit of time, if when you look at a patch on Bugzilla, there was a Test link next to the Edit and Diff links?  And when you clicked it, it would apply the patch to trunk, and if it worked it would configure and make it and then drop you to a shell so you could see what had happened.”  So I made it.

What you will need:

  • Firefox.  Anyone wanting to port this to Ephy is welcome to do so.
  • A suitable build environment for whatever module it is.
  • A svn account.  You can’t do this anonymously, but only because I didn’t write it to do so.  (See below.)
  • gnome-terminal
  • wget (I would worry if you didn’t have this)
  • svn.  I wanted to make this use bzr-playground (hence the name) but I decided to make it use svn to begin with.
  • The actual Firefox extension itself.  You can get it here, but save a copy to your local disk and then open it up in Firefox.  You will have to restart when you install it.  This will also give you the opportunity to go into the XPI and have a look around. Did you realise that XPIs are just zipfiles and you can go in there, change them, rezip them, and reinstall them, and it’ll just carry on working?  You should.
  • A bug with un-applied patches on it.  Here’s one that I am going to get to on Sunday night or Monday, so try “Edited Patch” from there.

Things it should do in the future:

  • Have preferences, and let you specify that you don’t have a svn account.  Also, whether you want to use svn or bzr-playground. (Actually, you can do this for yourself already, by unzipping the XPI, modifying the commands, re-zipping, and reinstalling.)
  • Be clever enough to note who uploaded which patch, and store the information in a hidden file in that directory.  Then there would be a commit script which figured out what to put in the ChangeLog, commit message, and (for bzr) –author switch accordingly.
  • Not be a toy that Marnanel threw together in a few hours.

Warning:  If you run “Test” on the same patch twice, remember to delete in between;Playground Patches doesn’t do this for you in case it overwrites your work.  If you don’t, the patch will be applied twice, which won’t work.

Credit: This started out as a Greasemonkey script (for the sake of easy editing) until it was advanced enough to need XPCOM, and was then originally compiled to an XPI using the arantius.com Greasemonkey compiler.

I love this planet (in homage and parody)

NASA Endeavour (by NASA)

A free desktop… where anyone can help out.
Yep.

It kinda makes you want to…
Contribute patches?

I love the coders,
I love the Guadec folks,
I love translators,
I love the planet jokes,
I love the GNOME world
And all its GTK,
Boom de yada, boom de yada, boom de yada, boom de yada…

I love the D-Bus,
I love Epiphany,
I love Anjuta,
I love Metacity,
I love this desktop,
It’s such a people place,
Boom de yada, boom de yada, boom de yada, boom de yada…

Parchment

HOLY CRAP SOMEONE HAS FORKED GNUSTO
IS THIS NOT SO COOL
THIS IS SO COOL
THANK YOU WORLD
the end.

Update and explanation, now I have calmed down a bit: In 2002 I wrote a program called Gnusto. It took game programs written in the eighties and translated them into JavaScript. This meant that a browser could run them. But then I discovered that the difficult part was the user interface, in other words actually doing the windows and text and so on on the screen, rather than making the game work. In those days it was a weird black magic to make web applications work on IE and Mozilla, so I specialised it into a plugin for Mozilla (i.e. Seamonkey), and then Firefox. At about this time Eric Liga came along to join the team, and that is how we all originally got to know one another.

But then Firefox 2 was so different from Firefox 1 that the user interface needed to be practically rewritten, and I didn’t really want to take on the work, and although Eric tried some things out I don’t think it ever ran as well as it once had. And then Firefox 3 came along and things were all over the place. So Gnusto doesn’t run much any more, which is a shame for something which had at least a year of development time put into it.

Anyway, we talk a lot about Free Software. Some people suppose it means software you don’t have to pay for. It doesn’t mean that: it means software which grants you certain freedoms. One of those is the right to change the way it works and make that into a whole new program, which is called “forking”; this right is often called “the right to fork”. Last week someone announced he had forked Gnusto into a new system called Parchment, which will let you play any of these hundreds of games on the web with almost any modern browser. People took what Eric and I had done and mashed it up and made something beautiful with it. That is the power of freedom. That is why I’m happy.

Sous les pavés, la plage.

I’ve been working at the new job for a week now, and I’m enjoying it a good deal. The coworkers are friendly and the work has a lot of new challenges. I’m not sure how much I’m allowed to blog about. I’ll find out.

I spent a good while playing Packrat cooperatively with Fin this evening.

I have started microblogging over at identi.ca, which is synched to my twitter account. There are two reasons I’m using identi.ca rather than any of the dozens of others: firstly, its engine, laconi.ca (which somehow my brain keeps thinking has a far more interesting name) is free software and you can modify it or run your own; secondly, it uses an open protocol based on XMPP (like Jabber) so that anyone who wants can run their own microblogging site and join a big distributed network. It will be interesting to see how this develops.

There’s a fair to celebrate the Fourth of July, and we went there yesterday. After about an hour the entire field had a power cut, and there was brown smoke going up in the air from one corner and an acrid smell. The field was full of people groaning with disappointment. Five minutes later the power came on again, only to fail once more soon after: it kept doing this for four or five times. In the end they gave out cards if you’d arrived recently enough to let you come in free another time.

The Fourth of July fireworks in neighbours’ gardens are also making the dogs around here bark. There are some interesting Metacity bugs I’m working on, but I think I’ll get an early night.

And! Happy birthday to Carmen, who is of course one of the most awesome and special and wonderful people in California or anywhere! Many many happy returns.

Link soup:

New beginnings

Chicken green curry(I used to make a post every day about my life. What happened to that…?)

I said goodbye to my old job on Friday and I’ll start a new one tomorrow which is closer to home. It’s also doing more the kind of things I want to focus on, which will be interesting. My coworkers took me out to a place called Wild Rice in KoP for a goodbye meal.

Today, we went to Shupp’s Grove, but I didn’t get anything. The best part was stopping at Boehringer’s ice-cream stand on the way back, where I ate a turkey sandwich and no ice-cream, and forded the shallow anonymous stream with Rio, although I should have taken my boots off first. The ducklings are almost fully-grown.

I’ve been doing a lot more Metacity work recently than I have for weeks; let’s hope it continues. I’ve done some refactoring and commenting over the last few days, and today I fixed GNOME bug 92867 (theme viewer shows theme name in titlebar) and GNOME bug 430198 (allow toggling of non-composited minimise effect in gconf). They’re not major, but they’re progress.

One of our trees, a great and heavy oak, fell in a thunderstorm the other day, narrowly missing our house. It hit a maple on the way down which deflected it, although the maple was hurt in a rather self-sacrificing way. When the tree people came to clear it up it turned out that the oak was rotten to the core and dead inside. Not a work of art, but…

I thought  I saw an execution there.
The fascinated public gathered round.
The cheerful hangmen stripped the victim bare
And built their gibbet high above the ground.
The rope was taut, my wildness filled with fear.
I saw him fall.  I heard his final cry.
Yet when the hangmen left I ventured near
To find my fault: I’d never seen him die.
In fact, I think he’d died some years ago.
There’s blackness of decay in every breath.
The sound of flies was all that’s left to grow,
Now free to come and feast upon his death;
Prince of the trees, I have a simple plea:
I will not die till death has come to me.

This is perhaps a silly question

Photo Hunt: Word List #15-Mother/Daughter HandsIs there any need for us all to switch to the same DVCS, as long as we all switch to something that jhbuild understands?  It’s a huge, huge job to convert the whole of GNOME from one VCS to another, as I’m sure everyone who was around at the time we switched from CVS can attest, but it’s less of a vast job to switch between VCSs for one project.  So perhaps we can all stop attempting to convince the whole Foundation and start just trying to convince one group of maintainers; that seems more likely to happen, since the groups are far smaller.  Then later if a project decides it wants to change to another DVCS, we’ll have a lot of good information to help it do so, and changing DVCSs isn’t really all that hard, is it?  And in the end perhaps we’ll reach a consensus.  Where would the bzr/git/hg repositories be kept?  I don’t know.   Maybe there could be an official GNOME place to keep them; maybe people could make use of launchpad or github or repo or freehg or whatever for now.

I think this turned into a bikeshed discussion a while ago.  Maybe some tools are slightly better or worse than others, but I think any of them would be better than none of them, and I’d like it if everyone could get on with making awesome software rather than wasting energy arguing about where we keep it.

And now another subject: People were asking questions about how well Metacity co-exists with AWN.  Someone (I forget who, sorry) was saying it works very well, and I have been playing with it and can confirm this.  I also think AWN is very nifty and will probably continue using it.  I’ve also been playing with Anjuta, and it’s rather nice.  I wasted quite some time trying to get its GtkSourceView plugin to work: stick to Scintilla for now.

I should also tell you what’s going on in my life in general, but I am busy.  Later.

And now, some other links, while I’m here:

Photo by Judy Baxter, cc-by-nc-sa.

Thomas Thurman does not like cold meals because of broken applications

Cimi says that we have a large userbase and a small number of developers, and the key to continued survival is to have more of the users become the developers.  Then we have new blood, and new ideas, and also some help (good grief, I could clone myself four times over and still work full time on some of the work I have around here).

I have often wondered what it is that stops people crossing over from being users into being developers.  Here are some thoughts I’ve had:

  1. Not understanding “free”.  I once saw that someone complained about Wikipedia because the version in his language couldn’t even get the word for “free” right: they’d used the “as in freedom” version, and he had an assumption that “the free encyclopedia” meant “the encyclopedia you don’t have to pay for”.  Similarly, when I was downloading a particular program with Rio last night and I explained to her what GPL meant, she got very excited and said “cool! Can I give it to my best friend at school?  And we can make a version which looks like this or that!”.
  2. Not being a hacker. The other day Fin was somewhere getting lunch with a group of people and there were no forks;  Fin picked up two wooden stirrers from beside the coffee machine and used them as chopsticks.  All the other people in the group were amazed at this ingenuity.  This is the sort of thing I mean: some people are content not to figure out ways to improve the stuff they’re given and rethink the fundamentals. It’s the sort of thing that RMS called “creative playfulness”, and some people are content not to have it.
  3. “But I’m not a programmer”.  Some people, creative people who would otherwise do well, think of themselves as non-programmers and so don’t get involved.  But we need more than just programmers to get involved– we need artists, copywriters, testers, triagers, sysadmins, coordinators.  At least, we say we do, but I think there’s a public perception that to be a real GNOME person you need to be a programmer; I wonder if we went down the membership list of the Foundation and checked how many people were coders whether there’d be an obvious disproportionality.  Something that struck me today was Mårten Woxberg mentioning the proliferation of Metacity themes; I think we see so many of them because they’re something relatively harmless and easy for non-programmers to modify, and they really have got the idea of free software about the right to share and the right to fork that only far more rarely happens with real software.

    Secondly, however, it is hard for us to remember that coding isn’t just something you can sit down and do, especially writing patches. We programmers have a fair amount of training merely to be programmers, and we take that for granted. Look at the willingness people have to contribute to Wikipedia, where the bar to entry is far lower (you might also say that the quality is lower too, but maybe we have better QA).  What is the solution?  Can we identify creative people who aren’t programmers but who might want to help, and help them become programmers somehow, not solely so they can have A Lucrative Career In Information Technology™ as my radio keeps telling me but so that they can help the world?  Some kind of course, perhaps including work on actual GNOME programs as a project?  Maybe we can join forces with an existing distance-learning institution?

  4. “But it’s all so huge! Where do I fit in?” (And hey, Rob, I promised you an essay about this a few months ago.  It is coming, when it’s ready.) When Mozilla’s first public release was made, I decided I wanted to help even though I’d never worked on free software or on a collaborative project that large before.  So I checked it out of CVS and started looking around.  After a few hours I started freaking out at the size of it all (who was it who called it a code-katamari?) and ran away and wrote my own little projects for the next eight years or so.   In the GNOME project, we do actually have a place for this to happen, GNOME Love, so we’re actually doing pretty much okay on this point.  It certainly helped me fit in with GNOME.  (If there was such a place for Mozilla back then, I apologise; I never did find it, though).

    I suppose the existing GNOME Love can always use improvement, but something I’d really like to see is a sort of Job Centre for all free software.  I’d like to be able to say “I need someone who knows about P to help out on Metacity and I’m willing to help them with Q and they will learn useful things like R and presumably gain XP on the system”.  And then someone could enter all the things they knew about, and the stuff they wanted to learn about or have appear on their resume, and it would email them when things came up.  Maybe this is something Canonical could fit into Launchpad somewhere.

Any more reasons than these why people don’t dive in?

Metacity overview: drag and drop

A new, long explanation in the Metacity blog about why it’s actually rather hard not to raise the lower window when you drag from it to the upper, in case you read planet but not the Metacity blog. GDK hackers are particularly invited to read it. I had to do quite a lot of research and sifting of the original sources to write this and it felt like I was back in grad school for a bit, but if there are any mistakes I really do welcome corrections. And all comments are welcome, of course.