Communications in Projects...
- From: jg pa dec com (Jim Gettys)
- To: gnome-hackers gnome org, foundation-list gnome org
- Subject: Communications in Projects...
- Date: Tue, 4 Dec 2001 09:10:24 -0800 (PST)
I promised to draft this last summer: I did, but did not see a good
opportunity to send it when people were listening (the battles of
last summer had died down by the time I drafted this), and then was out for
surgery. So here are some thoughts, I hope we can have a useful discussion.
Communications in Projects
As the size of projects increases, the need for discussion and communication
increases.
This is a direct consequence of scaling and interdependencies of projects.
Gnome itself has become a very large "umbrella" project, and itself depends
on other projects: e.g. GTK+, Linux, XFree86, various libraries, etc.
Similarly, different parts of the Gnome project itself are more or less
dependent on each other. So we have certain core libraries, that effectively
everyone depends on, Bonobo, which we'd like more applications to use
(and therefore depend on), and so on.
For example, we all depend on stability/progress in GTK+ (and the underlying
X Window System).
There are some inferences we can draw:
1) some interfaces become involate with time. For example, the X Window
System has provided absolute upward compatibility since 1988
(approaching 14 years now).
I think people all agree that we'd be shooting ourselves in the
feet to make incompatible changes here (to use an example that does not
pick on any Gnome technology).
Technologies in this catagory can only move upward in compatible ways:
recent X examples of compatible change are the Render and RandR extensions.
Network protocols are hardest to change, as you have no control
over the other endpoints, and the value is precisely the ability
to interoperate. And this can be frustrating, as you really get
to live with and appreciate your mistakes :-(. And down-revision
network services provide a challenge to interoperability.
2) some interfaces can be versioned (and things successfully coexist
simultaneously. For example, there are multiple versions of Xt, and GTK
in the world, and things can/do work. But among a single major version,
version, similar compatibility constraints to 1) exist.
3) some technologies allow for multiple co-existing environments,
for example, language environments. Programmers vote with their feet,
and it is healthy for there to be competing projects. Inside such
a technological island, 1, and 2, still apply.
Ok, what does this say about components of the Gnome project?
o The consequence of successful components (libraries, embeddable
applications) is that more and more people use them.
o The consequences of this success is that incompatibilities/changes
affect many more people, so change is much harder.
o As things succeed, there is a natural progression to 2), and sometimes
to the 1) endstate (if competing technologies are not possible: as ESR
has pointed out, some technological winners are "winners take all".
This has implications on our own behaviors:
o if you work on a part of the gnome project (e.g. many applications)
that no one else depends on, you can be your own little "god".
If people don't like your behavior, they'll build a replacement. Little
communications of your plans are needed or required (though I'd still
strongly recommend such behavior if you want anyone else to help you!).
The project as a whole does not suffer if you are as secretive as you
like (though end users may not like you!).
Note, however, that many projects need to grow beyond what a very
small project with such autonomy can handle. Natural selection
effects are very strong in open source projects, and your prima
donna project is likely to be supplanted by others if you behave
this way. Selection is as often on personalities and behavior as
on technical merit!
o if you work on a library or component others depend on, you have
a responsibility that increases with your success to gather input,
get feedback, communicate plans, etc. This is particularly critical whenever
incompatible changes are needed/planned, as this generates work for others,
and their buy in is essentially required for your (and the project's)
success. Projects can live or die on their ability to handle change.
o if development of key technology is mostly done in a small
teams, particularly when commercially supported, much paranoia can
be avoided by good communications of plans, enhancements
and changes (particularly incompatible ones that affect other
projects). Recommendation: do all your development on open
mailing lists, reserving a infrequently used list for proprietary,
commercial discussions. If you already have heavily used internal
only mailing lists, habits die hard, so turn them off and reestablish
public lists to force this separation, or your developers won't
bother to switch.
This is not only true for commercial companies: for what
seemed like good reasons years ago, XFree86 behaved much as a closed
group for years, and I think most people in Gnome appreciate
the fact that they've opened up. Arrange your lives to minimize
the "secret" communications necessary. The needs are real, but we
should avoid as much as we can such secrecy: when unnecessary,
it is poisonous to open source projects.
o make incompatible changes as early as possible in major versions,
to give time for down stream changes to percolate through: human
communication takes time! And taking responsibility to identify
who is likely to be impacted, and how much, is in order. This
homework should reduce the anguish of releases.
o if you are working on a "winner take all" part of gnome, your
responsibilities for stability and careful compatible evolution
is paramount, and good communications becomes absolutely vital.
If you don't like that responsibility (and the constraints and work
it imposes), working elsewhere in the project is probably wise.
o and being civil to each other really helps the communications,
along with an attitude of "do not attribute to malice what can be
attributed to incompetance". Lets all treat ourselves well,
and avoid "ad hominem" attacks. Don't presume bad motives of people:
more commonly they have good reasons, or just blew it entirely!
I hope this sparks serious discussion.
- Jim
--
Jim Gettys
Technology and Corporate Development
Compaq Computer Corporation
jg pa dec com
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]