# On BC and interfaces

- Thread: https://externals.io/message/62780
- Original archive: https://news-web.php.net/php.internals/62780
- Started by Stas Malyshev on 2012-09-04T07:15:39+00:00
- Messages: 7
- Reply by email to internals@lists.php.net
- More for agents: search with https://externals.io/search.md?q={query} · JSON API at https://externals.io/api · documentation at https://externals.io/llms.txt

---

## #62780 — Stas Malyshev — 2012-09-04T07:15:39+00:00

URL: https://externals.io/message/62780#62780

Hi!

Given many discussions on the list about changing stuff in PHP, I'd like
to bring everybody's attention to comment by Linus Torvalds in this
topic: https://plus.google.com/115250422803614415116/posts/hMT5kW8LKJk

It talks about Linux kernel and discussion has next to nothing to do
with PHP, but generic point about keeping the interfaces and importance
of not serving one use case I think very important for all widely used
platforms equally. I think the opinion of the author of one of the most
successful platforms in recent history may be interesting to consider.
-- 
Stanislav Malyshev, Software Architect
SugarCRM: http://www.sugarcrm.com/
(408)454-6900 ext. 227

---

## #62843 — Dmitry Stogov — 2012-09-06T05:54:30+00:00

URL: https://externals.io/message/62780#62843 · In reply to: #62780

Hi Stas,

You know, it's not always possible to get new features or performance 
boosts without API change. It's one of the reason why we postpone such 
changes for major releases. But, I agree that even in major releases API 
shouldn't be changed without significant reasons, and we should keep 
compatibility if possible.

BTW I even think that PHP doesn't need most of recently added features. 
It's a monster already and we make it more complicated with each 
release. As these new features are needed only to few people, they are 
not tested enough. Then, after release, we found that something doesn't 
work as expected, and we have to fix design mistakes with ugly hacks. 
Traits is a good example.

Thanks. Dmitry.


> Hi!
>
> Given many discussions on the list about changing stuff in PHP, I'd like
> to bring everybody's attention to comment by Linus Torvalds in this
> topic: https://plus.google.com/115250422803614415116/posts/hMT5kW8LKJk
>
> It talks about Linux kernel and discussion has next to nothing to do
> with PHP, but generic point about keeping the interfaces and importance
> of not serving one use case I think very important for all widely used
> platforms equally. I think the opinion of the author of one of the most
> successful platforms in recent history may be interesting to consider.

---

## #62845 — Lester Caine — 2012-09-06T07:39:59+00:00

URL: https://externals.io/message/62780#62845 · In reply to: #62780

Stas Malyshev wrote:
> Given many discussions on the list about changing stuff in PHP, I'd like
> to bring everybody's attention to comment by Linus Torvalds in this
> topic:https://plus.google.com/115250422803614415116/posts/hMT5kW8LKJk

> It talks about Linux kernel and discussion has next to nothing to do
> with PHP, but generic point about keeping the interfaces and importance
> of not serving one use case I think very important for all widely used
> platforms equally. I think the opinion of the author of one of the most
> successful platforms in recent history may be interesting to consider.

To quote ...
Some gnome people seem to be in total denial about what their problem really is. 
They'll wildly blame everybody except themselves. This article seems to be a 
perfect example of that.﻿

In addition to managing all of the changes being integrated into PHP I've been 
living with the 'improvements' in Linux. KDE3 became KDE4 and in my opinion 
totally unusable! OK I'm a dodo, but simply LEARNING how to cope with a new way 
of working and fighting a deliberate policy of blocking any 'classic' theme ... 
I moved over to Gnome which did at least work more like I was comfortable with, 
and they go and do the same pigging thing! But at least someone was listening 
and I'm on a 'classic' view currently. Progress needs to be productive not 
aesthetic?

How does this relate to PHP? It's exactly the same attitude here. SPL interfaces 
are something we can currently take or leave. Personally I'd just disable them 
altogether but it seems I can't? Some would like to force them on us, and 
generators are a nail now to hang making more stuff 'core' such as more 
exceptions. But personally I don't need them. All of my persistent storage is 
via the database, and fast access to that - filtering the information required - 
processing the output - purely uses the database interface. PDO gives me nothing 
there. It's still incomplete and there is little interest in 'completing' it. 
ADOdb may be a bit bloated, but a bit more attention to the extension from those 
of you who understand the fine detail and we could have a faster well 
established alternative? Currently each major project is going of designing it's 
own alternative some based on PDO, some database specific, simply because there 
is not a GOOD standard interface to work off. Even the ZendDB interface ends up 
getting it's own custom extensions on each project making maintenance a 
nightmare. I've three different zend framework based sites I've inherited and 
all three provide a 'different' database interface! They will be moved to my own 
framework simply because it's easier than trying to learn three new methods of 
working. That and I can get everything back onto Firebird which provides 
transparent background backup's.

The drive to release more often has to have a 'reason'. And getting bug and 
security fixes out promptly is the reason, not trying to placate some self 
inflated commentator who says "PHP is crap because it doesn't have ..." but they 
are never going to use it anyway?

-- 
Lester Caine - G8HFL
-----------------------------
Contact - http://lsces.co.uk/wiki/?page=contact
L.S.Caine Electronic Services - http://lsces.co.uk
EnquirySolve - http://enquirysolve.com/
Model Engineers Digital Workshop - http://medw.co.uk
Rainbow Digital Media - http://rainbowdigitalmedia.co.uk

---

## #62868 — Levi Morrison — 2012-09-06T14:47:51+00:00

URL: https://externals.io/message/62780#62868 · In reply to: #62780

>
> Hi!
>
> Given many discussions on the list about changing stuff in PHP, I'd like
> to bring everybody's attention to comment by Linus Torvalds in this
> topic: https://plus.google.com/115250422803614415116/posts/hMT5kW8LKJk
>
> It talks about Linux kernel and discussion has next to nothing to do
> with PHP, but generic point about keeping the interfaces and importance
> of not serving one use case I think very important for all widely used
> platforms equally. I think the opinion of the author of one of the most
> successful platforms in recent history may be interesting to consider.
> --
> Stanislav Malyshev, Software Architect
> SugarCRM: http://www.sugarcrm.com/
> (408)454-6900 ext. 227
>
> --
> 
> 
>

Good find, Stas.  I would like to quote a portion of it:

> One of the core kernel rules has always been that we never ever
> break any external interfaces. That rule has been there since day
> one, although it's gotten much more explicit only in the last few years.
> The fact that we break internal interfaces that are not visible to userland
> is totally irrelevant, and a total red herring.

Basically we shouldn't break any interfaces that are user-facing but
we are free to change things internally as much as we want as long as the
external interface is honored.

---

## #62869 — Leigh — 2012-09-06T15:01:02+00:00

URL: https://externals.io/message/62780#62869 · In reply to: #62868

> Basically we shouldn't break any interfaces that are user-facing but
> we are free to change things internally as much as we want as long as the
> external interface is honored.

So how do you actually go about adding a feature that requires an
interface change?

Take for example the SessionHandler class, that implements
SessionHandlerInterface.

Now lets say you want to add functionality to the class that allows a
user to override create_sid, and provide user-generated session ids.
It doesn't make sense to add it to the class and not the interface, so
what do you do?

* Add to SessionHandlerInterface and break BC?
* Create SessionHandlerInterfaceEx that extends the original, and have
the the class implement that?
* Create SessionHandlerInterfaceEx that contains only the new method,
and have the class implement both interfaces?
* Add to the class, but do not touch the interface?

---

## #62875 — Kris Craig — 2012-09-06T18:43:10+00:00

URL: https://externals.io/message/62780#62875 · In reply to: #62780

On Tue, Sep 4, 2012 at 12:15 AM, Stas Malyshev <smalyshev@sugarcrm.com>wrote:

> Hi!
>
> Given many discussions on the list about changing stuff in PHP, I'd like
> to bring everybody's attention to comment by Linus Torvalds in this
> topic: https://plus.google.com/115250422803614415116/posts/hMT5kW8LKJk
>
> It talks about Linux kernel and discussion has next to nothing to do
> with PHP, but generic point about keeping the interfaces and importance
> of not serving one use case I think very important for all widely used
> platforms equally. I think the opinion of the author of one of the most
> successful platforms in recent history may be interesting to consider.
> --
> Stanislav Malyshev, Software Architect
> SugarCRM: http://www.sugarcrm.com/
> (408)454-6900 ext. 227
>
> --
> 
> 
>
>
This is why I love Mr. Torvalds!  Unlike people like Jobs and Gates, Linus
stands firmly against the whole, "We know what's best for you better than
you do" mentality.

My newly-acquired Kindle Fire pissed me off last night.  I turned it on to
watch an episode of Futurama and read some pages from Hawking's "The Grand
Design" before bed, then out of nowhere it rebooted itself and began an
"update" process that took the better part of 30 minutes!  I was forced to
skip Futurama and just go straight to the origins of the universe.  Fucking
bastards....  </rant>

--Kris

---

## #62876 — Will Fitch — 2012-09-06T20:07:25+00:00

URL: https://externals.io/message/62780#62876 · In reply to: #62875

> On Tue, Sep 4, 2012 at 12:15 AM, Stas Malyshev <smalyshev@sugarcrm.com
> > […]
>
> > […]
> This is why I love Mr. Torvalds!  Unlike people like Jobs and Gates, Linus
> stands firmly against the whole, "We know what's best for you better than
> you do" mentality.
>
> My newly-acquired Kindle Fire pissed me off last night.  I turned it on to
> watch an episode of Futurama and read some pages from Hawking's "The Grand
> Design" before bed, then out of nowhere it rebooted itself and began an
> "update" process that took the better part of 30 minutes!  I was forced to
> skip Futurama and just go straight to the origins of the universe.  Fucking
> bastards....  </rant>
>

You win the most random rant of the year award, Kris.


>
> --Kris
