Półprzepuszczalne lustro



Korzystanie z Linuksa na dłuższą metę ma ten urok, że niejako naturalną jest obecność sterowników stworzonych przez analizę zachowania sprzętu i binarnych driverów. Przechodzi się do porządku dziennego nad utalentowanymi programistami, którzy pieczołowicie, funkcja po funkcji, piszą obsługę najnowszych zabawek.

Łatwo — bardzo łatwo! — zapomnieć, że sam sprzęt i binarne sterowniki nie wzięły się znikąd. Kod nie został stworzony przez milion małp uderzających w klawiaturę (chociaż w przypadku firmware można mieć takie wrażenie). Gdzieś tam są ludzie, projektanci, którzy układ tych bramek logicznych wymyślili; którzy rozrysowali sobie na kartce planowany schemat działania, na długo zanim w krzemie uformowano układ scalony.

Niesamowita asymetria wręcz uderza. Nie mamy najmniejszego pojęcia, dlaczego wymyślili układ tak, a nie inaczej. Jakie przesłanki nimi kierowały. Natomiast z drugiej strony? Mają dokładny wgląd w postępy prac nad reverse engineeringiem. Wszystkie listy mailowe są otwarte. Bez ograniczeń czytają dyskusje, zgadywanki. Przeglądają pieczołowicie odtwarzane listy rejestrów. Z pewnością chichoczą widząc znaki zapytania w tworzonej dokumentacji.

Sam chyba nie potrafiłbym znieść takiego napięcia. Widząc jak ktoś pakuje się w ślepy zaułek, bo wyszedł z błędnej hipotezy, nie wytrzymałbym. Napisałbym maila, wskazał kierunek. Zwykła ludzka przyzwoitość pchała by mnie do przekazaniu bratu-programiście wiedzy, którą ja mam.

Ale ci ludzie milczą. Z pewnością od czasu do czasu sprawdzają, na ile amatorzy rozgryźli zagadkę wyrytą przez nich w krzemie lata temu. Aż w końcu otwarty sterownik jest na tyle zaawansowany, że firma podejmuje decyzję o oficjalnym udzieleniu wsparcia.

I znów, firma nie jest jakiś sterowanym komputerowo bytem. Składa się z ludzi. I to ludzie ostatecznie podejmują decyzję: czy włączać się w rozwój open source czy jeszcze poczekać obserwując inkubację. Proces decyzyjny jest z pewnością równie fascynujący, co sama analiza sterowników.

Lustro półprzepuszczalne nazywa się fenickim, błędne jest określenie weneckie.


Archived comments:

torero 2014-03-11 11:40:17

Zastanawiałem się kiedyś nad podobną sytuacją, tyle że w kontekście "spece od algorytmów Google vs. specjaliści SEO". To samo swędzenie paluchów, mniemam.

> Lustro półprzepuszczalne nazywa się fenickim, błędne jest określenie weneckie.

A "ci" w zdaniu "Ale ci ludzie milczą" piszemy małą literą ;)

zdz 2014-03-11 12:56:37

Tak, dokładnie taka sama sytuacja.
Wielką literę poprawiłem.

sprae 2014-03-11 13:41:11

Wydaje mi się, że ci z AMD chichoczą tak samo, mimo udostępnionej dokumentacji.

Masz złe założenie. To nie są utalentowani programiści. To tylko ludzie, którzy podjęli się zadania, bo mają wystarczająco dużo wolnego czasu.

sprae 2014-03-11 13:50:30

Co do napięcia to operujesz na niskiej warstwie abstrakcji. Rejestry nie są problemem. Problemem jest raczej konstrukcja programu.

Zwykle jest tak napisana by w głowie programisty system wydawał się logiczny i okraszony ideologią maksymalnej przenośności. To powoduje, że nie jest on wydajny. Bo się nie skaluje wydajnościowo. Programiści innych firm by musieli ślęczeć i wskazywać im błędy konstrukcyjne powodujące przepisanie całego kodu na taki niezgodny z ideologią.

Właśnie dlatego jedni pracują w poważnej firmie, robiąc wydajne sterowniki, a drudzy za darmo klepią by zaspokoić ciekawość i potrzeby społeczności.

d33tah 2014-03-11 15:46:19

@sprae: zapominasz o programistach, którzy publikują kod na wolnych licencjach bo muszą albo bo wybrali tak na przykład ze względu na PR. Wtedy to nierzadko SĄ profesjonaliści.

Zresztą, to chyba taki FLOSSowy mit. Słaby programista napisze program, ale nie DOSTARCZY oprogramowania. Trzeba trochę wiedzieć o inżynierii oprogramowania oraz zarządzaniu projektami, żeby stworzyć program na tyle atrakcyjny, żeby inni chcieli go rozwijać.

sprae 2014-03-11 19:11:50

Myślę, że programiści oddelegowani przez firmy głównie robią to, by sprzęt działał zgodnie ze specyfikacją i nie eksplodował.
Resztę radosnej <ekhm> twórczości pozostawiają społeczności.

Jajcuś 2014-03-11 19:49:16

> Właśnie dlatego jedni pracują w poważnej firmie, robiąc wydajne sterowniki, a drudzy za darmo klepią by zaspokoić ciekawość i potrzeby społeczności.

Nie zgodziłbym się. Programiści „pracujący w poważnej firmie” z jednej strony może i mogą zrobić lepszą robotę, bo im za to płacą i ich do tego wybrano (wyselekcjonowani specjaliści), ale ośmielę się twierdzić, że jednak większe znaczenie ma dostęp do specyfikacji sprzętu, czy nawet komunikacja z inżynierami projektującymi sam sprzęt.

Zapaleńcy z kręgów FLOSS – akademicy, hobbyści, czy wręcz niektórzy użytkownicy (także biznesowi) sprzętu, są w stanie tworzyć lub współtworzyć naprawdę wydajne sterowniki, ale producenci sprzętu nie zawsze są, z mniej lub bardziej zrozumiałych powodów, tym zainteresowani. Więc powstają niedoróbki, po jednej i drugiej stronie. „Wydajne” sterowniki od producentów sprzętu, nie wykorzystujące potencjału systemu operacyjnego i kłócące się ze wszystkim innym w systemie oraz pisane na ślepo i po omacku otwarte sterowniki.

Poza tym, „poważna firma” jest zwykle zainteresowana tylko rozwojem sterowników „na teraz”, dla aktualnego sprzętu i żeby było lepiej niż to co ma konkurencja (nie musi być tak dobrze, jak się da). Jeśli chcemy w swoim systemie operacyjnym obsługi, na przyzwoitym poziomie, sprzętu sprzed dwóch lat i starszego, to nie możemy się na „poważną firmę” oglądać.

Popatrzcie na świat sterowników kart sieciowych – otwarte sterowniki, zwykle pisane przez producentów sprzętu, ale przy pełnej współpracy z community open source. NAPI AFAIK wyszło z community, a nie od producentów sprzętu, a pozwoliło stworzyć wydajne sterownik do kart sieciowych wszystkich liczących się producentów. I to nie są zabawki, na tym działa większa część Internetu.

Z drugiej strony mamy karty graficzne, z którymi wiemy jak jest. W większości tworzone po omacku, przy pomocy reverse engeenering. Obecnie tylko intel naprawdę stara się przy dostarczeniu sterowników dla Linuksa i przy ulepszaniu podsystemu grafiki w Linuksie. Ale co z tego, jak AMD w swoich sterownikach korzysta tylko z części tego podsystemu, a resztę zastępuje swoją wersją (zamiast pracować nad ulepszeniem podsystemu). nVidia to już wszystko chyba robi po swojemu. Do tego dochodzą sterowniki Open Source, bo nie każdy lubi lub może używać zamkniętych. Bajzel i brak dobrego sterownika do popularnego sprzętu.

Nie lepiej jest w bardziej niszowych, ale profesjonalnych zastosowaniach. Ja mam nieszczęście pracować przy ISDN… tam dopiero jest masakra. Niby _jakieś_ sterowniki open source producenci dostarczają, ale każdy inny, często nie na aktualny kernel… i brak community, które by to „by zaspokoić ciekawość i potrzeby społeczność” ogarnęło… Wybór sprzętu, to od razu któregoś z wielu API, niekoniecznie tego, które się w danym zastosowaniu sprawdzi najlepiej. Masakra.

Współpraca producentów ze środowiskiem Open Source tylko by poprawiła jakość sterowników do wszelkiego sprzętu. No właśnie, wszelkiego… niektórzy wciąż uważają, że na „mniej złym” sterowniku budują swoją przewagę nad konkurencją. Przykład kart sieciowych (gdzie są i lepsze, i gorsze, i tańsze, i droższe, mimo otwartych sterowników opartych na wspólnej bazie), czy kontrolerów dyskowych (nie mam na myśli pseudo-RAID-Windows-only), pokazuje, że nie musi tak być.

sprae 2014-03-11 20:32:39

Intel też odchodzi od rozwiązań społeczności bo się gorzej skalują. Niedawno zapowiedzieli odrzucenie kompilatora shaderów na rzecz własnego.

Producentów obowiązuje konkurencja na wydajność (obecnie także na pobór prądu) i tego się trzymają. Jeśli Linux jakimś cudem stanie się znaczącą platformą do gier to po wymysłach FLOSS nie pozostanie nawet linia kodu. Jak na Androidzie.

mt3o 2014-03-12 08:56:38

> Producentów obowiązuje konkurencja na wydajność (obecnie także na pobór prądu) i tego się trzymają. Jeśli Linux jakimś cudem stanie się znaczącą platformą do gier to po wymysłach FLOSS nie pozostanie nawet linia kodu. Jak na Androidzie.

No, bo przecież kernel, sterowniki, GUI i inne takie są przecież zamknięte, tak jak GAppsy. Zaś AOSP oznacza Android clOsed Source Project. Srsly?

> Producentów obowiązuje konkurencja na wydajność (obecnie także na pobór prądu) i tego się trzymają.

Z pewnością dlatego, gdy Valve portowało bodaj hl2 na linuksa, to po skończonej pracy FPS na linuksie był większy niż początkowo na windowsie, a fps na windows był docelowo tylko trochę mniejszy niż na linuksie, ale i tak więcej niż bazowo na windows. Bo przecież zamknięty kod jest lepszy...

sprae 2014-03-13 19:14:43

Poprawa wydajności wynikała z optymalizacji silnika Valve i profilowania sterowników Nvidii. Gdy zmiany się zsynchronizowały z Windows, ten pokazał jeszcze więcej FPS.

Ja bardzo lubię Linuksa, bo to platforma o znakomitych możliwościach, ale nie ma co przeceniać wartości softu.

Comments


Comments powered by Disqus