Hi,
seeing proposals that do break backwards compatibility, I believe it’s time to make it clearer as to why backwards
compatibility in GeoServer is very important (and breaking it represents a fatal mistake most of the time).
The common GeoServer deployment in public administrations is one or more GeoServer installations
being accessed by a variety of internal and external clients. The range of clients accessing the server
is vast and often completely out of control of the admins… because this is the nature of an interoperable
service, it does not talk with a specific client, it’s make to talk with everybody.
To give a small summary:
- Internal users using one of the task specific web applications
- Internal users with desktop clients (often different types, different departments might have different desktop clients, sometimes different versions of them, especially if the desktop client in question does not require a licence and the power user in question got the right to install programs locally)
- Other internal services cascading or consuming the OGC service (SOA like)
- External users, same as above but with a lot more variability
The admins every now and then need to upgrade the server, be it because of security reasons, a critical bug fix, or because a new application requires extra functionality provided by a newer version.
When they do so, they need to ensure that everything else keeps on working… and that’s a lot of pain, because most of the clients above are outside of their control, even the in house ones:
- Maybe a web application provided by a external vendor relies on some extra flexibilty (e.g., not requiring the version or service), upgrading it breaks it, but to fix the application a new contract with the provider needs to be setup (administrative and econominal issues arise)
- Maybe an internal desktop client is in the same boat, but an upgrade of the client might require contracts, or verification that plugin X custom developed still works on the newer version, and so on.
Long story short, doing upgrades requires a lot of verification, and the slightest backwards incompatibility just breaks havoc and makes the upgrade impossible (which, in case of upgrades related to security fixes, makes the situation untenable).
That’s why I keep on using a hard line on backwards incompatible changes, even when fixing a mistake: being “right” is not enough, operational continuity is more important than that.
That does not mean we cannot change stuff, but at least a fallback option to re-enable the previous behavior must be always provided.
Cheers
Andrea
PS: there is also a good read here https://en.wikipedia.org/wiki/Robustness_principle
To it, I’d add that on day one it’s good to be as strict as possible, but once the deploys happen, whatever
flexibility remained should be kept.
···
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/it488V for more information.
Ing. Andrea Aime
@geowolf
Technical Lead
GeoSolutions S.A.S.
Via di Montramito 3/A
55054 Massarosa (LU)
phone: +39 0584 962313
fax: +39 0584 1660272
mob: +39 339 8844549
http://www.geo-solutions.it
http://twitter.com/geosolutions_it
AVVERTENZE AI SENSI DEL D.Lgs. 196/2003
Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.
The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy’s New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.