[Dev] HISTORY.txt
Ted Leung
twl at osafoundation.org
Wed Nov 10 11:19:00 PST 2004
On Nov 9, 2004, at 7:11 PM, Heikki Toivonen wrote:
> Ted Leung wrote:
>> We are going to have API's that developers will use. When those
>> API's change, we need to document that. Changes that will break
>> external parcels between milestones are the changes that I think we
>> should be
>
> I don't think a changelog is the best way for this. And we don't yet
> have real external parcels. Also, I am not sure how much effort we
> should put into informing people of changes to APIs that we haven't
> finalized yet. (I think the way we have been doing so far is ok -
> whenever Andi changes an API he sends out a note to dev, for example.)
> And once we finalize something, it shouldn't change except under very,
> very exceptional situations.
I don't particularly care what the format/file is. Starting with 0.5
we are going to have developer dogfood/platform goals for every
release. Once we do that, we'll need to document API changes. That's
not the same thing as saying that those API's are frozen, and I agree
with what you write below about some kind of process for determining
and reviewing public API. I don't think that we need to do something
heavyweight, but I also think we need to do more than nothing.
>
> I think we should strive towards the goal of a set of public APIs that
> we promise will always work, barring those very, very exceptional
> situations.
>
> Except for the repository, I don't think we have any parts of Chandler
> even close to finalized form. And even with the repository, I wouldn't
> feel comfortable thinking about frozen interfaces until after 6 months
> from now.
>
> So how do we get to those APIs? The way Mozilla does this (I don't yet
> have an opinion on how closely we should match the Mozilla model on
> this) is by having having an API review to freeze public APIs that
> will never change. To freeze an API in Mozilla would require something
> like this:
>
> * There must be a need for this public frozen API (for example plugins)
> * The API must have been in use for a reasonable period of time
> (otherwise, you won't have enough experience using it to know what the
> final form should be like)
> * The API must go through an API review
> * The API review effectively notifies people that the API is under
> consideration to be frozen, and asks people for comments. The API may
> be changed based on that feedback. The API will be formatted to frozen
> API guidelines (if it isn't already), for example it must be written
> in IDL, every interface, method, parameter and return value
> documented, and the indicator that the interface is frozen will be
> prominently displayed). The API may remain in proposed frozen form for
> months before it is actually frozen. It resembles a standards process.
>
> Mozilla explicitly says that any non-frozen interface can and will
> change without notice, and people should not be using them unless they
> are willing to go through the pain of changing their applications when
> the APIs change.
I think that this is where we are going to start out at the end of 0.5.
>
> On the other hand, frozen APIs are very seriously frozen. I have only
> vague memory of one frozen interface being changed (although there
> quite likely have been more). If an interface is later found out to be
> broken, a lot of effort goes into maintaining it even when a new API
> will be created (nsIFoo, nsIFooExtended, ...)
>
>
> Now, we don't have IDL, and Python gives a little more flexibility
> compared to Mozilla's situation.
Yes, we don't have the kind of brittleness that you find in a large
C/C++ program. That's one of the benefits of using something like
Java.
>
> What is the best way to do interfaces in Python? Should we go towards
> the model that Twisted uses, with clear interfaces (check out
> twisted.internet.interfaces)? Or will we freeze modules/classes that
> contain implementations?
The two widely used interface technologies in python seem to be the
twisted interface implementation, and pyprotocols.
>
>
> So to summarize my view:
>
> * Get rid of HISTORY.txt
> * Maintain current practice of sending email to dev when commonly used
> APIs change
I'd add:
Collect these e-mails into some document for each release
> * Start thinking about how we will finalize public APIs, but don't
> actually start finalizing until much later
>
Ted
More information about the Dev
mailing list