You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geronimo.apache.org by Alex Blewitt <Al...@ioshq.com> on 2003/09/10 16:48:58 UTC

A thought on optimisation and project goals

There have been several messages in the mailing list talking about 
choices in technology to use within Geronimo, and I feel that some 
choices are being made with the idea of optimisations in mind, rather 
than necessarily other reasons.

I think that in decreasing order of importance when designing and 
building Geronimo, that we should aim for:

1) Functionality -- it should do everything that we expect a J2EE 
environment to do
2) Easy to use and administer
3) Easy to develop and maintain
4) Efficient (memory, computational speed, whatever)

I don't think anyone would argue with (1), but if we want Geronimo to 
be the best (and I'm pretty sure that we are all aiming that way) then 
it probably has to be easy to use and administer over and above 
development ease. But it may be that (2) and (3) could be reordered.

I also think that in order to address (3) there are benefits in linking 
up with as many other projects as possible, rather than develop a Not 
Invented Here syndrome. I am not an Apache member, so I don't know The 
Apache Way (maybe someone can fill it in here), but what it means to me 
is that Apache builds projects that are useful, and that may then be 
integrated into other Apache projects. That certainly seems to be the 
case with the jakarta-commons packages, and indeed there are several 
packages which have been built on top of others (James on top of 
Avalon, Jetspeed on top of Turbine/Velocity, not to mention the uses of 
the commons- packages).

I know that the current focus is on (1) (and probably (2/3) as well) 
for the project, and so a getting-there-fast approach is probably a 
good idea. But let's not write off trying to use other parts (and keep 
them!) from the Apache projects when they're useful; after all, object 
orientation is mainly about reuse.

I personally think that (4) should be the last point on the list, by 
some way. J2EE servers are going to be notoriously powerful beasts, and 
whilst it would be advantageous to run on constrainted hardware, I 
really don't think that's where the target customer base is going to 
be. And as the J2EE spec keeps growing, just to cater for (1) we're 
going to have a lot of code. Optimisations that therefore target (4) at 
the expense of (3) IMHO are going the wrong way; for example, ditching 
the commons packages because Geronimo code (as yet) only uses one 
ReferenceMap.

I also feel that at this stage of the project, trying to squeeze 
performance out of component X isn't the best use of (3). If we have 
two designs, one easier to maintain/extend, and one that is fast, I'd 
prefer the former. Why? Because I don't know that the latter is 
necessarily that much faster, and for that matter, don't know that it 
is in the bottleneck of the code. And until we get a working version 
that we can start running and profiling to find out where the 
bottlenecks are, any optimisation is premature optimisation.

Just my $0.02

Alex.


Re: A thought on optimisation and project goals

Posted by "n. alex rupp" <ru...@umn.edu>.
Alex,

I agree with the order of your goals, but there are some hitches in your
reasoning I'm concerned with.

> I also think that in order to address (3) there are benefits in linking
> up with as many other projects as possible, rather than develop a Not
> Invented Here syndrome.

It's very easy to toss around pat rhetorical phrases like "Not Invented Here
Syndrome", but this project is trying to build a certifiable J2EE stack.
The point being that someone must bear the direct responsibility of ensuring
the project's compliance, to the letter of the law (which we're still trying
to get our hands on, if I'm not mistaken) or else we will never accomplish
that goal.  Because we're trying to build and certify an entire stack, we
cannot responsibly demand that other projects hold their efforts directly
accountable to our members.  That runs contrary to our goals and to theirs.
On the other hand, we do have an extremely modular architecture which will
allow small teams to work on the separate subsystems and we have an open
door policy for contributions, so nothing's keeping existing ASF members
from becoming involved--everyone's welcome to help.

> I am not an Apache member, so I don't know The
> Apache Way (maybe someone can fill it in here), but what it means to me
> is that Apache builds projects that are useful, and that may then be
> integrated into other Apache projects.

You're not an Apache committer, but you are a member of the community, which
underlines my following point:  The goal of the ASF is to build a strong and
lasting *community* around technology, without which the technology will
die.  The hope is that strong communities lead to strong and *lasting*
technologies.  Weak communities can build strong technologies--for a time.
But Jason calls that place SourceForget.net for a reason : )

Interoperability of the software is critical, which is why all of the
software is ASF licensed and made available to the rest of the community,
but there is no practical reason why development efforts cannot overlap.
Interoperability isn't mandatory.  That level of inbreeding would be
dangerous to the community.  Competition benefits both teams, and open
disagreement within the ranks is a sign of a healthy and functioning
democratic community.

> I know that the current focus is on (1) (and probably (2/3) as well)
> for the project, and so a getting-there-fast approach is probably a
> good idea. But let's not write off trying to use other parts (and keep
> them!) from the Apache projects when they're useful; after all, object
> orientation is mainly about reuse.

"Getting-there-fast" is probably more important for teams who've never "been
there" before--just to prove to themselves and everyone else they can "get
there" at all.  Nearly everyone on the current committers list has "been
there" before, and I'm certain they're comfortable with the speed at which
they're returning there.  The amount of discussion they contribute to the
list is a good indicator that the development is moving forward at a
satisfactory pace.

> I personally think that (4) should be the last point on the list, by
> some way. J2EE servers are going to be notoriously powerful beasts, and
> whilst it would be advantageous to run on constrainted hardware, I
> really don't think that's where the target customer base is going to
> be.

Not the point. Speed and scaleablity come from clusters.