W ostatnich tygodniach, Alexander von Gluck aka kallisti5, dokonał dużego postępu w przenoszeniu nowej Mesy 3D do Haiku. Przez ten okres czasu opracował serię łatek, które dodano do kodu źródłowego Mesa 3D i prawie zakończył trzy z pięciu etapów, które są niezbędne do ukończeniem Gallium 3D dla Mesa. Sama aktualizacja jest już prawie gotowa, trzeba jedynie poprawek i testów.

Alexander von Gluck
Z racji tego, że Haiku R1 ma być zgodny binarnie z BeOSem R5, system występuje w dwóch wersjach. Oficjalne jest on kompilowany za pomocą GCC 2 i nosi nazwę gcc2h (h oznacza hybrid czyli, że zawiera biblioteki GCC 4, dzięki którym działają aplikacje skompilowane w GCC 4 – a takie wymagania/zależności ma większość dzisiejszego oprogramowania i portów). Druga wersja jest nieoficjalna (dostarczana przez developerów Haiku), z której korzysta większość użytkowników, to gcc4h, czyli jest kompilowana za pomocą GCC 4 i posiada biblioteki GCC 2. Istnieją też “standardowe”, mało istotne wersje z bibliotekami jednego rodzaju (gcc2 bądź gcc4). Haiku R1 będzie właśnie posiadać dwa API. Jedno dla starych, BeOSowych aplikacji (GCC 2) i drugie dla nowych (GCC 4). Dlaczego tak jest? Po bankructwie Be Inc. i upadku BeOSa (firmę wykupił Palm i źródła stały się jego własnością intelektualną – później wchłonięte przez ACCESS Co. i jedynie uwolniono kody źródłowe paru aplikacji systemowych, jeszcze za nieboszczki Be Inc. np. OpenTracker) zaprzestano rozwijania aplikacji dla BeOSa i w większości przypadków, nie uwolniono programów na zasadach open source. Następnie twórcy kompilatora GCC wprowadzili w nim zmiany, które doprowadziły do zerwania wstecznej kompatybilności. Aplikacje dla Haiku które posiadają API napisane w C++, muszą być na nowo kompilowane z poprawkami w kodach źródłowych. Problemu by nie było, gdyby programy dla BeOSa były rozwijane na bieżąco. Wtedy twórcy systemu i aplikacji dla niego, mogliby drogą ewolucji łagodnie przystosowywać system pod nowsze wersje GCC.

API i ABI GCC 4 w pierwszym Haiku nie będzie w przyszłości rozwijane, tzn. programy w nim skompilowane dla Haiku R1 nie będą kompatybilne z wersją Haiku R2. Wersja R2 będzie posiadać zamrożone API GCC 2 i nowe GCC 4, jednocześnie developerzy nie planują wrzucać do następcy obsługi API GCC 4 z wersji R1 – nie chcą mnożyć API w następcy. Z powyższych powodów wersja gcc4h Haiku nie jest tą oficjalną(może to ulegnie zmianie w przyszłości pod wpływem różnych czynników) ale nic nie stoi na przeszkodzie by z niej korzystać tak jak to robi większość użytkowników, którzy chcą korzystać z aplikacji skompilowanych w GCC 4 – niektóre porty nie chcą poprawnie działać w wersji gcc2h, gdzie przykładowo media_server jest również w GCC 2, tak jak całe bebechy systemu.

Dla Haiku w wersji gcc2h będzie dostępna tylko Mesa 7.8.2. Mesa 8.0 i jej kolejne wersje, będą tylko w wersji gcc4h Haiku, gdyż w kolejnych rewizjach Mesy zaimplementowano GLSL i twórcy Haiku chcąc udostępnić nowsze wydania Mesy dla starego API, musieliby utrzymywać fork – co byłoby bardzo pracochłonne i wymagało więcej niż jednego developera, który tym się teraz zajmuje w Haiku. Kod C++ GLSL nie jest przyjazny dla kompilatora GCC2. Alexander jest bardzo zadowolony z tego, że jego łatki zostały dodane do kodu źródłowego Mesy i wersja 8.0 buduje się w Haiku tylko z niewielką pomocą z jego strony. Prace polegają na zdalnym pobraniu z serwera Opcjonalnego Pakietu Mesa 3D i użycia różnych plików binarnych i nagłówkowych do utworzenia libGL (za pomocą Haiku OpenGL Kit). W tej chwili projekt Haiku utrzymuje swój własny fork biblioteki GLUT, która to nie jest już aktywnie rozwijana przez zespół Mesy. GLUT był i jest bardzo ważny dla świata BeOSa i Haiku, dlatego jest nadal sens w utrzymywaniu własnego rozwidlenia kodu. Możliwe, że w przyszłości GLUT zostanie zastąpiony w Haiku przez którąś z jego alternatywnych implementacji np. Freeglut. GLUT został przeniesiony z src/lib/mesa/glut do src/lib/glut, a pliki z src/lib/mesa zostały usunięte. Teraz w Haiku wróciliśmy do punkty wyjścia, ale z nowym OpenGL Kit bazującym na bibliotece Mesa 3D i programowym renderowaniem, oraz otwartą drogą do akceleracji sprzętowej.

Nie obyło się też bez błędów. Na przykład demo GLTeapot ma drobne problemy z wyświetlaniem, może być to spowodowane przestarzałym kodem GLTeapot lub jakimś błędem w programowym silniku renderowania. W demie Haiku3d obracające się litery pozostawiają za sobą ślad, problem prawdopodobnie jest związany z przestrzenią kolorów, bo występuje jedynie u użytkowników mających ustawione 32 bity głębi w systemie. Także w tej chwili jest pojedynczy bufor, który powoduje, że czajnik miga, gdy się umieści nad nim kursor. Natomiast podwójny bufor na obecną chwilę wiesza aplikacje GL.

GLTeapot na przeciętnym obecnie sprzęcie działa w Haiku z prędkością 300-400 FPS( software render), a gdy Haiku jest wirtualizowane za pomocą Qemu, to wynosi to około 16 FPS. GLTeapot działał na jego komputerze przez wiele dni i nie zaobserwował on żadnych wycieków pamięci.

Teraz pozostaje nam jedynie czekać na sterowniki i sprzętową akcelerację.

Alexander von Gluck dziękuje wszystkim za wsparcie, komentarze i wpłaty na pracę nad Gallium3D dla Haiku. Przede wszystkim dziękuje zespołowi Mesa 3D za bezproblemową współpracę.

Poniżej prezentuję wywiad z Alexandrem, jaki udało mi się przeprowadzić z nim 22 stycznia 2012 roku:

Przemysław Pintal: Na sam początek chciałbym Ciebie zapytać kim jesteś, skąd pochodzisz, jak znalazłeś się w projekcie Haiku i skąd Twoje zainteresowanie sterownikami kart graficznych?

Alexander von Gluck: Miło mi Cię poznać! Jestem Alexander von Gluck IV, mam 26 lat, urodziłem się i żyję w Teksasie, w pobliżu Houston. Projekt Haiku poznałem wiele lat temu, gdy szukałem informacji na temat mojego ulubionego przez długi czas, systemu operacyjnego jakim był BeOS. Wtedy to chciałem zrobić stronę internetową która mogłaby zastąpić BeBits.

Trochę pokopałem i znalazłem mój post na ten temat, na liście mailingowej Haiku – http://www.freelists.org/post/haiku/Haiku-software-site

Jak pamiętam, to zawsze pragnąłem poznać działanie komputerów na ich jak najniższym poziomie funkcjonowania. W okolicach roku 2003 próbowałem samemu napisać hobbystycznie jakiś system operacyjny( byłem wtedy bardzo początkującym programistą).

Przez wiele lat starałem się dobrze nauczyć C i C++. Co prawda nie wszystko umiem w tych językach napisać, nie jestem bardzo zaprawiony, doświadczony w tym… Najbardziej komfortowo pisze mi się w PHP.

Mój pierwszy sterownik jaki napisałem dla Haiku, to był sterownik USB WiMax dla urządzeń z chipsetem Beceem. Sterownik Beceem był moim pierwszym doświadczeniem w pisaniu i projektowaniu sterowników. To wtedy nauczyłem się co należy robić i jak, a jak nie. Rozwój swojego sterownika zawiesiłem, ze względu na spadek użycia WiMax w USA.

http://cgit.haiku-os.org/haiku/tree/src/add-ons/kernel/drivers/network/wwan/usb_beceemwmx

Moje zainteresowanie sterownikami kart graficznych w Haiku wzięło się z tego, że Urias
McCullough( jeden z developerów Haiku) rzucił mi wzywanie na kanale IRC Haiku, bym zajął się sterownikiem radeon_hd. W tym celu przekazał mi kartę graficzną Radeon HD 4350, bym mógł się tym zająć. Wstydliwie muszę przyznać, że przez lata byłem fanem Nvidii i kupowałem ich kart graficzne ze względu na ich wsparcie w Linuksie. Ten Radeon okazał się być pierwszym Radeonem którego używałem przez długi okres czasu.

Przemysław Pintal: Dla których kart graficznych w pierwszej kolejności zrobisz sterowniki?

Alexander von Gluck: Chciałbym w pierwszej kolejności zająć się Radeonami HD, od chipu R600 wzwyż. Sterowniki do nich są najlepiej rozwinięte w Gallium 3D. W każdym razie jeszcze nie zdecydowałem.

Przemysław Pintal: Czy myślisz, że kiedyś otwartoźródłowe sterowniki będą kiedyś wydajniejsze, lepsze od własnościowych, jeżeli prace nad nimi będą postępować tak jak teraz?

Alexander von Gluck: Myślę, że pewnego dnia tak. Sam naocznie przekonałem się ile AMD włożyło pracy w rozwój otwartych sterowników, poświęcając temu kilku developerów. Słyszałem także, że Intel nie próżnuje i otwiera specyfikacje swoich chipów graficznych.

Przemysław Pintal: Jak myślisz, kiedy możemy spodziewać się wsparcia dla OpenCL w Haiku?

Alexander von Gluck: AMD i Mesa od kilku miesięcy ciężko pracują nad dodaniem OpenCL w Gallium 3D( za pomocą LLVM).

Mesa pracuje nad uzyskaniem wsparcia dla OpenCL w Gallium 3D, a ja pracuję nad wsparciem Gallium 3D w Haiku… Myślę, że wkrótce :).

Przemysław Pintal: Co myślisz o PowerPC? Poświęciłeś tym procesorom jedną z notek na swoim blogu i napisałeś trochę kodu. Czy tak jak inni developerzy Haiku miałeś kiedyś któryś ze starych komputerów, może; ZX Spectrum, Atari, Commodore, Amiga, Amstard, etc? I stąd ten sentyment? Myślę, że przy tak małej społeczności i liczbie developerów powinniśmy się całkowicie skupić na architekturze x86. Zwłaszcza, że inne architektury są słabo dostępne i bardzo drogie, a z ARM nie zrobimy sobie PeCeta chyba, że dopiero architektura ARMv8 to zmieni.

Alexander von Gluck: Tak na prawdę to nigdy nie miałem innych komputerów niż zgodne z IBM, x86. Były one przed moim czasem( chociaż interesuję się starymi komputerami).

Aktualnie interesuję się PowerPC w typowo nerdowsko-techniczny sposób. Na co dzień jesteśmy zanurzeni w x86 i przyjemnym orzeźwieniem jest spojrzenie na stare komputery i inne architektury. Osobiście chciałbym pewnego dnia zobaczyć jak Haiku działa na PowerPC, nawet jakby nie było innego powodu niż taki, że ten interesujący sprzęt leży sobie zakurzony i porzucony przez Apple. Myślę, że byłoby to ciekawe hackowanie. Oczywiście zgadzam się, że przy takich środkach powinniśmy się skupić na x86, ale podczas pisania i projektowania kodu powinniśmy myśleć o innych platformach, że pewne rzeczy mają się inaczej tam i że pewnego dnia będziemy uruchamiać Haiku na innych architekturach.

Przemysław Pintal: Jak oceniasz całokształt rozwoju Haiku? Co Ci się podoba a co nie? Co byś zmienił? Co by można było zrobić lepiej?

Alexander von Gluck: Ja zawsze lubiłem pracować dla Haiku. Chciałbym tylko by było jak najwięcej utalentowanych programistów pomagających Haiku, niż tej pomocy było potrzeba( tu był idiom, wskazówka dla mnie bym się zajął pisaniem kodu przyp. red.).

Przemysław Pintal: Co myślisz o tym, że większość użytkowników prawdopodobnie będzie migrować na wersję gcc4h Haiku, gdzie będą cieszyć się sprzętową akceleracją i innymi rzeczami? Że wersja gcc2h może być używana jedynie przez developerów?

Alexander von Gluck: Pełna kompatybilność z BeOSem na poziomie ABI, zawsze będzie celem projektowym dla wersji R1 Haiku.

Ja osobiście czuję, że wraz z upływem czasu maleje sens posiadania klonu BeOSa zgodnego z GCC 2. Jest coraz mniej przypadków użycia BeOSowego, zamkniętego oprogramowania napisanego w latach 1997-2001. Nie mówię, że zgodność binarna jest zła… Myślę, że zbyt dużo czasu na tym skupialiśmy się. Jest coraz trudniej kompilować nowoczesne oprogramowanie za pomocą GCC 2, który jest już wiekowy i gdzie mamy m.in. brak standardu C99. GCC 2 nie jest już kompilatorem dla żadnego projektu.

Prywatnie chciałbym aby wersja gcc4hybrid stała się tą oficjalną ale wiem, że dużo ludzi nie zgadza się ze mną i mają ku temu swoje powody.

Przemysław Pintal: Czy grasz w jakieś gry i czy Haiku może stać się dobrą platformą dla gier( gry niezależne)?

Alexander von Gluck: Nie jestem jakimś zapalonym graczem, ale chciałbym zobaczyć Minecrafta pod Haiku.

Wcześniej dłubałem trochę przy paru portach gier Indie dla Haiku. Nie jest to zbyt trudne zadanie, zwłaszcza dla gier napisanych z użyciem SDL.

Przemysław Pintal: Jakich programów najbardziej brakuje Ci w Haiku?

Alexander von Gluck: Tak po prawdzie to niczego. Sam od bardzo dawna używam Linuksa na swoim komputerze. Haiku używam codziennie, ale Linux nadal napędza mój desktop.

Przemysław Pintal: Na sam koniec chciałbym zapytać czy miałeś jakikolwiek kontakt z polską społecznością Haiku? Jeśli tak to jakie odniosłeś wrażenie? Czy masz jakiekolwiek skojarzenia z Polską i czy znasz jakieś słowa po polsku ;)?

kallisti5: Niezbyt wiele, Teksas jest trochę odizolowany :P.

Niestety z powodu natłoku obowiązków, Alexander nie mógł mi odpowiedzieć na dwa pytania. Jedno dotyczyło anegdot z życia społeczności, zlotów fanów systemu i zespołu programistów Haiku. Drugim pytanie było to, czy różnice w architekturach systemów Haiku i Linuxa mogą spowodować to, że Mesa 3D może działać szybciej na Haiku, lub odwrotnie. Pytanie dotyczyło ogólnie wydajności OpenGL i czy może być lepiej niż na Windowsie.

  • kde5

    Ten Haiku to w koncu ma być komkurencja na desktopy dla MACOSX, Linux czy PC-BSD bo już od dawna o nim słyszę ale rozwija się chyba bardzo wolno i chyba tylko developerzy go używają. Jak PLD Linux.

    • HubertB

      Hmm, no nie tylko developerzy bo i jeszcze testerzy;)
      Tak, to ma być konkurencja jeśli chodzi o desktop.
      A rozwija się wolno bo ma nieporównywalnie mniej programistów w tym momencie niż chociażby Linux.

    • Anon

      Przecie to jakis badziew. Z czym to ma konkurowac no sorry? Dziala cos na tym? Nie. To po co to rozwijac? To juz Linux jest lepszy.

      Co mozna robic na tym Haiku?

    • HubertB

      Badziew to nie będę pisał kto u ciebie w rodzinie popełnił bo byłoby to niegrzeczne.
      Ma konkurować z czym się komu żywnie spodoba.
      Tak, działa coś na tym.
      Na Haiku można dużo rzeczy robić.

      A co Ty robisz na swoim komputerze?o.O

    • Ja blokuje ACTA!

    • Często pod każdym newsem o Haiku pojawia się taki komentarz. Według mnie można to tłumaczyć jedynie poczuciem zagrożenia. Wbrew pozorom to dobry prognostyk.

      Mała ilość środków przesądza o tempie rozwoju. Jeszcze parę ficzerów i kilkanaście zalatanych błędów, a przynajmniej ja będę mógł używać Haiku na co dzień.

  • Anon

    Czy z Haiku nie jest tak jak z ReactOS? Ktoś to tworzy a mało kto używa?

    • Więcej osób tworzy i więcej używa. A Haiku działa o wiele lepiej i stabilniej.

  • Anomalia

    @Przemysław Pintal, widze, że dużo piszesz o Haiku. Powiedz tak swoim okiem, czy do codziennej pracy można na tym systemie pracować?

    • Codzienna praca może oznaczać różne rzeczy. Na przykład przeglądanie internetu, oglądanie filmów, praca z pakietem biurowym, albo tylko siedzenie na necie etc.

      Odpowiem, że nie bo na jednej konfiguracji wszystko działa jak trzeba, Haiku jest jak skała, a na drugiej są zwiechy. Po prostu niezałatane błędy, albo nie zgłoszone jeszcze błędy.

      Ja sam polecam wypróbowanie tego na maszynie wirtualnej, trzecią alphę i jakieś najnowsze nightly. Jak chcesz możesz sobie wydzielić małą partycję np. 3 GB żeby instalować tam kolejne nightly, jeśli Ci się system spodoba.

      Ja zawsze przypominam o drobnym błędzie, który dla nieobeznanego użytkownika może być mega w*urwiajacy. Na niektórych dyskach powyżej 250 GB, może się uszkodzić tablica partycji z systemem Windows, jak użyjemy do zrobienia( jak kasuje 3 gigowa NTFS i robie 3 gigową BFS) partycji BFS instalatorowego programu to może się tak stać. Co ciekawe jak zaznaczę tę partycję i jej nie kasuje, tylko każę przerobić na BFS, to jest wszystko w porządku. Możliwe, że jest to już naprawione ale nie dam głowy. W razie czego należy użyć Hiren Boot CD i programu DiskGenius, do naprawy.

      Z resztą to alpha i wiadomo, że instaluje się takie oprogramowanie na własne ryzyko.
      Poza tym brakuje paru ficzerów w niektórych systemowych aplikacjach. Z resztą jest mało aplikacji na Haiku, więc początkujący programista może się łatwo wybić.

      Przeportowano na system QT, więc można korzystać z wielu aplikacji – co ciekawe wyglądają jak natywne.
      http://qt-haiku.ru/

      Na to pytanie musi sobie odpowiedzieć każdy sam. Mi tylko brakuje kilku programów( np. żeby natywna przeglądarka internetowa była lepsza) i kilkunastu zalatanych błędów.

      W każdym razie jak się Haiku spodoba, to warto śledzić jego rozwój. Bo pewnego dnia możesz dojść do wniosku, że dla Ciebie już się nadaje. Ja codziennie sprawdzam co zmieniono w kodzie i jakie naprawiono i zgłoszono błędy. Jakbyś natrafił na jakieś błędy to je zgłoś!
      http://dev.haiku-os.org/

  • tonuhawk

    Czy ten Haiku jest lepszy bardziej bezpieczny od systemów Net/Free/Open/BSD? Ma więcej pakietów, jest stabilniejszy? Czy stara szkoła programistów takich jak Teo (openbsd), Linus(linux) nie jest lepsza od tych młodzików co piszą

    “Przez wiele lat starałem się dobrze nauczyć C i C++. Co prawda nie wszystko umiem w tych językach napisać, nie jestem bardzo zaprawiony, doświadczony w tym… Najbardziej komfortowo pisze mi się w PHP” Smiem twierdzić że Ci starzy Dinozaury umieją wszystko w nich napisać. A zwłaszcza w C.

    • Nie ma więcej pakietów i nie jest stabilnijeszy, bo to alpha.

      Druga rzecz jest taka że bezpieczeństwo to zależy głównie od użytkownika. Multiuser nie jest priorytetem( i najprawdopodobniej developerzy będą chcieli wymyśleć coś innego, śledziłem dyskusję na IRCu). Przynajmniej ja nigdy nie korzystałem z tego w żadnym systemie na dłuższą metę i na desktop za bardzo nie ma to sensu. Chociaż przypomniało mi się, że widziałem jakiś program, czy dodatek który to dodawał.

      Względem FreeBSD to stamtąd są wzięte sterowniki do kart Wi-Fi, wpa_supplicant, etc.

      Liczy się przede wszystkim jakość kodu, projekt i filozofia używania systemu operacyjnego. Mi sposób używania Linuksa i FreeBSD nie odpowiada, dlatego siedzę na Windows i Haiku.

      Nawet jak potrafią wszystko napisać, to tego wszystkiego jakoś nie ma.

    • Greg

      Takie moje nieśmiałe pytanie. Piszesz, że liczy się "filozofia", to o co chodzi?

    • http://api.haiku-os.org/HIG/ – ten jeszcze niedokończony dokument wiele wyjaśnia.

      Druga rzecz jest taka, że systemy uniksopodobne są nastawione na użytkowników( nie tych co siedzą i się gapią na monitor i klikają), a nie procesy.

      Plus takie rzeczy jak lekkość i prostota.

  • variograf

    A ja nie rozumiem, czemu zawsze pod info o systemach alternatywnych innych niż Linux pojawiają się ciemne komenty w stylu “po co to komu?” a po to byś się pytał ćwoku! Linux też tak zaczynał i gdyby Linus Torvalds miał taką niechęć do jego systemu “po co to przecież Billi rozwija dosa, windows, jest apple, workbench, po co ci jakiś klon minixa?” to dzisiaj Ms miałby 100% monopol a tak ma tylko 97% ;)