A jó URI-k nem változnak

Az eredeti dokumentum:
Cool URIs don't change
www.w3.org/Provider/Style/URI
A lefordított dokumentum:
www.w3c.hu/forditasok/sikos/uri/uri.htm
Magyar fordítás (Hungarian translation):
Dr. Sikos László (leslie [kukac] lesliesikos [pont] com)
A fordítás státusa:
A W3C dokumentum fordítása a Szerző, Tim Berners-Lee írásbeli engedélyével, a fordításokra előírt formai szabályok szerint, lelkiismeretes szakfordítói munkával készült. Ennek ellenére nem lehet kizárni, hogy hibák maradtak a fordításban. Emellett a magyar fordítás nem is követi feltétlenül az eredeti angol nyelvű dokumentumon végrehajtott jövőbeli változtatásokat. Ezért a fordítás nem tekinthető normatív W3C dokumentumnak.
Megjegyzések a fordításhoz:
1.) A fordítással kapcsolatos olvasói észrevételeket a fordító e-mail címére továbbíthatja.
2.) A fordító a saját megjegyzéseit feltűnően elkülöníti a dokumentum szövegében.
3.) A fordítás során az eredeti dokumentum forráskódja nem lett megváltoztatva.

W3C Style Guide


A jó URI-k nem változnak

Mi jellemzi a jó URI-t?
A jó URI nem változik.
Melyek az URI változásának fajtái?
Az URI-k nem változnak: mi változtatjuk meg őket.

Elméletileg semmi okunk rá, hogy megváltoztassuk az URI-ket (vagy beszüntessük a dokumentumok karbantartását), a gyakorlatban viszont annál több.

Elméletben a domain-név tulajdonosa birtokolja a domain nevet és így minden benne levő URI-t is. A fizetésképtelenséget leszámítva semmi sem gátolhatja meg a domain-név tulajdonosát a név megtartásától. Elméletileg a domain-nevünk alatti URI hely teljes mértékben a mi irányításunk alatt áll, így olyan tartóssá tehető, amilyenné csak szeretnénk. Talán az egyetlen igazán jó indok arra, hogy egy dokumentum eltűnik a webről, az az, hogy a domain nevet birtokló vállalat befejezte tevékenységét, esetleg anyagilag nem engedheti meg magának a szerver tovább működtetését. Akkor miért van olyan sok holt link a világon? Sokszor egyszerűen csak az előrelátás hiányából. Néhány ok, amire hivatkozni szoktak:

Egyszerűen csak átszerveztük weblapunkat, hogy jobbá tegyük.

Valóban úgy érezzük, hogy a régi URI-k nem maradhatnak? Ha így van, nagyon rosszul választottuk meg őket. Gondoljuk át az újakat, hogy meg tudjuk őrizni őket a következő átszervezés után is.

Sok olyan anyagunk van, melyekről nem tudjuk, aktuálisak-e, bizalmasak-e, érvényesek-e, ezért gondoltuk úgy, hogy jobb, ha az egészet leállítjuk.

Ez az, amivel egyet tudok érteni - a W3C is megélt egy ilyen periódust, amikor óvatosan át kellett rostálni az archív anyagokat bizalmasság szempontjából, mielőtt azok nyilvánosságra kerültek volna. A megoldást az előrelátás jelenti - minden dokumentumhoz bizotsítani kell az elfogadás, a létrehozás és optimális esetben még az érvényesség dátumát is. Őrizzük meg ezt a metaadatot.

Szükségét láttuk, hogy áthelyezzük a fájlokat...

Ez az egyik leggyengébb kifogás. Rengetegen nem tudják, hogy a szerverek (mint például az Apache) számos vezérlési lehetőséget kínálnak egy objektum URI-je és a neki megfelelő fájl fájlrendszerbeli helye közötti kapcsolat rugalmassá tételére. Az URI-re mint absztrakt, tökéletesen rendezett helyre tekintsünk. Készítsünk leképezést a ténylegesen alkalmazott implementációra. Ezután kell megadni a szervernek.

Többé már nem John tartja karban ezt a fájlt, hanem Jane.

Mi is volt ez az URI John nevével? Az ő könyvtárában volt? Vagy úgy.

Eddig egy cgi szkriptet használtunk, most pedig egy bináris programot.

Helytelen feltételezés, hogy a szkriptekkel létrehozott oldalak biztosan a "cgibin" vagy "cgi" könyvtárban vannak. Ez a szerver működési mechanizmusától függ. Ha megváltoztatjuk a működést (a tartalmat pedig változatlanul hagyjuk) - hoppá, az összes URI megváltozik!

Vegyük például a Nemzeti Tudományos Alapítványt (The National Science Foundation):

NSF Online Documents (NFS Online Dokumentumok)
http://www.nsf.gov/cgi-bin/pubsys/browser/odbrowse.pl

a dokumentumok kereséséhez használandó főoldal egyértelműen nem olyan oldal, mely pár év múlva is biztosan itt lesz. A "cgi-bin", "oldbrowse" vagy ".pl" mind a jelenleg alkalmazott technológiára utal. Ezzel ellentétben az oldalt dokumentum keresésére használva egy hasonlóan rossz eredményt kapunk

Report of Working Group on Cryptology and Coding Theory (=Kriptográfia és kódoláselmélet Munkacsoport jelentése) címmel
http://www.nsf.gov/cgi-bin/getpub?nsf9814

a dokumentum indexoldalaként, maga a HTML dokumentum ezzel szemben lényegesen jobb:

http://www.nsf.gov/pubs/1998/nsf9814/nsf9814.htm

Utóbbit vizsgálva a "pubs/1998" elősegíti a jövőbeli archíválást a régi, 1998-as dokumentumok osztályozásával. Bár 2098-ban a dokumentumok száma ettől különbözhet majd, elképzelhető, hogy ez az URI még akkor is él majd és az NSF-nek vagy bárkinek, aki gondozni fogja az archívumot, nem fogja zavarba ejteni.

Nem hiszem, hogy az URL-eknek állandóknak kell lenniük - ez az URN-ekre volt igaz.

This is the probably one of the worst side-effects of the URN discussions. Some seem to think that because there is research about namespaces which will be more persistent, that they can be as lax about dangling links as they like as "URNs will fix all that". If you are one of these folks, then allow me to disillusion you. Alighanem ez az egyik legrosszabb mellékhatása az URN vitáknak. Néhányan úgy gondolják, hogy mivel kutatások folynak a jelenleginél jóval állandóbb névhelyekkel, a holt linkeket félvállról lehet venni,mert "az URN-ek ezt lekezelik". Ha ezek közé tartozik, engedje meg, hogy kiábrándítsam Önt.

A legtöbb URN séma, melyet eddig láttam, szerzői azonosítóhoz hasonlított, melyet vagy egy általunk választott dátum és string vagy csak string követ. Ez nagyon hasonlít egy HTTP-s URI-re. Másképp fogalmazva, ha úgy gondoljuk, hogy a szervezetünk alkalmas lesz fennmaradó URN-ek létrehozására, készítsük el őket most és használjuk őket HTTP URI-nkhez. A HTTP kapcsán nincs semmi, ami URI-jeinket labilissá tehetné, ha saját szervezetről van szó. Készíteni kell egy adatbázist, ami a dokumentum URN-t az aktuális fájlnévhez társítja és hagyjuk, hogy a webszerver használja ezt a fájlok visszakereséséhez.

Ha a fentiek megértettük, akkor – hacsak nincs időnk, pénzünk és kapcsolataink szoftverfejlesztéshez – jöhet a következő kifogás:

Szeretnénk, de nincsenek megfelelő eszközeink.

Ezt a véleményt el tudom fogadni, sőt teljesen egyetértek vele. A webszerveren keresni kell egy állandó URI-t és lehívni a fájlt, bárhol is van az tárolva a jelenlegi fájlrendszerben. Felmerülhet az igény, hogy az URI a fájlban legyen tárolva ellenőrzési célokra, az adatbázis pedig folyamatosan aktualizált legyen. Egy dokumentum különféle verziói és fordításai közötti kapcsolatokat is tárolni kell. A véletlen hibák fájlhibáinak védelméül szolgálhat egy független rekordként tárolt ellenőrző összeg. A kiszolgálók alapból nem kínálnak ilyen lehetségeket. Egy új dokumentum létrehozásakor a szerkesztő kéri az URI-t, nemhogy kínálná.

Dokumentumok tulajdonosát, hozzáférési jellemzőit, az archíválás biztonsági szintjét stb. URI változás nélkül kell tudni megváltoztatni.

Egyáltalán nem jó, de ide jutunk. Too bad. But we'll get there. At W3C we use Jigedit functionality (Jigsaw server used for editing) which does track versions, and we are experimenting with document creation scripts. If you make tools, servers and clients, take note! Ez is rossz. De ide jutottunk. A W3C-nél a Jigedit funkcionalitást használjuk (a Jigsaw szervert használjuk szerkesztéshez) a dokumentum-változatok követésére, és dokumentum-készítő scriptekkel is kísérletezünk. Ha szoftvereszközöket, kiszolgálókat vagy klienseket fejleszt, értesítsen minket!

A fentiek számos W3C oldalra állnak, beleértve jelen oldalt is: tegyünk úgy, ahogy mondom, nem ahogy cselekszem.

Miért kell foglalkozni vele?

Ha megváltoztatunk egy URI-t a szerverünkön, teljes bizonyossággal sohasem lehet tudni, kiknek vannak hivatkozásai a régi URI-re. Lehetnek hivatkozások külső weblapokról is. Könyvjelzőt helyezhettek oldalunkra. Az URI-t elküldhették egy barátnak levélben.

Ha valaki követ egy hivatkozást és az nem működik, általában megrendül a bizalom a szerver tulajdonosában. Érzelmileg és gyakorlati szempontból is zavaró lehet, hiszen a nem működő hivatkozás gátolja a látogatót célja elérésében.

Elegendően panaszkodnak folyamatosan ahhoz, hogy a kár egyértelmű legyen. Az is nyilvánvaló, milyen fényt vet egy nem működő hivatkozás az eltűnt dokumentum szerverének üzemeltetőjére.

Szóval mi a teendő? URI-ket tervezni!

A rendszergazdák kötelessége olyan URI-ket kiosztani, melyek 2, 20 vagy 200 év múlva is meglesznek. Ehhez átgondolásra, szervezésre és elkötelezettségre van szükség.

Az URI-k akkor változnak meg, ha van bennük olyan információ, mely változik. Az URI-k tervezésének módja ezért kritikus. (Micsoda, URI-t tervezni? Az URI-ket tervezni kell? Igen, gondoljuk csak meg!) A tervezés legtöbbször információ-kihagyást jelenti.

Egy dokumentum létrehozási ideje - az a dátum, amikor az URI kiosztásra kerül - egy olyan dolog, ami nem változik. Nagyon hasznos a régi és új rendszert használó kérések elkülönítése. Ez egyike azoknak a dolgoknak, mellyel egy jó URI kezdődhet. Ha egy dokumentum nemzedékek érdekeltsége és bármilyen formában dátummal van vagy lesz ellátva, akkor a dátum egy jó kezdőpont.

Az egyetlen kivétel az olyan oldal, mely egy egész szervezet (vagy annak nagy alrészének) "legfrissebb" weblapja.

http://www.pathfinder.com/money/moneydaily/latest/

a legutolsó "Money daily" (= napi pénz - a ford.) cikk a "Money" (Pénz - a ford.) magazinban. A fő ok, amiért nincs szükség ebben az URI-ben dátumra, az az, hogy nincs okunk tovább állandósítani az URI-t, mint ameddig a magazin létezik. A "today's Money" (mai pénz - a ford.) fogalma megszűnik, amikor a Money magazin adott száma megjelenik. Ha a tartalomra szeretnénk hivatkozni, oda kell linkelni, ahol feltűnik az archívumokban, vagyis:

http://www.pathfinder.com/money/moneydaily/1998/981212.moneyonline.html

(Jól néz ki, feltéve, hogy a "pénz" mindig ugyanazt jelenti a pathfinder.com fennállása során. A "98" és egy ".html" miatt ugyan duplikálás van, ami nem lenne szükséges, de egyébként ez például egy erős URI-nek néz ki.)

Mit hagyjunk ki?

Mindent! A létrehozás dátuma után bármely más információ valamilyen módon problémákhoz vezet:

A fentiek alapján egy jobb példa oldalunkra egyszerűen a

http://www.w3.org/1998/12/01/chairs

mely a W3C elnöki ülésének perceiről szóló beszámoló.

Témák és osztályozás téma szerint

Ezt a veszélyt részletesebben tárgyalom, mert azok közé tartozik, amit nehezebb elkerülni. A témák általában akkor szerepelnek URI-kben, ha végzett munkáink szerint csoportosítjuk dokumentumainkat. Ez a csoportosítás viszont változni fog. A témakörök is változni fognak. A W3C-nél például a "MarkUp"-ot (= jelölés) először "Markup"-ra szerettük volna cserélni, majd "HTML"-re, hogy utalhassunk a tartalomra. Ügyelni kell továbbá arra is, hogy ez nem egy hosszú távlatú elnevezés. Biztos benne, hogy 100 év elteltével nem szeretne újra felhasználni semmit? Rövid fennállásunk során mi például újra szerettük volna használni a "History" és a "Stylesheets" (= stíluslapok - a ford.) elnevezéseket.

Ez egy csábító mód webszájtok szervezésére, sőt valójában bármilyen szervezésre, beleértve az egész webet is. Ez egy nagyszerű közepes életidejű megoldás, de komoly hátrányai vannak hosszú távon.

A helyzet részbeni oka a jelentéstartalom. Minden kifejezés lehet csoportosítási téma, ráadásul mindenkinek eltérő lehet a fogalma annak jelentéséről. Mivel a témák közötti kapcsolatok inkább hálószerűek, mintsem faszerűek, még azok, akik megegyeznek egy hálóban, azok is választhatnak fastruktúrát is. Ezek a hierarchikus osztályozás általános megoldásként való használatának veszélyeiről gyakran ismételt általános megjegyzéseim.

Valójában egy témanév URI-ben való használatával bizonyos osztályozásokhoz kötjük magunkat. Előfordulhat, hogy a jövőben egy másikat részesítenénk előnyben. Ekkor fennáll annak a veszélye, hogy az URI nem fog működni többé.

A reason for using a topic area as part of the URI is that responsibility for sub-parts of a URI space is typically delegated, and then you need a name for the organizational body - the subdivision or group or whatever - which has responsibility for that sub-space. This is binding your URIs to the organizational structure. It is typically safe only when protected by a date further up the URI (to the left of it): 1998/pics can be taken to mean for your server "what we meant in 1998 by pics", rather than "what in 1998 we did with what we now refer to as pics." Egy témakör URI részeként történő felhasználásának oka, hogy egy URI részeit általában kiosztják különféle megbízottak között és ekkor szükség van a szervezet - alrészleg, csoport vagy valami hasonló - nevére, mely felelős ezért az URI-részért. Ez URI-jeinket a szervezeti struktúrába szorítja. A módszer általában csak akkor biztonságos, ha egy dátummal van védve. Ha az URI vége 1998/kepek, szerverünknek ez azt jelenti, hogy "amit nekünk 1998-ban a kepek jelentettek", ahelyett, hogy azt jelentené: "amit 1998-ban tettünk azokkal, amire jelenleg kepek-ként hivatkozunk".

Ne felejtsük a domain-nevet!

Ne felejtsük, hogy ez nemcsak az URI "elérési út" részére, hanem a szervernév részére is vonatkozik. Ha néhány kollégának különálló szervert biztosítunk, tartsuk szem előtt, hogy ez a részleg nem lesz módosítható számos hivatkozás tönkretétele nélkül. Néhány tipikus "nézzék, milyen szoftvereket használunk ma" típusú tartománynév például a "vgi.pathfinder.com", a "secure" vagy a "lists.w3.org". Ezek a kiszolgáló adminisztrációjának megkönnyítésére készülnek. Akár vállalat-részleget, dokumentum-állapotot, hozzáférési szintet vagy biztonsági szintet reprezentál, legyünk nagyon-nagyon óvatosak, mielőtt egynél több dokumentumtípushoz egynél több domainnevet használnánk. Ne felejtsük, hogy egyetlen webszerverben több kiszolgáló is elrejthető átirányítással és proxy használatával.

Ja és gondoljunk a domain nevünkre! Ha nevünk nem "soap" [szappan -a ford.], akkor is "soap.com"-ként szeretnénk hivatkozni rá, ha idővel más termék forgalmazására térünk át? (Elnézést kérek a soap.com jelenlegi tulajdonosától, bárki is legyen.)

Konklúzió

Úgy megőrizni az URI-ket, hogy azok 2, 20, 200 vagy akár 2000 év múltán is megmaradjanak, korántsem egyszerű. A világhálón a rendszergazdák folyamatosan hoznak olyan döntéseket, melyek saját dolgukat a jövőben nagyon megnehezítik majd. Ennek gyakran az az oka, hogy a jelenleg legjobbnak tűnő kiosztáokat használják, de senki sem gondolja végig, hogy különféle változások esetén mi történne a hivatkozásokkal. A dokumentum üzenete tehát az, hogy számos dolog változhat, de URI-jeink ugyanazok maradhatnak és azoknak is kell maradniuk. Ez azonban csak úgy lehetséges, ha átgondoljuk, hogyan tervezzük meg őket.

Lásd még:


(vissza a Etiquette for server administrators [=Kiszolgáló-adminisztrátorok etikettje], illetve a Structure of your work [=Munkánk szerkezete] dokumentumhoz.)

Lábjegyzet

Hogyan tudjuk eltávolítani a fájlkiterjesztéseket...

...az URI-nkről egy gyakorlatilag fájl-alapú webszerveren?

Ha például Apache kiszolgálót használunk, akkor be lehet állítani, hogy tartalmi elrendezéseket használjon. Meghagyjuk a fájlkiterjesztést (például .png) a fájlon (például kutyam.png), de a webes forrásra enélkül hivatkozunk. Az Apache ilyenkor ellenőrzi a könyvtár minden fájlját ezzel a névvel és bármilyen kiterjesztéssel, és ki tudja választani a legjobbat (pl. GIF és PNG). (Nem kell a különböző típusú fájlokat különböző könyvtárakba rendezni, sőt akkor a tartalmi rendszerezés nem is működne.)

A kiterjesztést tartalmazó hivatkozások továbbra is működnek, csak azok nem teszik lehetővé, hogy a kiszolgálónk a jelenleg, illetve a jövőben elérhető legjobb formátumokat használja.

(Tulajdonképpen mind a kutyam, mind a kutyam.png és a kutyam.gif érvényes webes erőforrások, csak a kutyam tartalomtípus generikus, a kutyam.png és a kutyam.gif pedig tartalomtípus-specifikus.)

Toplista 1.: Channel 7

1999-ben találtam a http://www.whdh.com/stormforce/closings.shtml oldalt, mely a havazások miatti iskolabezárásokról szólt. Ezekről máskülönben csak a TV alján futó hírekből lehetett volna értesülni. Szóval belinkeltem a honlapomra. Aztán jött az első nagy vihar 2000-ben, s akkor ellenőriztem az oldalt. A következőt találtam:

"Bezárások ...
Jelenleg nincsenek bezárások. Kérjük, látogasson vissza később, ha azt az időjárás indokolttá teszi!"

Nem lehetett olyan nagy a vihar. Az a poénos, hogy a dátum hiányzik. Ha azonban visszatértem a weblap nyitóoldalára, egy nagy "iskolabezárások" feliratú gombot találtam, mely a http://www.whdh.com/stormforce/ oldalra hivatkozott, ami számos bezárt iskola listáját tartalmazta.

Meglehet, hogy megváltoztatták a rendszert, ami a bezárásokat átvette a végleges listáról, de az URI megváltoztatására nem volt szükségük.

Toplista 2.: Microsoft Netmeeting

A növekvő webes függőség egyik velejárója, hogy az alkalmazásoknak lehetnek beépített, a gyártó honlapjára mutató hivatkozásai. Ezt egyesek túlzásba viszik, de az URL-t meg kell őrizni. Egyszer kipróbáltam egy hivatkozást a Microsoft Netmeeting 2-ről / ügyfélként próbálkoztam a "Help/Microsoft on the Web/Free stuff" [=Segítség/Microsoft a weben/Ingyenes] menüpont alatt és egy Error 404 - not found [=404-es hiba - nem található] feleletet kaptam a szerverről. Mostanra már bizonyára elhárították a hibát...

©1998 Tim BL

Történeti megjegyzés: a 20. század végén, amikor ez a dokumentum készült, a címben szereplő "jó" kifejezés a fiatalok körében használatos díszítő jelző az új irányzatok befogadására, minőségére vagy megfelelőségére. A tartománynév és URI elérési út kiválasztását magában foglaló DNS tartományunk sietős kitűzése néha egyértelműen nem a hasznosság vagy hosszú élettartam jegyzében zajlik. Ez a megjegyzés egy kísérlet arra, hogy az ilyen kapkodások mögött meghúzódó energiákat a megfelelő irányba terelje.