Jest takie stare już i spatynowane "prawo" czy "zasada" internetu i sieci, ale nawet ogólniej inżynierii IT i elektroniki, wyrażone wprost przez Jona Postela (znaczącego guru w początkach Internetu) w 1981r. w zaleceniach dla protokołu TCP, jako "Bądź konserwatywny w tym, co wysyłasz, i liberalny w tym, co odbierasz". Mówiąc po ludzku, "to", co serwery i klienci sieci IT, ale też ogólniej procesy na jednym systemie, podsystemy komputera, urządzenia elektroniczne, itd. wysyłają, czy "wystawiają", na zewnątrz, do innych systemów czy procesów, powinno być dobrze sformatowane i ustalone, wg odpowiednich standardów i spełniać jak najdokładniej specyfikacje. A to, co obierają od innych, powinno być
jakoś procesowane niezależnie od tego, jak bardzo marnie jest sformatowane i nie spełnia dokładnej specyfikacji, a przynajmniej należy próbować to jakoś obrabiać i procesować (w szczególe - ignorować wszystko co wydaje się "nadmiarowe", zbędne, czy wypełniaczem luk; pierwotnie szło o rudymentarną kompatybilność wstecz).
Przez jakiś żart ponury nazwano (nie pamiętam czy sam Jon) tę zasadę, zasadą stabilności czy solidności (robustness principle).
Tak naprawdę, zawsze była to dla mnie zasada bezsilności tych wszystkich skądinąd przemiłych i inteligentnych guru i ludzi od IT wobec przerastających ich (nas?) problemów technologii i inżynierii IT. Jeśli w ogóle to, co wyprawia się w okolicy IT zasługuje jeszcze na miano "inżynierii".
Gdyż generalnie można przetłumaczyć zasadę Postela na "Działa? Działa. To na ch... drążyć.". A że działa byle jak, na odwal się, nieprzewidywalnie a nawet wręcz niedeterministycznie? Skoro jakoś działa, bierzcie i korzystajcie. Póki działa. Od protokołów niskiego poziomu po HTMLa czy różne API.
Jestem spaczony nieco, bo w takim IT w którym dłubię zawodowo albo i hobbystycznie, czyli bliżej przemysłu i starodawnej inżynierii elektronicznej, elektrycznej czy nawet mechanicznej, jest używana taka bardziej normalna zasada inżynierii - "bądź konserwatywny w tym, co "wysyłasz" i w tym, co "odbierasz"". A jeśli odbierane nie spełnia wymaganych warunów, to jest problem tylko i wyłącznie "nadawcy".
W IT, szczególniej w obszarach "otwartych", w których grają setki, jeśli nie tysiące podmiotów - jak internet, klony-PC, opensource, itp. po prostu okazało się, że nijak nie udaje się, nawet jeśli istnieją solidne standardy, uzgodnić podstawowych "rzeczy", żeby zechciały ze sobą sensownie współpracować. A standardy IT niekoniecznie są jednoznaczne, czy jakieś bardzo solidne.
W obszarach IT "zamkniętych" było nieco łatwiej, bo jednak własne zamknięte rozwiązania jakiś IBM czy Sun czy Oracle mógł wyspecyfikować dowolnie solidnie i dowolnie wytestować. No, raczej w teorii, bo w praktyce jw. nikt tego nie jest w stanie ogarnąć i nie ma na to czasu, więc było tylko nieco lepiej (ale jednak lepiej, stąd np. mityczna solidność systemów Apple czy konsol, w porównaniu z PCtami; "mityczna", bo to solidność tylko w porównaniu z chaosem PCtów i Win). Oraz piszę "było", bo czasy bardzo zamkniętych rozwiązań odeszły w międzyczasie do lamusa, mało kogo stać na to, wszyscy lecą rozwiązaniami "z półki", itd. itd. A nieco metaforycznie mówiąc, jeśli nawet na półce leży
Erlang, niekoniecznie komukolwiek chce się tak wysoko sięgać, skoro Java leży niżej i działa "wszędzie"...
Tu można by napisać książkę, jak ten mindset, stan umysłu, tak naprawdę: ludzi bezradnych wobec tematów IT, przekładał się na mnóstwo "dobrych praktyk", od zalecenia Postela po agile i chmury; ale nie byłaby ani ciekawa ani odkrywcza.
Ostatnio przebąkuje się, że zasada Postela była wymyślona w innym świecie, innych realiów IT, i nie przystaje do współczesności, szczególnie w kontekście potanienia zasobów (tj. narzut na walidacje, "kontrole", itd. jest znacznie tańszy niż w '80) i w kontekście cyberbezpieczeństwa (bo już nie można zakładać jak w '80, że ci, którzy nam pociskają krap w protokołach, procesach itd. to tak tylko przypadkiem specyfikacji nieco się nie trzymają i coś im się popieprzyło, ale wcale a wcale nie szukają exploitów i injekcji, itp. i nie uprawiają hakerki). I że może należałoby wrócić do tradycyjnych ogólnych zasad inżynierii, sprawdzonych przez wieki.
Moim skromnym zdaniem, była wymyślona wtedy, kiedy coraz dobitniej okazało się, że IT to są ogólnie pobojowiska a la geologiczne - warstwy na warstwach na warstwach do n-tej; pełne nieporozumień i badziewia, okazyjnie z błędami, przeskomplikowane, i nikt nie ma czasu ani ochoty, tj. zasobów, żeby robić to wszystko
porządnie. A było to już 35 lat temu... nie, nie zrobiło się lepiej od tego czasu.
Stąd zasada Postela nie odejdzie do lamusa, bo nikt nie zrobi nagle porządnego IT - zasobów jest mniej, a komplikacja większa, niż parę dekad temu.
A szkoda.
(notkę sponsoruje zaduma nad tym, że poza niniejszą stroną z której czytacie, jakoś trudno mi znaleźć COKOLWIEK bardziej skomplikowanego i dynamicznego niż kawałek sztywnego HTMLa, i żeby się zwalidowało w walidatorze W3C (przyciski na dole lewej szpalty) - nie walidują się nie to, że strony Googla, czy
IETF, czy Microsoftu (mwhahaha), ale nawet większość własnych podstron W3C...)