AOL management has ordered the Mozilla team
to remove a configuration option that can be used to block
ads.

Funny, I'm on the Mozilla team and I didn't have any jack
booted thugs from AOL banging down my door. Anyway, if you
go look at the
bug in question you will see that the feature in
question hasn't been removed, it's just off by default.

I spend much of the weekend working on focus code for
Mozilla. It now plays nice with the Gtk focus system. For
a long time it wouldn't forward events to the right window
if a Mozilla window didn't have focus. This means that it
works right in the embedding case. I haven't checked it in
yet because there's some question as to how it affects some
of the XIM code that's in there. I'm still waiting to hear
back from some people at Sun about that.

You can now also create a Mozilla window as a the child of
any random GtkContainer. This means you don't need to muck
with the superwin to be able to create Mozilla widgets.
Your widget still has to be realized to do this but the gtk
embedding widget that I've been working on hides most of
that complexity.

I also worked on signal callbacks for things like mouse over
messages and progress and the status of loading pages. I
haven't done the actual signal code yet but that's a breeze
once I get the infastructure in place. That infastructure
is mostly in place now.

Once again it's been forever since I updated my diary. I
think I should let people know what's been going on.

I've been spending time in the last few days getting
familiar with performance tools that are out there for
Linux. One of the problems that we face in the Mozilla
project is that the developer tools on Linux aren't as good
as what's available on Windows or on Solaris*. Spending an
hour with Quanity or Purify can make a huge difference in
knowing why your product or project might be slow.

Some people say that if your product is slow then you've
designed it incorrectly or you don't really know what's
going on. That's true to a certain degree, sure. But when
you've got 80+ developers working on a project and not any
of them can understand or be familiar with the subtle
interactions of different components it's very important to
have the tools that might tell you what's wrong with what
you're doing. That's where those performance tools step in.

We have a scattering of performance tools for Linux but not
anything that really compares with developer tools on other
platforms. There's gprof but gprof doesn't work with shared
libraries. For shared libraries there's sprof but it only
works on a single library at a time and appears to have
issues in Mozilla. ( Those problems could be thread related
- not really sure. ) Given that Mozilla is built of a
couple dozen shared libraries, uses threads extensively, and
is a huge chunk of code the options that are out there
aren't really fitting the bill.

After looking at the code that's currently in libc ( the
gmon/mcount code ) it looks like it can be pretty easily
extended to handle shared libraries. The only problem with
that is that you have to change the output format to support
more than one shared object at a time. This means that you
also have to change the programs that process that output
since none of them handle more than one shared object at a
time either so it means either implementing something new or
adding support to gprof to handle it. The latter is
probably easier so that's where I'm going to go first.

I've already got code that does lookups from the profiling
code to find the right library it was executed from.
Looking in the internals of the dynamic linker is something
that I've never done before so the learning curve has been
large but I've found that it's all very interesting stuff.
I get to learn all about elf, dyanmic loaders, compilers,
linkers, etc. I've never had any reason to do that in the
past and it's a breath of fresh air to learn something
completely new and feel completely invigorated doing it.

In other news ramiro has checked in the code that implements
the bonobo component for nautilus. I'll play with that
tomorrow, in addition to working on the embedding widget.
The widget really needs to inherit from the GtkMozBox, not
GtkWidget. It also needs signals for loading progress and
finishing loading. I have to fix a couple of DND bugs so
that you can drag from the desktop onto Mozilla, too.

There are a lot of people who are trying to get that
component working with the M15 release of Mozilla. Don't.
It doesn't work. You'll just get a crash and then send me
email. Then I'll send you email saying "I know it doesn't
work. Please update to the tip. I'm sorry."

Also in the last couple of days menus and mail/news in
Mozilla have gotten a lot faster. I'm using Mozilla for
email about half the time now. It still formats outgoing
email poorly and some of the fonts look really strange but
it's pretty functional.

Hrm, what's been going on since the last time that I updated
this thing? It's been ten days or so.

Just got back from the first Mozilla Developers Conference.
It was a blast. There's some horrible writeup at
slashdot about it. It's written like copied their
handwritten notes and called it an "article." The best part
of the conference was to meet some of the people that I work
with on a day to day basis and put faces with the names.

From the technical side I got to see some of the more
interesting things that people have been doing with
Mozilla. One was xmlterm.
It's a terminal emulator written using Mozilla as the layout
engine. It's neat because you can interpret resources from
your command line interfaces as links. This means you can
include inline images, links, icons, everything. It can
interpret anything that uses XML. And the terminal
emulation is good enough to run emacs.

Also, Ramiro wrote a glue code to use my Mozilla embedding
widget as a view in Nautilus. We sat down
and worked out out a couple of problems with the widget and
started to figure out what he needed to get it running with
all the functionality that you would expect in an
intergrated browser. We were able to load web pages and
browse around a bit without any problems. It's pretty cool
to see that "just work".

More checkins for the embedding widget last night. There's
still stuff missing from the underlying
nsIWebBrowser object so clicking on links still
doesn't work properly.

Apparently, Netcenter
has decided that they want to
merge the Netcenter and the
AOL Instant Messenger username databases. This means that
if you have a Existing Netscape Netcenter account that
happens to
conflict with an existing AIM screen name that you have to
"change your username."

So, if you had the address foo@netscape.net and
someone else has the screen name "foo" on AIM that the AIM
user will all of a sudden have access to your email
account. They assume that you can tell everyone that you
know about your "new" email address. You can't
tell everyone. What if someone sends you email after 6
months of not talking to you?

Aside from the technical issues, it's just plain rude.
There are people out there who use that site as their
primary email address. My wife did until just recently.
According to their press
releases Netcenter membership is around 25
million or so. It's a pretty shitty thing to do to a
whole lot of people.

It's the kind of thing that makes me want to stop working
with that company.

I've been working on the new embedding widget for Mozilla.
After it's done it should be really easy to embed Mozilla
into any gtk application. Alex did the
original widget but it's been suffering from some bitrot and
it uses old, depreciated interfaces.

Yesterday I went out and got 100 feet of ethernet cable so
that I can hack from other rooms of the house. Looking
back, I think it was a bad idea since now I can't escape.

I've been working on a couple of bugs over the last couple
of days. I sat down and rewrote
the gdk event filter for mozilla since it was broken and
causing some problems with grabbed windows. It now has
copious comments so that some other poor soul can come along
and support it. I've got some other code to check in, too
but someone broke windows so I can't check in.

My wife and I finally got a couch at Ikea which should
arrive at the house tomorrow. This means that we can have
other people over and they don't have to lie
on the floor to watch a movie.