July 30th, 2004
10:29pm: poof


Looking out the window

Having an instrument rating pretty much rocks. Had to go down to Pennsylvania to take care of some family business, and come back the next day. This is one of the first times I've had a real cause and managed to save time and money by flying myself instead of driving or flying commercial. Good experience.

July 27th, 2004
12:59pm: more market share numbers

Asa points out that the latest browser share numbers at w3schools shows a big bump in the usage of Mozilla-based browsers. It's important to note that this is going to be inflated because the audience at that site is web developers, but that's an important market for us and if people are developing their sites using Mozilla-based browsers, then they are more likely to work in our browser. Quick summary from Asa below:

                 IE 5+6    Moz+N7
    July         78.80%    15.10%
    June         80.70%    13.20%
    May          81.80%    12.40%
    April        82.50%    11.70%
    March        82.80%    11.00%
    February     83.00%    10.50%
    January      84.10%     9.70% 

That's one out of every eight users, baybeeee. The race is on.

July 26th, 2004
9:02pm: flying club


N97533

About two weeks ago, I joined a local flying club. Well, it's more partial ownership than a club. We own two planes, one pictured above. It's a Cessna 182, which in my brief experience flying it, is a great plane. It's relatively easy to fly, powerful and an all around wonderful touring machine. We have another plane as well. The other one is a Cessna 206. The 206 can carry full fuel and still have enough carrying capacity to pack in 1,100 lbs of people and baggage. In the small plane world, it's a truck. I'm looking forward to have the ability to take weekend flights up to Toronto to see friends and just be able to travel the east coast.

July 23st, 2004
11:47am: in rawhide

I don't think a lot of people have noticed, but valgrind is now in rawhide. And it's not the neutered version. This is good news for everyone. I'm hoping that it results in developers being able to do a better job of detecting problems in their code.

11:45pm: kicking of the ass

Everyone needs to see this trailer.

July 21st, 2004
9:58am: gecko market share

There have ben some pretty signifigant changes in Gecko's market share numbers over the last few weeks. The article in question talks about a change of 1.1% of market share (and much higher changes at other sites.) That's not a huge change. But if we're talking about 300 million web users, that's, what, 3.3 million users? That's a pretty signifigant change in raw numbers. It's probably not enough to change the direction of the web. But it's certainly a good start.

4:24pm: sometimes I get tired

Stuart is a really crappy photographer.

July 20th, 2004
11:26am: thomas fitzsimmons

Talking about gcj on the desktop. He works at Red Hat on all sorts of java stuff.

Intro to GCJ. GCJ takes java source and turns it into object code. It can then be run with the gcj runtime. Provides runtime services, class libraries, interfaces to native code.

GCJ can convert source -> bytecode, source -> native, bytecode -> native, jar file -> native library. libgcj is a large DSO somewhat like libstdc++. Uses G++ linkage model. Uses boehm-gc. Threading, type checking, security model and a bytecode interpreter. The fact that it has a bytecode interpreter is note widely known. No JIT compiler yet, though. Performance is pretty good, though, because lots of the libraries are native compiled so only app code is interpreted.

The GCJ managed runtime: uses classpath. Mostly merged, except for some low level stuff. GUI stuff is completely shared, I/O, etc. Natlively compiled java programs link to libgcj. C++ apps that want to have a managed runtime, you can just link to libgcj and it gives you an invocation API. gij is an example of this program. Like the java command. It can also load shared libraries, not just .jar files.

Current work to get compatibility with current java runtime. Packagin, binary compatibility. AWT, swing, other graphics.

Packaging problems: using the jpackage.org conventions. Relies on JPackage JVM interface. Currently only available on propietary JVMs. Uses alternatives for switching between JVMs. GCJ-JPackage aims to be a free alternative to the proprietary interface. Currently rpm-based, but debian is talking to them too. Good test of the GCJ interfaces.

Binary compatibility. Need to support chapter 13 of the java lang spec. This is the ABI spec. Restrictions like java API changes that result in ABI changes, etc. The C++ linkage makes this impossible. Moving away from that and moving to a new model. Solves a lot of other problems, too. Lets them run big apps like jonas (custom classloaders, etc.) Decouples the compiler from the runtime. Means you can remove the dependency on the gcc release cycle. Gets faster startup times and reduce memory usage as well. Should be in GCC 3.5.

AWT: this is sun's first attempt at a toolkit. AWT is old? Not really. Is the low-level base for swing. Many existing applets still use the AWT. It has a peer-based design. Our implementation uses Gtk widgets as peers.

Can run small applets. Not larger ones, too many bugs. Most components are done: text fields, buttons, panels, etc. Image handling is done. Graphics and the event system including focus handling.

Thinks that still need to be done: bug fixing. Need to migrate from gtk 1.2 -> 2.4. Some gtk and metacity work. i18n needs work including java imput methods or native methods. Accessibility. X Clipboard interaction. DND. GraphicsEnvironment implementation. And an API conformance test suite.

gcjwebplugin: web browser plugin for java applets. Runs as a netscape 4.x plugin + xembed support. Out of process. [ Demo - looks nice ]

swing: widgets are "lightweight" which means they handle their own painting. Can use the java drawing or 2D drawing - we implement both. Uses java.awt.Graphics using GDK or java.awt.Graphics2D using Cairo. Current swing impl can use either.

It's come a long way in a year. Many widgets are complete. Several big widgets are not yet complete. Things like HTML rendering are hard. And text handling. Plan on using existing infastructure wherever possible. (GTK, freetype, pango, etc.) But lots of code left to write. [ More demos. Things are slow, but work. Laptop is old. ]

The java-gui-branch. It's a branch in the gcc repo. Known-good compiler that doesn't change. Liberal commit policy. Temporary build bustage is OK. Patches for reducing compilation time. Works well with jhbuild. Almost all Red Hat driven. Things are improving and patches are coming in from the community as well.

Using jhbuild for gcj development. Makes things a lot easier. Builds dependencies. Makes it easier for the GNOME and GCJ folks to work together. And with the Java-GNOME folks.

Java-GNOME. They use GCJ for their builds. Allows an interface to the gtk and gnome libraries. Use java native interface. All the current interfaces are wrapped. They can finally use the current gcj to build _all_ bindings. Has a very active community! [ More demos. ]

Merging the silo. Some good desktop projects that would be nice: gconf backend. A gtk pluggable look and feel for swing. Sound wrappers that use gstreamer. Java wrapper for dbus.

Advantages of using libgcj: flexible managed runtime. libgcj can mix native code and bytecode seamlessly. Good for plugins or prototyping. You can use all the tools in the standard development toolchain. You can use gdb or valgrind. It's also cross-platform. GCJ supports all the hosts the GCC supports. You can debug with native parts because GDB supports GCJ. Relatively small footprint. Shared libraries avoid every copy of the code. Speed: gcj-compiled code is comparable of faster than other state of the art execution models for the java programming language. CNI - smooth interaction between Java and C++. Very nice to use.

July 19th, 2004
9:52am: havoc

Havoc is talking about platforms and what he thinks defines a platform. Talking about "silos." That is, stacks of platforms where things work well together, but don't work well outside of that silo. i.e. windows, vs. linux vs. qt vs. gnome, etc. Platforms define technology and policy. Not just mechanisms.

Platforms aren't complete. They don't abstract everything yet. Don't define UI guidelines enough, high level design issues, types of data storage and the exchange of data between applications.

Web is a different kind of platform. Pushes a lot of the platform to the server. Simplifies everything for everyone but the user. No UI guidelines, applications (backend) don't interact well. Can't share data.

What defines platforms - could be plugins, could be other things. X has a pretty low set of constraints, text editor plugin would be pretty constrained. GNOME and KDE both have a pretty big set of contraints. The line is blurry.

Trying to define platforms vs. plugins. Modular interaction design sucks. GNOME control center, X Window System apps. Windows mess of tray icons, menu items, desktop shortcuts, etc. Plugins rarely use the latest platform features because they only use the ABI that's most recent. ABIs take a while to get out there and then other parts of the platform lag.

Talking about implementation vs. interaction. User interfaces should be monolithic and hard coded, even though programmers rarely think that way.

Interaction designers are interested in "user-interesting first-class objects." Email, people, conversations, documents, appointments, etc. How will these be exported? How will apps share that information? WinFS enables this, but unclear how it will be exported to users.

Improving the desktop: focus on internet storange and internet use. Saving people from becoming system administrators. Include more functionality in the platform.

Two visions for the desktop: one is to copy the windows platform and just make it open source. Linspire, etc. Create an alternate platform on its own terms. We can do both or either. Odds are we will do both, because it's open source and people are going to do whatever they want.

Asking why users would reject longhorn? Like what they have already. Don't want to change. Longhorn's improvements doesn't offer the improvements that they need.

Havoc's Final Thoughts: Easier to win on user value than it is to match technical castles of unbounded size. Open source manages to both at the same time.

freesktop.org and X.org are building a platform substrate for beneath toolkits. Tends to be similar to the windows style platform. Any platform has to be able to run windows-style platform.

freedesktop.org doesn't show any signs of moving beyond the substrate layer. i.e. tried to make a UI guideline list. Didn't go anywhere.

freesktop.org seems good for mechanism, not policy. "Substrate not platform." However, mechanisms do contstrain policies. However not the same as some ambiguious policy.

Making incremental gains. Sharing more than one item does add value. Sharing an item with one more silo adds value. Have to be pragmatic and improve what we can.

Code sharing can be done via opportunistic refactoring. Create opportunities. Write things to be shared. Don't rely on your own silo. Sometimes a little work gets a large refactor off the ground.

Holy grail would allow object sharing with wild abandon. Design: if we could bring together some of the silos in terms of design, it would help a lot. Requires a single point of decision-making. May also require a unified release cycle and willingness to depend on latest and greatest.

Platforms are designed together, not stuff that shares code. Merging desktops means merging design, not implementation. The OS, including the kernel, currently counts as a seperate platform. A lot of the rhat desktop team is currently working on "base OS" issues because a lot of the user-visible problems are in that part of the platform, not in the "desktop."

Distributions or upstream? We can wedge patches at the distro level (rhat), because we have The Power. Upstream components still look broken out of the box. Distributions and desktop fragments. Need to move some of this upstream. One unpopular way is to pick a silo. This happens, but it's not good.

The Future! Building an official freedesktop.org platform substrate should be acheivable and valuable.

Design divergence isn't going away. We'll loose our windows-like look, even if just because windows keeps changing. Contains backwards compatibility, but it looks different and new apps will use the new look. Each silo will probably try to suck in more and more apps to enhance user experience via centalized design.

Parting shots. Diverge on goals, not implementation details. Don't implement font rendering twice. Divergence is solved through natural selection. We hope that goals-level discussions bring silots together. Innovation has to start in a single silo, but can trickle into others.

11:19am: dan stone

What's going on at with X at freedesktop.org: mostly modularizing X. Looking at X on GL. Alternatives to Xlib. Moving to Arch. "It's not CVS." Continued devel on extensions. New accel architecture.

X modularization: need to allow driver development to happen independent of releases. i.e. radeon driver changes often, fixed font hasn't changed since before daniel was born. xlib is been broken down into about 56 library modules. It's a lot of libraries, but it helps. Half of them won't ever be touched again. It's a net win, even though it's a lot of modularization.

Servers - KDRive: Keith's driver. has shiny composite stuff. Good for screenshots. Very basic architecture. Doesn't having a module loader. Good for rapid development and testing of new ideas. Lots of interesting accel work.

Servers: Debrix: X.org modular server. Lots of small modules. Every driver is a module. Only have to update modules that actually change. Hopefully a net win. Uses TLA instead of CVS.

Servers: XGL: A server build on GL. That's about it.

Xapps. Some apps have been autotooled. Lots of these haven't been used in a long time. All this work happening in TLA.

Alternatives to Xlib: Use a toolkit! GTk. Qt. XUL or something. Don't use xlib directly. XCB: mainly for toolkit authors. X protocol in C. Good for toolkits, but probably don't want to use this in apps. "Good for Owen, and few others."

New acceleration architecture: current arch kinda sucks. KAAAA is getting jammed into the Xorg servers to replace XAA. Keith and Anders and Eric wrote it. Does a good job with transparency, etc.

Extensions: people working on XEVIE (event interception). DRI merged back to main x.org branch. Distributed multihead X merged back into main branch as well.

TLA == tom lord's arch. Distributed version control system. Blah blah let the version control wars continue. These guys are using it for various parts of the development on freedesktop.org. Yes, it's cool. [ Ed: check out monotone! ]

Other random stuff. Working on accessibility. No linear progression, but interesting stuff is working. Everyone is moving to modularize because monolithic sucks. Lots of work going on.

Discussion: viability of this code. Are people going to ship this or not? We'll see. Proof is in the pudding. Lots of proof of concept work here.

Discussion: Moving towards more stable Xlib-on-XCB and release of XCB. Was stale for a while, but people are seeing the value and things are happening now. Some library support for writing on top of the protocol, which didn't exist before.

Discussion: important to note that the "X Server" that most people are using is located at x.org. freedesktop.org is really for cooking new technology.

Discussion: x.org is doing its second release soon. Have a schedule. Have a feature freeze in a week or so. Code freeze soon after. Release by the end of August. Agressive. Good ideas from people - please send them in! Talking about various extensions that people have merged in. Also have bugzilla and wiki.

Discussion: trying to move freedesktop.org and technologies to LSB specs? Kind of ad-hoc on purpose. Only bless canonical things. fd.o does not include that kind of work right now. Need someone to sit down and write process and specs. Need volunteers.

July 18th, 2004
10:53pm: in ottawa

I'm sitting here on the 8th floor of Le Suites. The only way for me to get internet here is to sit out on the balcony and just ride someone else's IP address for a couple of hours. Somewhere in one of the dozens of buildings in sight, there's a wireless access point talking to me. It's strange not to know where.

Red and white Transpo busses grind by and I can hear snippits of people's conversations as they walk by below. Arguments and laughter, mostly. It's warm and there's a very light breeze. I can make out the other people here for OLS as they walk down the streets. They keep taking pictures of the outsides of the hotel with teeny cameras.

I forgot my camera, or I would probably be taking pictures, too.

Tomorrow is the Desktop Conference where I'll get to listen to people talk. And maybe get to participate, too. Mostly I want to see what all these folks have been up to and what they have to say. I'm here for the whole week of OLS. I'll be posting as it goes.

Oh, I posted that thing about internationalization a couple of days ago. The machine that holds all my software is being moved this week so I don't know when it's going to be back on the network. Probably near the end of the week.

July 17th, 2004
1:11pm: sport pilots and other matters

Apparently, the new sport pilot rules are about to be added to the federal register. This is a pretty big deal since it will probably create an entire new industry for small aircraft in the US. There are already lots of people flying ultralights and kit aircraft and lot of the companies who provide those kits are already positioning themselves to provide the new category of aircraft. These are the planes where you can fly over the treetops at a few hundred feet at slow speeds. I've never had the chance to try any of these aircraft, but I'm interested in trying it. Sounds beautiful.

1:40pm: got pics back from the labs


Zach

July 15th, 2004
3:43pm: dev day updates and translations

Some new talks have been added to developer day. I'm looking forward to meeting roc (Robert O' Callahan.) He's been around for quite a while and has done some great hacking on layout, but we've never met.

I want to talk for a moment about one of the largest problems that we've had over the years in Mozilla: translations.

First of all, I know that I haven't been that active with the current translations people, so this might seem like somewhat of an "outsider view." However, I've had to deal with translations for Red Hat for quite a few years now so if nothing else, I feel the pain.

At Red Hat what I've had to do in the past is to find the best language packs I can, from all the various sites all over the world, take them apart and put them back together for the particular release that we happen to be shipping. This is, to understate somewhat, a pain in the arse. It means that sometimes the lang packs are for the wrong version and in the process of building the new language packs some strings end up untranslated or even worse, mis-translated.

Almost all other open source projects use gettext for translating strings. The translations are stored in what are called .po files, and a vast majority of the tools that are out there that translators tend to use are based around editing those files. Mozilla has its own tools (of course) but those who usually do editing for the rest of the Linux desktop can't just use the same tools to edit our translations. This isn't to say that people don't go out and learn the tools that we do have, it just means that there's a pretty large barrier to entry.

Another additional problem is the lack of centralization means that it's hard to put together a release that's available in many languages. You have to collect those translations from the various sites or wait for someone to be nice enough to upload them. This creates the situation where at the time of release we usually don't have a full set of translations, and often none at all.

These are my personal goals for translations - I think most would agree that they are good for anyone:

  1. They are released at the same time as a product release.
  2. They are complete.
  3. They are available to end users and distributors in a single location.
  4. Translators have an easy way to keep the translations updated.
  5. The ability to maintain translations for multiple branches and products (think seamonkey vs. firefox.)
  6. The build process should be able to create translations and translated builds.

So, to solve this we probably need to do a few things:

1. Translations need to end up in CVS.

Yeah, this might be a pain in the butt but it's the way to do it. It centralizes the translations and it means that it's easy to pull them down to build them. Also, it allows you to have per-branch translations and per-product translations.

2. We need an easy to use interface for allowing translations.

I think that the easiest way to do this is to use your favorite tool: the web. It's relatively easy to implement, doesn't require anything to be installed on a translator's computer. This gives the advantage that a non-technical person might be able to do translations. This is something that I think other systems don't do when you have to translate .po files and .jar files.

I've got some unfinished software that can take apart .jar files and do some simple editing which I'll be putting somewhere for people to hack on in the next day or two so we can get started solving this problem over the long term. I'll post when it's accessible.

July 14th, 2004
1:47am: I can't believe I ate the whole thing

A nice FireFox advocacy site.

3:39pm: odd spam

I found some really old spam when I was cleaning out my inbox today that contained this gem:

    Human Brain Software

    Human brain software can completely solve the question as follows:

        1. The motive force of human evolution;
        2. Human clock system;
        3. Human Intellectual Genes;
        4. DOS system and Windows system about human brain;
        5. Origin and prodiction of human talent;
        6. How to monopolize world soccer markets in the future.

    Notes: To monopolize world soccer markets is only a sort of
    measure or evidence.Its goal is to prove my human evolution theory
    with it.

July 13th, 2004
11:32am: paying the bills

In order to pay some of the bills around here, I've started carrying google ads on the side of my web log. (We'll see if it actually amounts to anything.)

On that note I'm actually pretty impressed with AdSense. It's got decent terms of service and they appear to get really upset if you start using methods like popups and popunders and other various sundry methods that are sketchy at best - the kinds of things that cause my non-computer-savvy friends and relatives to complain about how the Internet is so annoying. I hope that google manages to retain its simplicity and positive qualities into the future. I lot of companies start out that way but don't make it over the long haul.

6:52pm: mozilla developer day 2004

There will be a Mozilla Developer Day held on August 6th, 2004 on the Google campus in Mountain View, CA. I'm going to try to be there, and I hope that you will too. Google apparently has lots of space so don't be shy!

July 12th, 2004
3:03pm: plubbies!


Coal is very happy to meet you

July 7th, 2004
9:16am: views and frames and content, oh my!

I've been spending the last few days going back and forth with Owen about word spacing and justification. Not sure if that's going to make the next pango release so I guess it's up to me to just support Mozilla's crazy per-character spacing methods for font rendering. Getting this working with bidi is going to be fun fun fun.

I've also been reading a lot of the layout code and bugging the crap out of the poor layout folks. Scary thing is, I'm starting to understand some of how layout works. And it's not nearly as scary as I thought it was. Huge, complicated, but it all kind of makes sense.

July 1st, 2004
10:30am: another note about the slate article

Both Asa and Brendan point out that in the recent Slate article, which includes this statement:

    Firefox development and testing are mostly done by about a dozen
    Mozilla employees, plus a few dozen others at companies like IBM,
    Sun, and Red Hat. I've been using it for a week now, and I've all
    but forgotten about Explorer.

....is not entirely accurate. There are people at IBM, Sun and Red Hat (hi!) who are doing development and testing. But for every one person listed at these companies there are a dozen or more people who are doing QA, fixing bugs and doing lots of other various tasks. I just want to make sure that people understand that there are hundreds of unsung heroes that are involved with the development of Firefox and Mozilla.org's other products every day. It's one of our strengths. It's one of the things that makes us better than the competition.

11:07am: two more articles

Jesus must be coming. Festa looks busy.

12:46pm: ...and a few more links just for fun

gerv talks about Gecko's market share. dbaron talks about the W3C. brendan does too. And hixie does a great job talking about why they started the WHATWG. These are all worth reading, folks.

And last of all, shaver pointed me at XUL::Node. If it works as advertised, it could be quite killer. I haven't played with it yet, but server side perl + client side XUL + generated interfaces seems like the Goldilocks of technology combinations for a lot of people.