On GNOME dependencies.



Hello guys,

   My recent Usenix presentation that Nat and I designed talked a bit
about how GNOME is being developed, Bonobo technologies and code reuse
in Unix in general and how GNOME can help fix the problems in UNIX.

   The GNOME project is a project to bring missing technologies to
free systems and make sure that we can become a viable solution for
end users on the desktop.  

* Unix as a stagnant platform.

   The basic point made on the presentation is that Unix a few years
ago had become stagnant: no innovations were happening in the Unix
world, no code reuse was happening at all and there were a load of
missing technologies.  The last innovation that had an impact on users
was X11 and maybe PPP. 

* Why did stagnation happen in Unix?

   This stagnation happened for a number of reasons: in one hand, there
was not a common foundation for development.  Everyone was reinventing
and reimplementing everything they could.  To be fully fair, the only
library reused was the libc.  For instance lets consider a subset of
the "big" Unix applications: in.named, Apache, innd, Samba, NFSd,
Sendmail, ssh, gcc.  None of these share any code at all.  The only
code they share is the libc.

   We have as much code reuse as we had 25 years ago in Unix.  This is
hardly a foundation for innovation and it is hardly a foundation for
building our future.   

   Another reason for stagnation is that Unix had quickly become
irrelevant as a platform for innovation, lots of work went into
micro-optimizing things: a few code cycles here, a new file system
there, a new daemon there, a threaded kernel there.  But none of these
affected the life of users, none of these made an impact in their
lives. 

   And finally, there is a lack of a concerted effort to push a single
platform, to agree on a set of tools and push them and integrate them
to create a system that actually works and scales.  People were
focusing on micro-problems rather than looking at the big picture and
trying to achieve innovation in this way. 

   Consider this problem: no server application on Unix was sharing
anything but the libc: the smallest possible subset of software. 

* How do we take Unix one step ahead?

   We obviously need to work together, and try to work on a single
direction.  And to achieve this we have to build on the existing
infrastructure.  Adding dependencies on other pieces of code is good,
because it means that instead of reinventing a big piece of code, you
will just reuse the existing code.

   Code reuse is good.  Code reuse is smart.  

   Unlike proprietary companies, we do not have infinite resources,
and we can not afford to spend our time re-implementing things over
and over again.  To beat proprietary systems we have to be smart, and
we have to reuse as much code as possible.  

   Core reuse is good for you, because you write less code.  It is
also good because you have to maintain less lines of code, and it is
also good, because when fixes go into the foundation library, you also
benefit from these fixes.

   Hence, the GNOME approach so far has been to write libraries that
depend on existing libraries.  I do not understand the movement
towards making Gtk+-only applications.  These applications will either
end up reinventing the wheel, duplicate effort or be underpowered and
not offer the kind of integration that we are aiming at in the GNU
project: an integration that will make GNOME a very pleasant system to
use.  And something that can be seriously considered for all kinds of
users. 

   People like to criticize Microsoft products because they claim
they are `bloated'.  By reinventing libraries and avoiding code reuse,
you are not doing any service to the community or the world.   You are
incurring in the same mistakes people blame on Microsoft: you are
bloating the code. 

   Sure, installing more libraries can be a pain, but this is what
your system integrator does for you.   And in the specific case of
GNOME, you can pretty much get GNOME working on every platform by
using the distribution we have produced at Helix Code.

   And yes, the GNOME libraries and applications work and compile on
IRIX, AIX, HP-UX, Solaris, every Linux out there and a few other
operating systems. 

* Our future

   We are going to keep reusing libraries, and we are going to keep
adding dependencies where they matter to create a better system.  

Best wishes,
Miguel.




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]