
nick at ccl4
Nov 6, 2009, 5:47 AM
Post #9 of 12
(77 views)
Permalink
|
On Thu, Nov 05, 2009 at 10:28:00PM +0100, Gerard Goossen wrote: > On Wed, Nov 04, 2009 at 04:58:44PM +0000, Nicholas Clark wrote: > > On Wed, Nov 04, 2009 at 05:55:31PM +0100, demerphq wrote: > > > 2009/11/4 Nicholas Clark <nick[at]ccl4.org>: > > > > On Wed, Nov 04, 2009 at 05:43:27PM +0100, Gerard Goossen wrote: > > > > > > > >> Summarizing: > > > >> - The core developers promise to keep the core the same within each > > > >> ? major version. > > > > > > > > No. I can't promise this. > > > > > > We already do. > > > > No, we don't > > We try *hard* not to break things. > > Probably promise is too strong a word, if we need we can break it > (maybe add require something like #define PERL_CORE_5_<version>b), but > with our current plan of making minor releases only fix cirtical bugs > and build issues, this not breaking it should not be a problem. I do not share your confidence. > > But I refuse to promise that we won't *ever*, because I *DO NOT WANT* to > > encourage people to think that the guts are theirs to play with. > > Patch discourages playing with the internals, because it will break > with the next major release. People will be peeking into the > internals, using this at least it is clear that whay they are doing is > problematic and that it will break with the next release. No, I don't agree. (See below) > > If the *public* API is lacking, I want people to submit patches to work to > > fix *that*. Not to have a perpetual state of "peeking". > > The patch isn't meant to discourage the development of a public API, > but there will always be people who want access to more stuff, the > patch is meant to regulate that. > > It only adds a check for modules which already use PERL_CORE. No, it also legitimises this approach. Which could well increase the number of modules prodding deeply, which makes it harder to avoid breaking them when making changes. Specifically: Right now, if you define PERL_CORE you get to keep both pieces if it breaks. It's not supported. That doesn't mean that it *will* break, or that we actively *try* to break it, but it does mean that it's "at risk". By "try *hard*" not to break things, I meant that before making changes that I suspected would break things, I'd check Google's codesearch and an unpacked CPAN, to see what (if anything) was using it. Sure, that does not and can not find code elsewhere (often referred to as the Darkpan) but it seems a big enough sample size to make a judgment. Right now, there are very few modules, which (a) makes it easy to check, (b) means that the proportion of modules which are at risk of breaking is low. Providing a blessing that will increase the number of modules coupling tightly to the implementation in ways that aren't tested in the core itself will (a) make it harder to check (b) means that the proportion of modules which are at risk increases The change proposed INCREASES the work load on the core maintainers. It externalises the (social) responsibility of CPAN module authors to feed back on where the API is lacking. Nicholas Clark
|