Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:12402 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 50752 invoked by uid 1010); 27 Aug 2004 07:27:53 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 43088 invoked from network); 27 Aug 2004 07:25:01 -0000 Received: from unknown (HELO iko.gotobg.net) (80.168.8.116) by pb1.pair.com with SMTP; 27 Aug 2004 07:25:01 -0000 Received: from pd95e9795.dip.t-dialin.net ([217.94.151.149] helo=[192.168.0.36]) by iko.gotobg.net with asmtp (Exim 4.41) id 1C0b6b-0005zZ-Di for internals@lists.php.net; Fri, 27 Aug 2004 10:25:01 +0300 Message-ID: <412EE1A8.4040807@hristov.com> Date: Fri, 27 Aug 2004 09:24:24 +0200 User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8a3) Gecko/20040817 X-Accept-Language: en-us, en MIME-Version: 1.0 CC: internals@lists.php.net References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - iko.gotobg.net X-AntiAbuse: Original Domain - lists.php.net X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - hristov.com X-Source: X-Source-Args: X-Source-Dir: Subject: Re: [PHP-DEV] Unfulfilled promises... forever experimental extensions... all over again From: php@hristov.com (Andrey Hristov) Naik, Roshan wrote: > Andi wrote: > >>Oh boy, if you don't see the difference between "concrete > Once again I am *not* asking to hold a whip to the > developers who are working for free here. Just > dont include code until its ready. Let them mature > elsewhere and carefully pick the best of the lot. > Invite implementations for a given feature. So > people know their work may have a good chance of > going somehwere...if they did a good job. > It encourages healthy competition and improves > product quality. PHP has been bitten by this > before many times, lets not let it happen again. > > And lets not advertise experimental features. > If this wasn't the case many of the libraries wouldn't be available in the "glue" named PHP. ext/sockets is experimental but if the authot didn't bother to release the code for this reason noone will benefit from its existance. Now it is marked experimental, so whoever needs the functionality will use it. The people who don't like experimental stuff will stay around or if they have enough skills they may contact the maintainer and help and even clear whether the extension is still considered EXPERIMENTAL - this is what happened with XML extensions yesterday, Rob Richards removed the experimental tag. Just a side note, I asked Wez Furlong, the author of the streams API, about ext/sockets and he told me that "ext/sockets sucks use streams". Of course he is a little bit biased :), but in fact streams provide almost the same functionality one finds in ext/sockets and sockets become more transparent (like inclusions of files became with inlude 'http://example.org/some.inc"; ). Back to the changing APIs. There are some things one can do to aid himself again API changes. Use classes and wrap things. If the underlying functions and classes change their behaviour for some reason one has to change only the wrapping class. One may use factory methods for instantiating thus even not changing (IMO) one line productional code except the wrapping class (changing may happen but will be less). Consider this example code : doSth("foo", "bar"); ?> Let's say that all the code uses V1::getInstance() to get new instance, one can change the method to return an instance of V2 with return new V2(); and then all your code starts to use V2. When you are sure that everything is fine, just go and do search and replace in files of "V1::getInstance()" with "V2::getInstance()". andrey