Re: Time to heat up the new module discussion
- From: Ben Maurer <bmaurer andrew cmu edu>
- To: desktop-devel-list gnome org
- Cc: Gnome Desktop Development List <desktop-devel-list gnome org>
- Subject: Re: Time to heat up the new module discussion
- Date: Wed, 12 Jul 2006 20:00:54 -0400
Hey,
On Wed, 12 Jul 2006, Darren Kenny wrote:
It's been mentioned many times before that we already have too many component
models in the GNOME platform - and once they are in there, it's VERY hard to get
them back out again - just look at Bonobo.
Bonobo is, by design, intended to be used in many applications. I don't
think this applies as much to Mono.
It makes sense to me that Mono should remain on the out-skirts of GNOME for this
very reason - core GNOME should only use native languages, and more specifically
C, as to to do otherwise is likely to effect the already perceived poor
performance of GNOME.
Excess memory usage has not stoped us from using alot of things -- VFS,
Bonobo, etc. Many of the other modules under consideration add their own
memory usage to the base desktop -- for example, accepting power manager
gives us yet another daemon which takes up a few megs of ram. Distros are
being even more aggressive about adopting these new programs (network
manager, notification daemon).
Just think about what happens when a user logs into a desktop that has Python
and C# based applets included with C based applets:
- The panel starts
- It starts C/Bonobo based applets - the smallest of which already consumes
approx 40Mb of memory.
- It starts Python applets - each of these takes up approx 70Mb of memory -
and very little of this is shared
These numbers are clearly vmsize, which don't make much sense.
- It starts a C# based applet - and this pulls in Mono, which I'm sure isn't
that small, but I guess at least it does share memory better than Python,
but there is still quite a lot of additional memory pulled in.
Mono does *quite* a bit better than python in terms of memory for a Gtk#
application (vs pygtk).
Look at: http://bugzilla.gnome.org/show_bug.cgi?id=346211. Deskbar applet
takes 13 MB of ram at startup. This has not stopped us from accepting it.
Innovation comes slowly. Performance tuning is often one of the last steps
of polish. I think it's clear that much innovation is coming from
applications written in managed languages. Bringing in Mono will allow
greater innovation in the GNOME platform.
In the long term, Mono can potentially reduce our performance problems. It
is often easier to make performance changes in a managed language due to
the cleaner code that generally comes with the higher level language.
Also, innovations at the virtual machine level can give us benefits for
all applications. For example, when Mono has a moving GC, applications
will be able to return memory to the system *better* than similar apps
written in C.
I know today people say that memory is cheap, but I think that's not an excuse
for working on reducing it's consumption. Also, there is the small devices like
the Nokia 770 for which memory consumption is a big factor.
I assure you, I'm not one to argue that memory is cheap.
As for .NET, even Microsoft themselves had to pull back from using it for core
functionality due to performance reasons - why do we think we will do any better?
Attributing this to performance alone is over simplifying. Vista clearly
has some high performance requirements. IMHO, part of the issue was that
rewriting existing code wasn't the way to get Vista out the door. We
aren't doing that, and I don't think we should.
I think, and this is only my opinion, we should consider the possibility of
different levels (for want of a better word) for delivery of GNOME (if it's not
already been done) - this would be similar to the way GStreamer has split it's
modules - it makes sense from an ISV or OEM standpoint:
- GNOME Core
- GNOME Native
- GNOME Python
- GNOME Mono
What good does this do us? There are 20 ways we can segment the GNOME
applications. We can go by applications with bonobo vs those without,
those that are hogs vs those that aren't. Most distros ship all of it.
I'm sure there are more breakdowns possible - I just think an ISV or 3rd party
developer should be able to express their dependencies for their application by
saying they need GNOME Core or GNOME Mono.
I'm not really aware of the issues and problems in this area. However,
this doesn't seem to relate to the ideas about performance earlier in the
email.
IMHO, we should define a process that does not start "Python is bloated,
C# is bloated. Lets not use them". We must establish clear guidelines as
to what is allowed. When talking about performance, talk in megabytes, not
languages. For example:
When suggesting a new feature or module for GNOME that is active at
startup, the following should be considered:
- Does this program start any new daemons? How much memory do they
use?
- What efforts have been taken to reduce leaks? How does the
application do in a long session?
I also think our guidelines should be less strict on applications not
launched by default. If Tomboy is added as a non-default application, we
needn't be as strict about memory usage.
I also think we should set out guidelines for applications in languages
other than C. For example, they should provide apis so that non-managed
applications can interact with them.
In the end, we should encourage innovation. GNOME would never be where it
is today without some of the more bloated releases of years past. When
their applications are ready for primetime, GNOME must take them with open
arms.
-- Ben
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]