httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject Re: A couple of important features for 2.0
Date Mon, 20 Mar 2000 21:48:49 GMT
On Mon, 20 Mar 2000, Bill Stoddard wrote:

> > Well, there are a couple of things we can do to try to keep modules
> > backwards compatable.
> >
> > 1)  Add some void space at the end of internal structures to allow them to
> > grow without breaking binary compatability.
> This would help but is not in itself a solution.

No, it isn't a solution, but it does solve a problem that we have.  For
example, you added a field to the request_rec earlier today, if we had
space at the end of the structure, we wouldn't have had to bump the MMN.

> > 2)  Freeze the current API.  When a new feature is required, add a new
> > function instead of modifying the old one.

> This with 1) helps even more. Bloats the code, stifles creativity and just
> doesn't fit in with open source development philosophy. If an API is just
> not right, it should be changed.  Maintaining deprecated APIs is common
> practice in commercial software development but there is a price to pay in
> complexity. And complexity is an open source project killer, IMHO; it raises
> the project entry barrier and bugs increase non-linearly with complexity.

I disagree.  This doesn't stifle creativity at all, and it doesn't
increase complexity that much.  If a function was useful in one version,
there was a reason.  If it is later found to not be useful enough, it
should be changed, but the question is how to change it.  You could add
code to the current function (increasing complexity for that function), or
you could add a new function which uses the old function.  The second
option maintains backwards compatability and modularizes the code.
Explain how this increases complexity.

As far as bloating the code goes, I disagree with this as well.  The
function was required at one time.  This tells me that there are modules
using the original function.  Adding features to that function that
require the prototype to change means bloating the modules that are
currently using the function.


Ryan Bloom               
406 29th St.
San Francisco, CA 94131

View raw message