Niniejszy artykuł ma na celu przybliżenie największych zalet BeOS'owego systemu obsługi plików – BFS, który doczekał się swojej opensourceowej implementacji w Haiku (główne cechy tych obu systemów obsługi plików są więc bardzo podobne).

Niewątpliwie dobrą stroną wspomnianego wyżej Be File System jest obsługa atrybutów. Atrybuty do określonych rodzajów plików dodajemy za pomocą aplikacji File Types z menu Preferences. Dzięki nim możemy do każdego pliku dodać tzw. "meta" informacje. Jednym z przykładów zastosowania atrybutów jest kategoryzacja plików. Możemy np. pododawać kategorie "rodzina", "przyjaciele" i "zjazd PZPR" do zdjęć. Jeżeli utworzymy specjalny atrybut "tematyka" jako domyślnie dołączany do plików typu "image/jpeg" (można do kilku na raz, więc np. "image/jpeg", "image/gif" i "image/png"; można też za jednym zamachem do wszystkich obrazków czyli typ "image"), to w Trackerze możemy włączyć kolumnę, która będzie pokazywać zawartość tego atrybutu w plikach (to trochę niedokładne określenie, bo atrybuty nie znajdują się w plikach, a raczej są "doklejone na wierzchu" ;).

Kolejną cechą BFS, wyróżniającą ten system, jest obsługa Live Queries, która to łączy się z atrybutami. BeOS potrafi na bieżąco obserwować atrybuty i nazwy plików tworzonych na partycjach BFS (a teoretycznie każdej, która obsługuje live queries). Dzięki temu po wyszukaniu plików, okno z wynikami może być na bieżąco uaktualniane. I tak np. po wyszukaniu plików z tekstem ".jpg" w nazwie otrzymamy okno z aktualnie istniejącymi plikami. Ale jak tylko ściągniemy z sieci kolejny, lub zapiszemy nowy z aparatu czy też programu graficznego, to okno wyszukiwania zostanie uaktualnione o ten nowy plik. Zaraz ktoś powie że tak jest i w innych systemach. Jest, ale tylko podobnie (na zasadzie BeOS to czekolada, a reszta to wyrób czekoladopodobny ;). Na innych systemach taką funkcjonalność musi implementować każda z aplikacji osobno, albo przynajmniej jakaś biblioteka systemowa, wykorzystywana przez aplikacje. Na BeOSie jest to "wbudowane" w obsługę partycji, przez co jest to znacznie szybsze/sprawniejsze oraz łatwiejsze do wykorzystania przez programistów.

Gdy połączymy Live Queries z atrybutami, to możemy wyszukiwać np. wszystkie pliki, które mają atrybut "tematyka" o wartości "rodzina" :). Co prawda nie do końca jest tak pięknie i żeby wyszukiwać taki plik trzeba wyszukiwać po atrybucie, który jest indeksowany przez partycje (lub wyszukiwać po kilku atrybutach, z czego co najmniej jeden jest indeksowany). Aby dodać indeksowanie jakiegoś atrybutu wykonujemy komendę terminal'ową:

mkindex -t string tematyka

(tutaj używamy typu "string" oznaczającego wartość tekstową, gdyż taki właśnie typ ma atrybut "tematyka" dodany w File Types. Aby zobaczyć inne typy danych możliwe do indeksowania możemy użyć komendy "mkindex" bez żadnych dodatkowych opcji).

UWAGA: jeżeli utworzymy index dla atrybutu "tematyka" po utworzeniu plików z takim atrybutem, nie zostaną one zindeksowane. Tylko pliki utworzone po dodaniu index'u będą uwzględniane. Jednak jest na to rada: programik reindex, napisany przez znanego w społeczności Axel'a :).

UWAGA2: komendę trzeba wykonać na każdej partycji, z której chcemy korzystać przy Live Query. Czyli: cd /boot; mkindex -t string tematyka; cd /InnaPartycja; mkindex -t string tematyka.

Podałem tylko prosty przykład. Ale np. mail'e mają kilka atrybutów i można je łatwo wyszukiwać z poziomu Tracker'a.

Dzięki atrybutom i indeksowaniu BFS uzyskuje niespotykane w innych systemach cechy, które można wykorzystać np. w instalatorach aplikacji. Dzięki nim można przykładowo odinstalować tylko jedną bibliotekę, a program dokonujący deinstalacji sam wyszuka zależne paczki i usunie te, które przestałyby działać bez tej biblioteki (w przypadku bibliotek można oczywiście przeszukać wszystkie inne biblioteki i dopiero ustalić zależności, ale jeżeli zrobi to wcześniej instalator, proces odinstalowywania będzie szybszy).

Dodatkowym plusem może być zapisywanie zdefiniowanego Live Query jako pliku. Taki plik można potem otwierać z poziomu Tracker'a, jakby to był zwykły katalog zawierający te wszystkie pliki, które spełniają kryteria wyszukiwania.