i’m excited about the future of gnome

about half a year ago i was looking around me and seeing stagnation in the gnome community. i was concerned that gnome had lost its momentum and that we were just making boring incremental releases that added very little new functionality.

i think i was very wrong.

i’d like to take this time to list some things that are happening right now in the gnome community that have me very excited. these are the projects that are actively improving the future of the gnome desktop.

many of these things are infrastructure items. i really see this as a fantastic time for the improvement of the inner workings of our desktop. a lot of the things listed below are going to come together with each other very nicely.

it also seems that there is a renewed focus on efficiency and doing things the right way. the past few years have seen a lot of cries of “save memory”, “perform io more intelligently”, “don’t abuse timers”, etc. many of the projects listed below seem to be taking these ideas well into account. many of the projects are replacements for larger and more complicated things.

this is just a list i thought up in a few minutes. i have probably forgotten a thing or two, so please don’t be offended if your project is not listed here.

dconf – hopefully the future of configuration in the gnome desktop.

epiphany+webkit – this is an exciting hack. i look forward to the day where this is stable enough for general consumption. i’d love to see gnome using webkit as its stock ’embed some html’ widget.

gbus – the future glib/gobject bindings for dbus. currently in the very early stages, these bindings will integrate with gobject introspection and make it hilariously easy to put your application on the bus. we currently have a summer of code student laying some of the initial groundwork required to make this a reality.

gdm rework – jon mccann is currently rewriting gdm to better support multiple users. his efforts include consolekit integration and a more flexible greeter system. it was cool to be able to spend a night hacking alongside him at guadec — it looks like some exciting things are on the way.

gtk+/glib awesome – every new release brings exciting new features and moves us closer to removing our dependency on those crufty old libraries that nobody seems to care to have around anymore.

gvfs – by all estimations, a fantastic piece of work. this is currently being hacked on by the one person who would know better than anyone else what is wrong with gnome-vfs. i’ll be very happy when this work appears in next summer’s glib release.pimlico applications – these very attractive-looking applications are designed for use on mobile devices but are very usable in a normal desktop environment. they make me dream of an evolution-free future.

policykit – will allow us to move away from running our administrative applications with gksudo (or equivalent) and toward using protected methods on bus-activated system services while at the same time providing a sane centralised location for system administrators and distributors to control what users are allowed to do.

telepathy – a project that needs no introduction. this is just a fantastic idea and it will make gnome kick ass in ways that we probably haven’t even realised yet. tubes!!

tinymail and modest – i can’t wait to read my email using this stuff. if it’s half as good as that pvanhoof guy keeps saying it will be then i’ll be quite happy indeed.

tracker – and the fact that it is now enabled by default in ubuntu. i hope jamie can handle all the feedback that he’ll surely be getting. :)

vala – i’m not currently hacking on a project for which it would be appropriate, but this looks like it is becoming a fantastic language. when hacking gobject in c you always have this dilemma between doing everything “the proper way” and not giving yourself carpal tunnel syndrome. vala lets you do it the proper way without the stress injuries and without the overhead that accompanies other high level languages.

xorg – may not technically be part of gnome, but definitely shaping the future of our desktop. it was fantastic to be able to talk to the xorg hackers at guadec about features that gnome wants implemented and to hear them say “ok. we’ll try to do that.”. it’s very nice to have a transparent and open team of people working on such an important piece of software.

there’s lots of talk of “gnome 3.0”. “3.0” is just a name. if you look around in the next few releases i suspect you’ll see that gnome has added much more functionality since “2.0” than goes into new “major releases” of almost anything else.

livejournal censorship/suspension fiasco

just something that i feel like i should blog about to bring it to the attention that people who might not have heard about it…

there has been a recent fiasco going on over at livejournal. as near as i can tell this is the rough chronology of events:

a site calling themselves “warriors for innocence” — basically, extreme fundamentalists — started writing letters to livejournal to protest journals and communities that they don’t like and asking for them to be deleted.

livejournal responded to these complaints by telling the fundamentalists that just because something is distasteful, that doesn’t make it illegal. a quote (source: livejournal – pedophile sympathizers):

While the material is distasteful, we cannot take any action. The content falls within the realm of material protected by free speech. LiveJournal attempts to preserve as much free speech as possible for its users, as long as that speech does not cross the line into invading another’s privacy, violating local or federal law, or directly inciting violence or hatred against any specific, identifiable group regardless of whether that group is explicitly named in our Terms of Service. The content of this journal does not meet that criteria at this time.

We understand that many individuals are upset about this matter and we understand that even if individuals can understand the reasoning behind our policies, it is difficult to accept emotionally. We apologize that we are unable to assist you further. We strongly suggest, with the greatest respect, that you should avoid reading the community if you are offended by the premise or contents of the journal.

so livejournal is doing the right thing, right?

the fundamentalists realise that their attack isn’t working and change tactics. they take screenshots of various “distasteful” journals and communities displaying advertisements. they then lobby the advertising companies to threaten to withdraw their ads (source: open letter to six apart, the owners of livejournal).

now money is involved. at this point, the scales seemed to tip and livejournal starts deleting communities and journals that are not illegal and not in violation of livejournal’s terms of service — but merely distasteful.

shitstorm ensues. obviously people are going to be annoyed — and rightfully so. there are communities (of which the appropriately named innocence_jihad appears to be one of the larger ones) dedicated to the protest of livejournal’s actions. supposedly the electronic frontier foundation has become involved.

livejournal starts back-peddling. they have restored a bunch of the suspended journals (while leaving suspended some of the ones that were probably illegal in the first place). the chairman and ceo of six apart (who own livejournal) has issued public apologies on the livejournal news page (permalinks: 1, 2, 3).

livejournal maintains that although their actions were in response to outside pressures, ultimately their actions were their own fault.

We recently received a complaint from outside the community about a number of journals. When we receive such complaints it is our obligation to look into them but it is our standards not theirs that we use to make decisions about the complaints. The source of this complaint was not the source of the problem we created.

i’m not sure how i feel about livejournal at this point. they seem to realise how big of a mistake they made and for that they need to be given credit. i have no real strong opinions here. again — this blog post is only to serve to draw attention to interesting happenings that might otherwise be overlooked.

uds gnome chat

one night at uds i was talking with a couple of other hackers around the pool (company, kikidonk and bkor).

two things came out of this conversation:

1 – we want john fleck back on planet. yesterday, if possible.

2 – people should be allowed to have their own usernames on gnome.org (instead of made-up ones that are different than your account name everywhere else). bkor said that, unfortunately, it was not at his discretion to violate the existing policy for individual accounts and recommended that i blog about it.

i’d like to know who created this policy in the first place and who is responsible for reviewing it. i’d like to know if the foundation board has the power to overturn it.

that is all :)

ps: you hear people talk about how funny it is but you don’t realise it until you actually see it in front of you: “this train is for cockfosters”.

some nice definitions

here are some nice words that i would like to share with everyone

gallant

adj.

  1. Smartly or boldly stylish; dashing: a gallant feathered hat; cut a gallant figure at the coronation.
    1. Unflinching in battle or action; valiant: put up a gallant resistance to the attackers.
    2. Nobly or selflessly resolute: made a gallant attempt to save his friend’s reputation.
  2. Stately; majestic.
  3. # (gə-lănt’, -länt’)
    1. Courteously attentive especially to women; chivalrous.
    2. Flirtatious; amorous.

gnu

n.

Either of two large African antelopes (Connochaetes gnou or C. taurinus) having a drooping mane and beard, a long tufted tail, and curved horns in both sexes. Also called wildebeest.

that is all.

something you might not know about the lgpl

3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices.

problem 1: even if your code says “version 2.1 of the lgpl (and no later version)” this clause opens the door to your code being relicensed under gpl3.

(maybe) problem 2: some vendor forks gtk+ and modifies it. they include the modified version in their proprietary product. they release their changes to the code under gpl (using the clause above). upstream is unable to integrate these changes.

the reason i say “maybe” is as follows: the act of linking against the library and the act of the relicense can be seen as two separate acts. these acts have to be done one before the other.

consider the case of relicense first. in this case you are linking your program to a gpl’d library and the only way that this is possible is if your code is gpl too. ok. this is probably pretty much what rms intended.

now the case where you link to the library first and then relicense. in this case, you made changes to the _lgpl_ version of the library and must release those changes as lgpl?

i guess the question is if someone can sort of atomically gplify the copy of the lgpl’d library that they modified for use in their own product and, by doing so, meet their code-release requirements under the lgpl.

it seems quite ambiguous… i am not a lawyer.

dear lazyweb: svdo? add2? mec? confusion.

so i’ve decided to go all-intel with my new computer. i’ve bought a new case, new memory, a new core 2 duo cpu and this new intel mainboard. the idea is that with the x3000 onboard with dvi output i wouldn’t need to worry about any proprietary video crud.

putting the computer together yesterday i realised that btx is absolutely and utterly incompatible with atx. the mainboard is completely backwards from how you might expect. furthermore, even the heatsink doesn’t attach to the mainboard properly (since the holes are different).

so i have a choice and i think that btx will lose. i *really* like the atx case i have. i don’t feel like buying another heatsink.

so now i think that the mainboard needs to go back. the thing is: i want an intel mainboard with x3000 video and i want it on a dvi port. the reason i bought this specific board is that it has dvi onboard. the only boards that have this (as far as i can see) are btx.

there are, however, 5 suitable atx mainboards with x3000. they don’t have dvi out, but i understand that i can use this svdo/add2/mec thing in order to get dvi out of it. i’m confused, though. there are a lot of acronyms flying around and i don’t know what is what. do i need special software support? will i need to run modesetting branch? i have no idea. different sources appear to have different information.

ideally, someone would tell me “oh, by the way, intel does make an atx board with dvi onboard”. slightly less than ideally, someone will explain to me exactly what i need to do to make this work.

any help is appreciated.

desktop hero: keith packard

earlier today owen pointed me at this post to the xorg list by keith.

the comments in the post greatly clarify the intended semantics of the effect of window redirection on drawing and expose event delivery. the patch in the post also fixes a bug in x.org that has been bugging me for a little while.

bonus points on top of all of this: the fix allows me to remove a timer abuse from my code! (before the fix, my application wasn’t receiving events so i had to manually schedule refreshes of the window content).

keith: today you rock my world.

now all that is left is to (*hint*) get someone to look at the corresponding bug in gdk and to convince the ubuntu guys to include keith’s patch for feisty.

update: summer of code university ads

mizmo’s poster is now done.

you can see the finished result here: http://live.gnome.org/SummerOfCode2007/Poster.

if you were already on the UniversityAdvertisement page then you’ve been spammed accordingly.

if you’re not already on it then please consider posting some copies of this at your university. add your university and name to this page or get in contact with the person already responsible for your school.

gnome summer of code universities advertisement

one of the results from the last two summer of code meetings is that we’re going to run an ad campaign to increase student awareness of the programme (to get a wider range of applicants).

currently mizmo is working on advertising material (a4 and letter b&w posters that can be printed and posted). we want to have people post these posters around various universities.

if you are at a school and can help us with printing and posting, we want your help. please visit the summer of code 2007 university advertisement page on the wiki and add your name (or coordinate with someone already at your school).

some random notes about gtk memory use

yesterday jeff asked me how much memory an applet using the new applet api used so i looked into it. i really only cared about writeable memory.

i was shocked to find out that a very simple applet uses almost 1.5MB of memory.

for comparison i made a few small gtk programs to test. i’m just sharing the results here in case anyone is interested

a program that calls gtk_init/gtk_main uses about 160kB of heap

a program that creates a single window and shows it uses about 250kB of heap

a program that creates a single gtklabel and puts it inside of that window before showing both of them uses ~1200kB of heap

so creating the first gtklabel uses almost a meg of memory. i looked into this and it turns out that a huge chunk of this memory is allocated by pango inside of its opentype handling code “harfbuzz”. the code responsible for the vast majority of the memory allocated in this way is the harfbuzz-gpos code. i have no idea what this code does but if i had to guess, it tells you how far apart two glyphs need to be drawn in order to look right.

i know that recently (december 2006) behdad has been working on this thing called harfbuzz-ng. i sure hope it fixes this problem. :)

that’s all, really.