Hi Andrea,
Excellent points - I've seen such deployments first hand.
A prime example of backwards incompatibility between versions is the jump from 
Python 2 to 3. Python 3 isn't entirely backwards compatible with 2 (refactoring 
is often required), so uptake of 3 has been considerably slower than for a 
minor version update.

That said, assuming GeoServer ever makes the leap to 3.x, it may be worth 
considering implementing sufficiently important backwards-incompatible changes 
then, like the Python folks did for Python 3.

Just my 2p,
Cheers,
Jonathan

---- On Fri, 17 Mar 2017 07:48:41 +0000 Andrea 
Aime<[email protected]> wrote ---- 

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.



-------------------------------------------------------










 

 ------------------------------------------------------------------------------ 
Check out the vibrant tech community on one of the world's most 
engaging tech sites, Slashdot.org! 
http://sdm.link/slashdot_______________________________________________ 
Geoserver-devel mailing list 
[email protected] 
https://lists.sourceforge.net/lists/listinfo/geoserver-devel 





------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to