On Mon, 2011-08-29 at 21:14 +1000, Nick Coghlan wrote:
The essential idea here is to be able to add a feature, but flag the API as potentially unstable for an entire release cycle before promising to maintain the API in perpetuity. Early adopters would get *most* of python-dev's usual guarantees (which most PyPI packages don't offer), while more conservative types can use more stable alternatives.
We'd still need to be careful not to throw any old rubbish in there, but as a phased introduction for things like "from __experimental__ import ipaddr" (PEP 3144) and "from __experimental__ import re" (re replacement with regex, assuming someone steps up to write the PEP and eventual drop-in replacement looks feasible), the idea definitely has potential.
The semantics of the new marker package would be to indicate that stuff is a little undercooked, but we've decided that it won't get enough exposure through PyPI (either through being too small to overcome NIH syndrome or else too closely coupled to a specific version of the interpreter). That's a completely different meaning, so we shouldn't reuse the same word.
From the descriptions in this thread, it sounds like __experimental__ items will be pretty far on the way to inclusion. And maybe the only thing experimental about them is a few fine details that might be changed before release. (but probably won't be.)
How often do you think things in __experimental__ will be aborted or canceled? Another way to think about "experimental" items is to use it in the way that science does. ie... An experiment designed to discover information, or test a very specific idea or theory. In that context, depending on the results of the experiment, a particular feature my be changed to take the results of the experiment into account. That's probably a bit too formal and restrictive, and it will be difficult to do in a very controlled way. The python community, and Python itself, tends to thrive in a more relaxed and informal atmosphere. But it may not hurt to have some guide lines on how to do a python "__experimental__" experiment so that it doesn't end up being a series of trial and error attempts at something half baked. Which do you think fits better with what you have in mind? __experimental__ __pre-view__ Cheers, Ron