CharlesGoodwin is currently certified at Journeyer level.

Name: Charles Goodwin
Member since: 2004-02-28 10:44:13
Last Login: 2009-02-18 11:38:41

FOAF RDF Share This



Lead developer for Vexi, author of Free Gamer, and generally an open source enthusiast.


Recent blog entries by CharlesGoodwin

Syndication: RSS 2.0

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 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 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.

19 older entries...


CharlesGoodwin certified others as follows:

  • CharlesGoodwin certified lerdsuwa as Journeyer
  • CharlesGoodwin certified CharlesGoodwin as Master
  • CharlesGoodwin certified hub as Master
  • CharlesGoodwin certified ffrederick as Journeyer
  • CharlesGoodwin certified wlach as Apprentice
  • CharlesGoodwin certified mpesenti as Master
  • CharlesGoodwin certified cinamod as Master
  • CharlesGoodwin certified nymia as Apprentice

Others have certified CharlesGoodwin as follows:

  • lerdsuwa certified CharlesGoodwin as Journeyer
  • CharlesGoodwin certified CharlesGoodwin as Master
  • hub certified CharlesGoodwin as Apprentice
  • wlach certified CharlesGoodwin as Apprentice
  • ffrederick certified CharlesGoodwin as Journeyer

[ Certification disabled because you're not logged in. ]

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!

Share this page