On 2011-06-26 09:42-0400 Hezekiah M. Carty wrote:

> On Sat, Jun 25, 2011 at 2:45 PM, Alan W. Irwin
> <ir...@beluga.phys.uvic.ca> wrote:
>>
>> Finally, I think we should make clear in README.release that the
>> plcolorbar API is still considered to be experimental, and we should
>> also discourage (by an appropriate post to plplot-devel) propagation
>> to non-C languages until after we finalize the plcolorbar API during
>> the next release cycle.  At this time I don't actually plan any
>> further API changes for plcolorbar, but we found we needed additional
>> API changes once we became experienced with pllegend, and I suspect
>> our plcolorbar experience will also be the same.
>>
>
> I am bringing this on to the development list as I agree with this
> both for plcolorbar and for new functions in general.  I would like to
> propose a new plplot-volatile.h header for the C API which would house
> any new PLplot functions until they have had enough testing and use to
> have a fixed API.  For a simple function this may happen more or less
> immediately, while more complex functions such as pllegend and
> plcolorbar may live in plplot-volatile.h for a development release or
> few.  This provides a clear message to users and developers that the
> function in question may still be in flux, and therefore so will any
> code using it.
>
> There has been a lot of new development in the 5.9.x PLplot
> development cycle so far, and I think this is a very good thing.
> However, there have been a few occasions where APIs have changed after
> a formal 5.9.x development release, requiring propagation of these
> changes to all of the language bindings and statements in
> README.release explaining the changes.  My hope is that something
> along the lines of a plplot-volatile.h header will simplify this
> process somewhat.
>
> Any opinions on this?

Hi Hez:

Thanks for bringing discussion of these issue to the attention of the list.

I do have a concern; if you warn the users too much about new
functionality, they will put off evaluating it, and you end up with
having no user-suggested API changes until after we move the API from
plplot-volatile.h and propagate it to all languages.  So whatever
mechanism we choose, it needs to be as encouraging as possible to
tempt users to try the new functionality and to give us feedback about
it.

Also note that both pllegend and plcolorbar are extreme special cases.
As Steve Schwartz commented to me off list a while ago, it is much
easier to make a plot than a legend!  Once the API for these functions
has completely stabilized (BTW I think that has already happened with
pllegend), then I suspect it will be years before we introduce
anything with such complicated arguments as these two functions into
PLplot again.  So I don't think we should make a long-term PLplot
policy in response to _just_ the special cases of these two functions.
But see the paragraph after the next one below....

As far as users are concerned, I prefer the informal mechanism we have
now where you warn them in README.release of any functionality where
the API is still experimental. And normally that should be a light
warning along the lines that we feel we have finalized this API and
therefore strongly encourage users to experiment with it, but we are
still open to change in that API if those that try it have further
suggestions.  We should probably use a heavier warning for the special
case of plcolorbar for this release cycle since the fact is we will
have very little experience with the latest version of the API for
that function during this release cycle.

As far as our developers are concerned, I think a warning not to
propagate new and experimental C API might be sufficient on
plplot-devel.  OTOH, we do have a lot of new C API (and also old C API
as well) that was designed for general use in all languages but never
completed, i.e., it has not been documented, tested with a C example,
and/or propagated to non-C languages. So some internal mechanism (say
a special "unfinished function" section in plplot.h) that is
transparent to users but which reminds PLplot developers of the
unfinished nature of some of our C functions might be useful.  If a C
function is in that section, then the ideal result would be for its
originator to finalize that API, then complete work on the function
(i.e., by documenting it with both doxygen and docbook, by using it in
at least one of our standard examples, and by propagating it to all
languages [probably with some help from Jerry for Ada and Hez for
OCaml]).  Once completed, the function should be moved out of the
"unfinished function" section of plplot.h.  However, if those
completion efforts don't happen in a reasonable length of time (say a
couple of release cycles) because the originator and all other
developers have lost interest in the new C API, then we should just
move that functionality to pldeprecated.c with the goal of eventually
removing it.

To see how these criteria for the "unfinished function" section would
work in practice, pllegend would not be in that section because it
does have documentation, it is used in our standard examples, and it
has been propagated to all languages.  OTOH, plcolorbar would be in
that section (even after my final changes for this release cycle)
because of lack of documentation, lack of finalized version of the
plcolorbar sections of examples 16 and 33, and (designed) lack of
propagation because of the unfinished status of the -colorbar sections
of those examples.

As I have already discussed with Hez off list, I am rapidly running
out of time I can spend on PLplot this summer, and I do plan to spend
part of that remaining time in extensive Linux and wine testing of
PLplot.  So I hope to finish all my plcolorbar changes (which will
consist of finalization of my bounding-box implementation efforts for
plcolorbar) today.  In addition, Hez has kindly agreed to taking over
responsibility for expanding C example 33 to test the new
functionality and flexibility I have put into plcolorbar.

In the interests of getting out a release without too much further
delay, I suggest any further plcolorbar changes he makes to example 33
(or 16) for this release cycle should be only for the special
-colorbar option case (which insures by design that plcolorbar will
not be tested by any of our automated tests). Then early in the next
release cycle and after he has completed the plcolorbar tests in
example 33 to his satisfaction, he can signal the start of propagation
efforts for that function by removing the -colorbar optional
infrastructure for C examples 16 and 33 so those C examples (and their
counterparts for the other languages once plcolorbar has been
propagated) always run plcolorbar.

Alan
__________________________
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state implementation
for stellar interiors (freeeos.sf.net); PLplot scientific plotting software
package (plplot.org); the libLASi project (unifont.org/lasi); the Loads of
Linux Links project (loll.sf.net); and the Linux Brochure Project
(lbproject.sf.net).
__________________________

Linux-powered Science
__________________________

------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to