nu, nu așa funcționează!

Cu ceva vreme în urmă, un coleg, iubitor de Linux, se ocupa de niște servere. Dintr-un motiv sau altul am participat la testările din timpul instalării și am văzut de cîteva ori în browser o pagină fantomă:

ScreenShot00891

După cum arăta am fost sigur că e o pagină minimă, tastată de el în 30 de secunde ca să verificăm dacă serverul e vizibil din exteriorul rețelei locale. Am mai văzut odată sau de două ori pagina asta și m-am gîndit că a refolosit-o. Deja unii specialiști ar putea să își dea seama cam cît sînt de pe lîngă subiect cînd vine vorba de software gratuit și cu surse deschise (free/open source). O să spun totuși povestea mai departe din punctul meu de vedere, cel al străinului de această lume.

Am mutat blogul de la blogspot.com, ocazie cu care am avut puțin de lucru cu Linux și cu o mică parte din ecosistemul ce-l înconjoară. Am configurat serverul cu ajutorul aceluiași coleg (căruia îi mulțumesc și aici!).

În timpul configurărilor ce mi-e dat să văd: exact pagina-jucărie despre care în naivitatea mea tîrzie credeam că a fost tastată pe vremuri de coleg pentru teste. Cum de a reușit să o tasteze din nou EXACT la fel m-am întrebat. Mă uit puțin mai bine și înțeleg: pagina nu era o măzgăleală fugară și temporară pentru testarea vreunui port deschis, era pagina de start implicită pentru Apache! A fost o mică nouă revelație și mă bucur că la vîrsta mea mă mai pot minuna la vederea a 45 de bytes.

Apache e un foarte cunoscut și răspîndit server web, poate cel mai răspîndit (nu știu dacă din punctul de vedere al numărului de pagini servite dar probabil din punctul de vedere al numărului de instanțe instalate). Poate că e foarte bun, poate că e foarte sigur sau poate doar pentru că e gratuit – nu am idee cît din fiecare argument a cîntărit mai mult la răspîndirea lui (dacă mă gîndesc mai bine probabil că al treilea argument a primat totuși) dar a ajuns foarte departe.

E vorba de un software folosit pe scară largă de amatori și de profesioniști deci trebuie creditat cu ceva calități. Trebuie să recunosc și că datorită lui Apache pot găzdui mai multe domenii pe aceeași mașină și la aceeași adresă IP, lucru pe care IIS (serverul web din Windows) nu mi-l permite nici pe bani DECÎT dacă vreau să cumpăr Windows Server (ceea ce e clar exclus pentru scopul de a găzdui un blog – două la prețurile la care se învărte). Așadar mulțumesc Apache!

Pe de alta parte nu pot să nu-mi amintesc din nou de mîzgăleala din pagina de start / test. Ce îmi spune ea mie ca om care a scris cîteva linii de cod în viață? Eu citesc în cele două cuvinte exclamate cîteva caracteristici legate de persoana care le-a scris și de multele persoane care au lăsat acel text în Apache de-alungul vremii. Forțez o generalizare care poate e nedreaptă dar simt că se aplică măcar parțial comunității în ansamblu. Cred că aceasta este o parte din cauza entuziasmului unei foarte mici minorități care a îmbrățișat ideologia Open Source / Free Software și pe de altă parte e motivul pentru procentul atît de redus de răspîndire pe desktop a sistemul de operare Linux, exponentul principal al mișcării.

Ce înseamnă mesajul? “Funcționează!”.

Atît.

Asta e semnificația seacă și zeflemitoare a textului afișat (returnat de fapt) de un server web Apache proaspăt instalat. Cine funcționează? Cum cine? Păi cine poate fi SUBIECTUL? Pentru autorul acelui text, contributor la proiect, probabil Apache era singurul subiect semnificativ cu putință. De ce s-ar pune el în pielea utilizatorului? De ce i-ar păsa de muritorii de rînd sau de punctul lor de vedere? Pentru un specialist în Apache/Linux, mesajul e suficient de clar, doar l-a văzut de atîtea ori înainte. Pentru un nespecialist sau pentru un specialist în alte domenii decît Apache, mesajul e unu eliptic, care poate însemna aproape orice și care vădește aroganță superioară: “prostimea să stea în banca ei dacă nu pricepe, aici e știință avansată. EU am lucrat la serverul ăsta, de ce m-aș obosi, publicul larg oricum nu ar pricepe bijuteria pe care o are în față”. Îi poți reproșa ceva? Doar a muncit de plăcere, dacă nu îți convine, nu folosi Apache, e gratis!

Mda, dar și respectul e gratis. Respectul pentru utilizator poate fi pentru un specialist chiar o obligație și o dovadă de competență. Dacă micul geniu s-ar fi pus în locul omului de rînd, ar fi înțeles că dincolo de Apache există viață pe Pămînt, ba chiar că Apache de unu singur nu are niciun sens. Cînd omul de rînd vede mesajul “It works!”, pentru el înseamnă mult mai probabil că ceva NU funcționează! Dacă lucrurile ar funcționa, omul de rînd ar vedea un website, pagini web, poze, texte semnificative. Ce ar putea crede utilizatorul obișnuit cînd deschide în browser o pagină de la o adresă și îi apare mesajul “Funcționează!”? Păi de exemplu că browserul funcționează. Sau că internetul funcționează. Un semispecialist, verificînd conectivitatea la serverul web ar putea înțelege că routerul funcționează sau că website-ul funcționează (cînd el de fapt e gol și probabil cu probleme din moment ce nu are nimic de afișat). Toate astea nu contează. Autorul și-a satisfăcut orgoliul propriu de a fi miștocar și eliptic. Poporu’ să stea acasă, noi aici avem lucruri foarte importante de făcut!

Dacă era vorba de puțin respect față de utilizator, cum putea arăta mesajul? De exemplu putea spune un singur cuvînt în plus: “Apache webserver works!”. Sau dacă programatorul genial și altruist ar fi fost cu adevărat generos, puteam afla chiar și versiunea de Apache care tocmai rulează pe server, eventual și faptul că aceasta este pagina implicită și că serverul nu conține încă alte pagini (de exemplu). Toate astea erau gratuite și luau doar 10 secunde în plus din timpul prodigiosului autor cu condiția ca acestuia să-i fi păsat măcar cît negru sub unghie de utilizator. Dar de ce să-i pese? Doar lucrează de amorul artei, de plăcere sau pentru a-și satisface orgoliul propriu. Care ar fi motivul să-i pese? Respectul? :-)

Așa arată pagina din IIS (serverul web din windows):

7r9aac5m.jpg

Sigur, Windows costă DECI utilizatorii Windows merită respect. Din cauza asta ei află că e vorba de un server web, versiunea 7, proaspăt instalat.

Care e legătura cu cauza în ansamblu?

Imaginați-vă că un număr de entuziaști ar deschide un magazin fără adaos, non-profit, unde personalul lucrează de plăcere, în timpul liber, pentru comunitate. Neavînd salariu sau vreo motivație materială, unii vînzători voluntari ar putea să aleagă să vină sau să plece de la magazin cînd vor sau cînd nevoi mai importante le-o cer. Alții ar putea ironiza clienții doar din amuzament (și cîți tineri extraordinari de teapa asta nu avem…). Le-ar putea clienții reproșa ceva? În ce bază? Doar totul e gratuit, voluntar, benevol. Pleacă la alt magazin dacă nu-ți convine! Cred că e ușor de înțeles că după o vreme, unii clienți ar ajunge să prefere adaosul de la un magazin “normal”.

Așa și cu software-ul: unii clienți nu au timp sau nervi sau disponibilitate să caute pe forumuri ce înseamnă un mesaj criptic, scris deliberat așa, sau fără grija semenilor, de un dezvoltator genial, dornic doar să arate lumii cît e de debordant de inteligent. Pentru unii utilizatori, respectul e important, timpul și nervii lor valorează mai mult decît o copie de Windows OEM.

La baza sistemului Open Source / Free nu stă vreo motivație întemeiată pentru a-ți respecta “clientul”. De fapt el nici nu e client așa că plăcerea dezvoltatorului valoreaza mai mult. Poate asta e una din cauzele pentru care Linux nu prinde pe desktop: utilizatorul mediu, nespecialist, care populează în cea mai mare măsură birourile, nu are multă disponibilitate pentru mesaje arogante ale unor mici genii. O fi asta una din cauzele pentru care Linux stă bine înfipt sub 3% din piața desktop? E păcat. Apache în cazul meu chiar a ajutat. Pe de altă parte în toată ecuația asta, respectul față de utilizator nici măcar nu era o sursă de costuri suplimentare, era gratis, așa cum e Apache, Linux sau Open Office.

11 thoughts on “nu, nu așa funcționează!”

  1. E greu sa le spui oamenilor care fac ceva de placere cum sa faca acel lucru si sa-i motivezi sa ia in considerare parerea ta. E ca si cum ai spune unui pictor cum sa picteze. E adevarat ca daca nu picteaza ce si cum vrei tu nu o sa pui tabloul lui pe perete. La programare e mai altfel putin decit la alte lucruri. De obicei programatorul e deconectat de utilizatori. Si gindeshte foarte diferit de ei.
    Paranteza: imi aduc aminte cum a fost cind am inceput sa scriem primul program de contabilitate de la OSCLabs.ro; o intrebam pe doamna contabila cum face ea “contabilitatea” si ea imi spunea ca uite: prima data incepe cu partea de debit, unde introduce conturi si explicatii si, dupa ce termina, trece pe partea de credit unde iar introduce conturi si explicatii. Avem vreo 22 de ani asa ca nu aveam rabdare sa inteleg totul de la inceput. M-am pus si am creat doua forme, doua pagini diferite, una de debit si una de credit. Acum ma amuz cind imi aduc aminte dar atunci pur si simplu gindeam in paralel cu doamna contabila.
    Cam asa e cu cu programatorul de Apache. El a facut sa mearga apashu si avea nevoie sa testeze ca merge. A facut o pagina care sa-i spuna imediat ca merge, sau lipsa ei sa-i spuna ca nu merge. A lasat-o acolo ca sa poata si altii sa o foloseasca exact cum a folosit-o si el.
    Pana aici toate bune, dar de aici el, daca era profesionist, trebuie sa se gindeasca la utilizator. Chiar daca nu e client. Daca utilizatorului ii place produsul meu o sa spuna si altora si ei o sa-l considere sau chiar o sa-l foloseasca. Si, pac, eu ma simt bine ca uite produsul meu e cel mai folosit. Asta daca ma intereseaza.
    De obicei programatorul e “heads down” (aplecat, nu se uita in jur) in codul lui. Il intereseaza ca programul sa functioneze nu “sa fie frumos” care de multe ori se confunda cu “sa fie functional”. E nevoie de a doua persoana care sa se uite la program cu un ochi critic si sa ii analizeze utilitatea si ergonomicitatea (primesc 10 puncte pt cuvintul cel mai lung?).

    Si inca as mai putea spune …

  2. Cred ca programatorul ala originar are scuzele despre care vorbesti. Faptul ca pina azi hieroglifa dainuie cu mindrie spune ceva despre spiritul miscarii. Codul ala e folosit de milioane de oameni, de companii mari, se poate modifica dupa pofta inimii. Nimeni nu a observat atitudinea neprieteneasca fata de utilizatorul novice? Sau pur si simpl e mindria ca esti mai destept decit ceilalti care sint prea prosti sa te cobori? Asta e si cu linia de comanda la care tinem cu atita disperare in ciuda vremurilor – dar despre asta am alt post, inspirat tot de mutarea blogului ;)

  3. hmmm exista o explicatie relativ simpla aici…

    Mai demult pagina implicita de la apache era una destul de descriptiva:
    Bine ati venit la apache 1.22 pe Redhat 6.2 Compilat cu mod_perl/ PHP 4.1 bla bla bla…. +multe alte chestii.
    Problema era ca de aici un script-kiddie care are si el o lista cu exploituri in default install si the cracking scripts aferente avea fara bataie de cap informatie destula sa incerce sa se dea mare.
    De asta a fost inlocuita cu mult mai prozaicul „it works” care semnaleaza doar ca pe portul 80 e un serviciu functional.
    Cine a pus respectivul apache in general stie de ce l-a pus stie si unde e
    document root si poate inlocui indexul implicit cu ceva mai inteligibil.

    Apache serverul e pentru masele largi.
    Intre server si masele largi zace administratorul.
    Daca vre-o data un end-user vede pagina cu pricina e o
    problema de lipsa de respect a administratorului fata de restul lumii.

    Apache a avut respect fata de el si i-a dat un server functional.
    Cu cit e pagna mai simpla cu atit riscul ca un default install sa fie mai usor explatabil scade.
    Teoretic chestia asta poate fi vazuta chiar ca o dovada de respect.

  4. Security by obscurity nu e chiar cea mai tare treaba, doar vorbim de OPEN source…
    Sa nu te prezinti pentru ca ti-e frica de atacuri nu e o dovada de curaj sau incredere. Cred ca macar atit ar trebui sa crezi in softul tau incit sa speri sa reziste la a-si spune numele :) Oricum „It works!” = „Aici ruleaza Apache”, mesajul ala nu deruteaza niciun script kiddie, poate un biet interesat in trecere.
    Daca ar fi sa mergem mai departe cu un pas, si mai sigur deci si mai respectuos ar fi ca pagina aia (posibil vulnerabila :) sa nu existe deloc. Poti ca specialist (aka script kiddie) sa intelegi ca pe 80 e un server si ca portul e deschis prin metode mai „alese”. Ai mai redus putin din suprafata de atac, esti mai pur.
    Cum de baietii aia cu IIS7 au tupeul sau curajul sa-si spuna numele? Parca la un moment dat, acum citava vreme, IIS era ciur. Uite ca acum au tupeul sa-si spuna pe nume.

    Tu pleci de la ideea ca serveru asta nu se adreseaza maselor nespalate. Chestia e ca nu mai sintem la mijlocul anilor 90 cind asta era o treaba de mare profesionist. Azi omul isi poate pune un server web de hobby, fara sa aibe Administrator angajat full time. Daca am reusit pina si eu…… :)

  5. @idefix: Gresesc cand afirm ca oricum, in instalarea default, Apache-ul trimite in headerul http toate informatiile pe care acel script-kiddie le-ar fi putut obtine din pagina veche, cea care intre timp a fost inlocuita cu „It works”? Iata ce header are serverul euasazic.ro:

    Server: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.10 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g
    X-Powered-By: PHP/5.2.4-2ubuntu5.10

    Ce vreau sa zic: script kiddie-ul nu trebuie sa faca decat un request (chiar si cu o pagina inexistenta) si, pe langa 404-ul aferent, primeste headerul de mai sus cu toate informatiile necesare.

    Deci care e avantajul paginii noi fata de cea veche?

  6. @Tudor&idefix: au! that hurts! :) Vezi ce nasol daca nu ma pricep la software? Aveam sansa sa dau eu raspunsul asta :)

  7. De acord cu mrx aici; nu se poate sa ascunzi informatia utilizatorului ca sa nu o gaseasca cei rai intentionati. De obicei cei rau intentionati sint mult mai indemanatici decit media.
    E ca si cum nu ai pune firma unei banci ca sa nu fure hotii de acolo … dar ai pune eticheta „Deschis”. Hotii ar afla primii ca acolo e o banca si tot posibilii clineti ar fi cei dezavantajati.

  8. As extinde rationamentul cu „hai sa ne ascundem ca sa fim mai siguri”: sa scoatem din sql select version() – poate tradeaza eventuale slabiciuni :)

  9. @Tudor

    E 100% corect ce zici.
    NU e mare diferenta fata de prima versiune a paginii, doar ca nu e in plain sight.
    Cine stie ce e acela un header si cum functioneaza un protocol (http in cazul nostru)
    se ridica un pic peste nivelul de script kiddie.
    Dar daca e rau intentionat cu adevarat si un pic mai competent ca nivel tehnic
    atunci putine chestii il pot opri sa dea cu barda in serverul vizat.

    @mrx 1
    Apache nu e pt elite.
    Dar daca de exemplu e parte a unei solutii de hosting ignorata pentru o vreme si
    care sta in default install pina isi apleaca cineva geana asupra problemei sau e instalat by default intr-o distributie ca urmare a unai alegeri nefericite a utilizatorului (un linux desktop user care isi selecteaza si partea de servere ca i se pare mai cool sau alege „install all” ca nu vrea sa rateze nimic din potentialele minunatii) atunci mai bine anunta doar ca „it works”.
    De altfel distributiile suportate comercial gen suse/novell fedora/redhat vin cu altceva ca pagina default. Ceva ce arata un pic mai profesional.

    Pe de alta parte Apache vine de obicei intr-o distributie de *nix clone si acolo e treaba package-maintainer-ului sa ofere o pagina mai relevanta pentru distributia lui cea plina de sclipici.

    Eu in continuare cred ca Apache foundation si-a terminat treaba cind a lasat anuntul ca „merge”.
    deoarece sint macar 2 nivele de IT professionals care sa schimbe banalitatea de „it works” cu ceva mai relevant.

    Ce am zis eu e doar o posibila explicatie. Nu am pretentia ca e cauza reala a paginii cu pricina.

    @Aburel
    Ce spui tu iarasi e perfect adevarat, dar nu in contextul disutiei.
    Nu ma referam la utilizator.
    Utilizatorul e un surfer de pe net si clientul lui e un browser (IE, FF, Opera… samd).
    Ce vrea el de la site e html servit si frumos rederuit in pagina.
    Cind accesezi un domeniu si esti mai curios de versiunile software ale programelor care ruleaza pe server decit de continutul serverului nu mai esti chiar „utilizatorul”

    @mrx 2
    Daca ajung sa dau sql select version() pe serverul tau, el nu iti mai apartine de ceva vreme.
    E o resursa destinata programatorilor si stii foarte bine ca scopul e sa ii ajute sa optimizeze codul lor in functie de existenta unei anumite facilitati existente doar de la o versiune anume.

  10. Reflectind la cele de mai sus, mi-a trecut printre urechi si ca the „average person” care foloseste un server apache e „version agnostic’ si ca numarul celor care au nevoie de versiune e foarte mic in raport cu media.
    Moment in cre mi-am reamintit ca
    „The average person has one testicle and one breast”
    :P
    P.S.
    Scuze pentru erorile stilistice/gramaticale din postul anterior dar e vineri->simbata @1am in capatul asta de lume unde bat eu in tastatura iar frigiderul cu beri mi-a fost la indemina in repetate rinduri ;)

  11. @Idefix: fara berile alea ne-ai fi lasat nelamuriti ;)
    Oamenii au masuri diferite despre ce inseamna treaba complet sau bine facuta.
    Eu vad anuntul asta de la Apache in cel mai fericit caz (adica daca nu contine misto sau ingimfare) ca pe o cutie postala (sau placuta pe usa) pe care in loc sa scrie numele celui care locuieste acolo scrie „Eu” sau „Locatar”. E mai sigur vs script kiddie (pe hotul adevarat nu asta l-ar opri :) ), e pentru utilizatorul mediu, e generic, e economic (nici macar nu trebuie schimbat textul cind se schimba chiriasul).

    Apache e pentru „elite”. Arata-mi tu mie un copil extraordinar care crede ca le stie pe toate si nu e doctor in LAMP – SINGURA solutie.

    Nu am zis ca musai vreau versiunea acolo, era ok sa scrie ca e Apache. Fara aia putea (si eu chiar cred ca era mai profesional) sa afiseze un 404 ceva… Era explicit si corect.

    De ce trebuie sa fie distributia comerciala ca sa aibe o pagina de pornire mai profesionala? Aici chiar tu lasi sa se inteleaga ca in cazurile mai alese, pagina e mai buna deci este loc lejer si gratuit de mai bine :)

    Nu cred ca e vorba de inca 2 nivele de IT professionals care urmeaza dupa ce apache a lasat treaba …. (ne)terminata. Uite-ma pe mine care iau un appliance cu toate instalate si ii dau drumul: sint un singur nivel si nici macar nu am o vaga idee despre Apache, tot ce stiu sint principii care i se aplica si lui ca si altor chestii pe care se intimpla sa le stiu mai bine. Altii care fac manevra asta pot sa nu fie deloc profesionisti, pot fi pasionati civili. De ce trebuie 2 nivele de IT professionals ca sa iti instalezi un blog? :)

    Pagina care ar fi continut „Apache functioneaza” e agnostica fata de distributie deci „treaba package-maintainer-ului sa ofere o pagina mai relevanta pentru distributia lui” nu se aplica. De fapt asta e un argument des folosit de fanii linux: orice nu e bine, e vina celor care fac distributia. Nu vad cu ce scuza asta rezultatul final. Eu nu am zis ca mesajul asta din Apache trebuia pus acolo de cei care lucreaza la kernel. Mesajul in ochii mei nu are nicio legatura cu aroma sau nunanta distributiei (ubuntu e ok? sa dam vina pe ei pentru mesajul care altfel e complet, nu inteleg de ce incerci sa dai vina pe distribu…itori daca el tot e bun cum e :) ).

    Eu cind ziceam „user” nu ma refeream la cititorul final ci la cel care alege sa foloseasca in solutia lui Apache (cum as fi eu care l-am pus sa-mi fie de folos). Deci eu ca utilizator de Apache (cu greu se poate numi cititorul de blog „user” in contextul asta) pot avea interese in ce priveste versiunea de Apache, ca sa stiu cite secunde in medie dupa ce ajunge „la vedere” ii ia pina e al altcuiva.

    Treaba cu select version era o exagerare pentru exemplificare :) Se pot imagina totusi scenarii (rare) in care tu poti da un select version pe un server care este 100% al meu. E o resursa destinata programatorilor (si in contextul asta USER pentru serverul db ar fi programatorul, nu cititorul de presa pe internet – asa cum in contextul Apache „user” nu e cititorul final cum ziceam). Deci vrei sa dai un select version pe un server care e al meu? :)

Dă-i un răspuns lui Aburel Anulează răspunsul

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *