Older blog entries for CharlesGoodwin (starting at number 23)

Well, after reaching a complete impasse of how to proceed with Ibex, we (all the developers bar the main Ibex developer) had to fork.

There's not even been a beta Ibex release (version Nitrogen), only a release under it's old name XWT and that was a year ago (version Lithium). And we were told by the main developer to drop Lithium because Nitrogen was only 2 months away and we should be stress testing it by writing widgets.

Well, 100s of bugs, lots of testing, and years of man hours later the guy says to us, "Nitrogen should not be considered stable enough for writing widgets". WTF? That was the last straw... as if the unscheduled updates, the refusal to answer basic API-change queries, and the refusal to sanction a stable release ASAP in favour of yet more pissing about with the core code, and much more than I care to mention here all just wasn't enough.

So last Monday we forked. A beta release by the end of next week. A stable release in the next 3 months. Lots of documentation, lots of activity, lots of public noise.

It's current (and probably final) name is Vexi.

And just to describe the kind of infuriating tasks we suffered under Ibex, I've spent the last week (a whole week of man hours) tracking down and rewriting bits of one of the main Java classes in order to eliminate some terrible bugs. And this code I'm replacing is code rewritten in the last 2 weeks by said main developer. Not tested, not thoroughly thought through, just imposed on his community. And he accused us of trying to blackmail him when we said, "if you're not going to be more diligent, we're going to fork." Well we have and this is the last time I'll have to mop up his mess.

The guy is a great coder, but he doesn't appreciate people enough and he doesn't understand that for a community to build up you actually have to release software. Releasing the perfect software may be a utopia, but you're better off releasing imperfect but good software than nothing at all.

Too busy coding to blog... ;-)

Wow, I'm feeling overwhelmed by the coolness of our Free Software world.

The XOrg X11 v6.7 server was released today. Finally, forward moving X11 development of the (not horribly licensed) XFree86 codebase unhindered by the ridiculous politics of the XFree86 project. (It also seems to be achieving everything the Xouvert project set out to achieve - cutting out the deadwood and using libraries already installed on a system rather than bundling the preverbial kitchen sink.)

The next 12 months will be very good months for Free Software, especially Gnome which is really impressing me every minute that I use it. So many motivated, excellent hackers.

Then of course there's the jewel of the crown - Linux 2.6.5 rocks for me.

From strength to strength... the future is bright. The future is Free!

Wow, a massive wave of Ibex activity over the last few days. I've literally not had time to blog!

Some good activity (David finally produces his text widgets which rock), some welcome activity (Adam answers emails and becomes active), and some really unwelcome activity (Adam decides to rewrite grid layout using "linear programming problems").

I guess you have to take the bad with the good and deal with the consequences. That or fork. And nobody wants to fork, especially when a community is just burgeoning. I wish Adam would be more responsible if he's going to manage the project. I mean, it is his project but if he's going to commit ad hoc with some awful patches yet ignore some really good ones, compounded by sporadically being online, there's going to be problems.

Put bluntly, I haven't used the main core sources for over 2 months as they have not worked. There are still problems. If us developers are forced to use cutomised sources in order to make progress, it's only a matter of time before a fork occurs.

I don't think he appreciates this, nor cares about it.

Still, I hack onwards using my customised core without this silly linear programming business in it. Yes it might be useful for the future, but 1) he could have spent 10 minutes fixing the current implementation and had it "good enough" to use and more importantly 2) he could have created another patch repository for the simplex linear programming patches, a power given unto us darcs users. What good are the official sources if they're not usable?

Problem is, he only cares if it's his time wasted. Why is it that really intelligent people are often so damned inconsiderate?

*grumble grumble grumble*

Another late night, another load of work done.

Speeding up the Ibex core

Tupshin and I got into looking hard at ways to optimise the Ibex core. Currently Ibex does two things very inefficiently and it's amazing that it runs as quickly as it does.

Firstly, it calls repack(), resize(), and resize_children() (the 3 Box.java functions that handle layout) far too often even for trivial things like mouseover. Making these only occur when necessary will speed things up significantly.

The second big inefficiency is that repack() is dumb. (This probably applies to resize() and resize_children() but I've yet to get that far.) A call to repack() repacks a box and it's child boxes regardless of if it is necessary. A box should only be repacked if 1) a child has been added, 2) a child has changed colspan/rowspan, 3) a child has resized, 4) a parent has resized, 5) the cols or rows property has changed, or 6) the box has resized. Even then that can be improved upon significantly.

Once the above two inefficiencies are fixed, Ibex will fly at layout and probably out-perform native applications. That will really piss off the Java-is-slow crowd. (Don't tell them that eventually native binaries through GCJ may well be OpenGL accelerated. Sheesh, they'll have heart attacks.)

The Widgets

The widgets are starting to come together for Ibex. I've done most of scrollbar, and will be testing that wil scrollpane tomorrow. I've encountered a bug or two but nothing that cannot be worked around.

What is good is that this is really road-testing all the widget libs and I'm ironing out any problems and creating more as needed. I love dog-fooding sometimes, it gives you a good sense of progress and satisfaction.

I'm hoping to have a good set of widgets finished up by the end of next week. To do by then: finish scrollbar, slider, spin, and implement combo, option, and text. I'm looking forward to it. Ibex will then be officially usable if still somewhat beta.

Core grid layout

Amazingly Adam also relented on my patches to the core for grid layout behaviour. He claimed they were bad and that his original implementation was right, and that I should reread the Ibex reference. So I did, and ironically my modified core was far closer to the reference than the original implementation. Cool, I just outsmarted a genius. Probably won't happen again!

I posted a proposal to the core mailing list to describe my implementation and how, conceptually, it differs from the reference description of Placing. Drop the word 'cell' from the reference description and the only difference was really on how to deal with boxes with span.

I really want to hack on Box.java some more. It's very satisfying seeing myself make improvements on something written by somebody as clever as Adam and is certainly boosting my ego.

But no point improving on something unused. I have to get the widgets up to scratch and write some documentation and tutorials before working on it some more. And I'll probably have to redo the website. Am I the Ibex lackey or what? :-)

GNOME Office

I've really neglected the GO website that I've been doing. It's getting done but 'oh so' slowly. When I do finish it I'll owe a big apology to Dom, Jody, Rodrigo, and all the other diligent GO hackers.

In more humourous news, Dom gets 1st place for the best April fools joke. I really enjoyed that, which is unusal for an April fool. They mostly so poor and pointless.

The worst April fool award goes to the Exult team. That was awful and just plain not funny. It was probably a private joke.

30 Mar 2004 (updated 30 Mar 2004 at 03:36 UTC) »

Another busy day today. Fortunately I had a really good sleep last night, meaning I was fully recovered from a weekend of stupid drinking with old friends. I say stupid... I'd do it again and will do it some more in the future. Still, if we didn't do stupid things then we'd probably never have fun.

Being paid to work on Ibex is cool. It's a dream come true for this period of my life. I've started using an ancient app for time keeping called Time Tracker which was last updated in 1997! I did first try GnoTime but it crashed on me twice in less than 60s of usage. Thanks but no thanks. Makes me believe we should all have to dog food with our projects. Still, it looked potentially really good and I look forward to trying it more in the future.

I saw The Passion of Christ last Thursday. Gruesome. It was strangely lacking in anti-semitism given the extent of the complaints, so I felt compelled to start a forum thread about it to see if anybody would justify any anti-semitic claims. [EDIT - found an excellent overview of some of the Biblical discrepencies in the movie.]

Lots of coding to be done. I've almost fixed Box rendering and then I have widget coding to be doing. I spent a few hours last night and today setting up bugzilla over SSH for my employer which was interesting. RH9 dependency hell is not fun, especially when things like perl modules often come in differently-named packages. I'm happy with my Gentoo. Emerge!

25 Mar 2004 (updated 25 Mar 2004 at 02:04 UTC) »

If you have yet to, you must read Edd Dumbill's take on the platform integration with Gnome. (Y'know, the subtle Mono vs. Java vs. Parrot flamefest.) It's inspired. Absolutely inspired. And it is 100% the approach the Gnome project must take to ensure future success.

In my own hacking news, I did some sterling work on understanding the Ibex core in order to fix a bug or two. The Ibex core is quite a complex beast and I'm quite proud of myself for coming out the other side with only a few cuts and bruises with all my limbs intact.

Sadly I've not done nearly as much on the GNOME Office website as I should have done. Given that I'm afk Friday evening through to Sunday night, that'll probably not happen until next week. "Next week" again? Tomorrow seemingly never comes. (But it will!)

Oh, and apparently us Europeans are, "assaulting a successful American industry and policies that support [US] economic growth." by fining Microsoft for illegally abusing it's monopoly in order to gain and maintain their stranglehold on the market. Microsoft has made $100s of billions... if anything I would have thought the $700 million fine was a little low. Then again, I'm not a Democrat candidate for the state of Washington; home to the giant company.

20 Mar 2004 (updated 25 Mar 2004 at 01:53 UTC) »

I'm not sure quite how to state how awesome Gnome 2.6 is.

It just has a lovely feel to it. Things feel snappier, more polished. The interface is so clean (although so was Gnome 2.4) and things work really well.

Nautilus is so fast... is it really Nautilus? I think they kidnapped Nautilus and put his physically superior twin brother in there.

GStreamer just worked. (No configuration craziness!)

In other awesome news, what is sure to be an open source darling for years to come got an update today: The Battle for Wesnoth

Warning: don't follow that link if you value your productivity for the next week or two. And don't install the addictive Solarwolf either, another excellent open source game. In fact, there are so many great open source games; we should appreciate them more... Freeciv, Vegastrike, Boson, Stratagus (formerly Freecraft), Freecnc, Simutrans (not open source, but fun nonetheless), Pingus, Trackballs, Neverball, and many more.

Unsurprisingly, updating Gnome whilst using Gnome does funny things to your desktop experience.

Learnt enough XSL today to actually do something with it. I can't understate how awesome libxml is, the tools it provides are high quality and invaluable for any XML work.

I also made some progress with Ibex today. A few patches to the core have helped but instead I concentrated more on the structure of the widget code and made some decisions that should improve working with themes.

And a surprising but welcome development on the "how does one make money from working on Free Software" front when I received an informal approach to be paid by the hour for working on Ibex, from somebody who has been monitoring the project's progress. I really hope something comes of it.

On another note it's 2:24am. I see that staying up all night Monday really fixed my sleeping pattern. Perhaps I should just try pholyphasic sleep cycles instead. (Yeah, right.)

Just saw Mark McLoughlin's post about adding wireless support to gnome-netstatus which is cool. Calum did the UI but I wonder why the '100%' is to the right of the indicating bar graphic. Shouldn't it be to the left for English (and other left-right reading languages) since that's where our eyes naturally look first?

I wonder if that's part of the Gnome HIG. It probably is and, if in the unlikely event it isn't, probably should be.

14 older entries...

New Advogato Features

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!