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