Drzewa są wszędzie
Każdy wie, że pliki na twardym dysku są umieszczane w katalogach, które mogą być umieszczone w innych katalogach, a te w innych katalogach, itd. Informatyk powie — pliki są liśćmi w pewnym drzewie. Ta koncepcja jest dość prosta, w miarę wygodna, łatwa do narysowania, w miarę łatwa do poruszania się.
Z drzewami w takim sensie spotykamy się nie tylko w informatyce. Biolodzy operują jednym gigantycznym drzewem, w którego liściach są zwierzęta i rośliny a “katalogi” są w nim grupami, rzędami, królestwami. W firmach mamy naturalną hierarchię kierownictwa. Spisy treści w wielu książkach to drzewa.
Gdy drzewo wyprowadza w las
Znamy to wszyscy: klikam w “Mój komputer” i otwiera się eksplorer prezentujący partycję “c:\” (ikonka twardego dysku) i katalog “c:\Documents and Settings\Marcin” (ikonka folderu, z opisem Marcin’s Documents). W jednym miejscu zostają wyświetlone obok siebie elementy hierarchii, z których jeden jest podrzędny drugiemu. Na dodatek są one od siebie odseparowane linią, która sugeruje, że nie mają z sobą nic wspólnego!
Czy coś tu jest nie tak? Słyszałem już parę razy, że nie bo tak “jest wygodniej”. Nie musi być logicznie, musi być “wygodnie dla użytkownika”. Przez tę nielogiczność moja koleżanka niepotrzebnie robiła dwie kopie zapasowe wszystkich swoich dokumentów. Bo zauważyła, że się pojawiają na dysku zarówno, gdy kliknie się na dysk c, a potem w “Documents and Settings” i wreszcie w swój login jak i gdy kliknie się od razu w “Ania’s Documents”. Można było tego uniknąć? Nie wiem.
Nieco lepiej zorganizowano to w Mac OSX. Katalog marcinb oznaczono ikonką domu, więc niezależnie czy dostanę się do niego wprost (/Users/marcinb) czy “na skróty” (Places -> marcinb), wiem, że jestem w tym samym miejscu.

System plików do zadań specjalnych
Pliki to na tyle wygodna metafora, że korzysta się z nich nie tylko do przechowywania “zwykłych” dokumentów. Np. katalog /proc w linuksie pozwala na łatwe przejrzenie parametrów systemu operacyjnego, jak procesor, ilość pamięci czy aktualnie uruchomione procesy. Niektóre z parametrów można modyfikować (np. io-scheduler), co pozwala na poprawienie wydajności systemu.

System plików proc, oraz informacja o typie procesora z /proc/cpuinfo.
Dość skrajnym przykładem systemu, a raczej systemów plików do zadań specjalnych jest projekt Fuse. Udostępnia proste API pozwalające na tworzenie nowych, originalnych systemów plików do zadań specjalnych. Taki system plików można potem zamontować pod dowolnym unixowym katalogiem. Cała plejada systemów plików ułatwiających przeglądanie archiwów, plików mp3 i innych wymieniona jest na Fuse wiki.
Moim faworytem jest seria union file systems, które pozwalają na łączenie dwóch systemów plików w jeden. Wayback i inne systemy plików pozwalające na wersjonowanie tego, co jest na dysku też bardzo do mnie przemawiają. (To ostatnie trochę przypomina nowy pomysł Apple’a Time Machine.)
Niestety w wielu przypadkach wadą tych systemów jest to, że wpinają się w zwykłe drzewo katalogów udając coś, czym nie są. Źle zaprogramowany system — np z nieskończonie wieloma katalogami — jest w stanie łatwo wyprowadzić komputer z równowagi. Oprogramowanie typu Google Desktop, czy zwykłe slocate, nigdy nie skończy go przeglądać a indeks pochłonie cały twardy dysk.
Jeśli z jakiegoś powodu jeden plik zjawi się w kilku miejscach (bo tak będzie rozsądnie dla użytkownika — przykłady poniżej) zostanie zindeksowany kilkukrotnie a “sprytna” wyszukiwarka może tego nie zrozumieć. Co więcej — może zasugerować, że na dysku znajdują się duplikaty i możnaby część z nich usunąć!
System plików dla dokumentów
Wiadomo, że pliki mp3 zawierają tagi id3. Te tagi pozwalają przypisać plik do zespołu, albumu, numeru ścieżki na płycie, itd. Dlatego np. iTunes może pozwolić na sortowanie i wyszukiwanie plików po nazwie utworu, autorze, roku wydania, gatunku czy płycie. Trudno nam sobie wyobrazić, by mogłoby być inaczej. Przeniesienie tej funkcjonalności na zwykły system plików jest niemożliwe bez linków symbolicznych lub duplikowania zawartości.
Podobną sytuację możnaby sobie wyobrazić dla plików .doc czy .ppt. Mógłbym chcieć przejrzeć dokumenty według daty, autora, firmy która dokument opublikowała, firmy dla której prezentację robiłem, itd. itp. Sami moglibyście wymyślić kilkanaście podobnych zastosowań. Można coś takiego zaemulować przy wykorzystaniu fuse, ale wady wymieniłem już wcześniej.
Dalej o tagach
Gdy nie chce się stosować tagów jak w plikach mp3, można doprowadzić do dość kuriozalnej sytuacji — prosta informacja zostaje niepotrzebnie zapisana w kilku katalogach i ukryta przed użytkownikiem.
Najbarwniejszy przykład, to nowe kamery wykorzystujące format AVCHD. Żeby dostać się do filmu (pliki .mts) trzeba przebić się przez kilka katalogów, które są niezbędne do szczęścia a w instrukcji jest napisane, że nie wolno ich usuwać.

Jestem przekonany, że wszystkie informacje które są rozsiane po 100 katalogach mojej kamery możnaby zmieścić wewnątrz samych plików.
Dałoby się to zrobić jeszcze łatwiej w systemach plików w systemach opartych na tagach. Wrzucamy wszystkie pliki w jedno miejsce, a następnie tagujemy je jak się nam podoba. Potem możemy łatwo wyszukiwać pliki, które odpowiadają dowolnie stworzonej przez nas taksonomii.
Ma to też trochę wad — w tagach zazwyczaj nie ma hierarchi, a pliki bez tagow stają się niemal niemożliwe do znalezienia.
Inne podejścia
Bardzo ciekawym pomysłem na system plików może pochwalić się Microsoft. WinFS” miał być rewolucją dostępną w Vista, niestety nie udało się firmie zdążyć na czas. Szkoda, bo przez to Vista stał się (z punktu widzenia użytkownika) tylko nieco odświeżoną i nie do końca kompatybilną wstecz wersją XP. Więcej o WinFS na stronie msdn.
Przyszłość
Cokolwiek by nie mówić, drzewa już nie wystarczają do zarządzania plikami. Potrzebny jest krok wprzód i czas na projektantów systemów operacyjnych, by zabrali się do roboty. Myślę, że start-up który wymyśli coś nowego w tej działce może łatwo liczyć na przejęcie przez Microsoft czy Apple za naprawdę poważną kwote.
Jest to działka, która wymaga przełomu. Nie drobnego poprawienia istniejących rozwiązań (bo takich już jest za dużo), ale zupełnie świeżego, nowego interfejsu użytkownika.