Archiwalia dla 07.2007

List do Polskiego Komitetu Normalizacyjnego

Pewnie widzieliście już newsa na stronie 7thGuard? Członkowie Komitetu zdają się sugerować, że ich decyzja zależy od opinii uzyskanych od firm, zamiast od sensowności zgłoszonego projektu.

Jeśli ktoś ma problem z napisaniem listu (osoby prywatne raczej niewiele zdziałają, interesują się głównie opinią podmiotów), to poniżej można znaleźć moje wypociny.

Do wiadomości Polskiego Komitetu Normalizacyjnego, a w szczególności komitetów KT 171 ds. Sieci Komputerowych i Oprogramowania i KT 182 ds. Ochrony Informacji w Systemach Teleinformatycznych.

Szanowni Państwo,

W imieniu firmy ITS Ltd. [1], pragnę wyrazić nadzieję, że Komitet nie przychyli się do propozycji standaryzacji formatu OOXML.

Format ten jest formatem konkurencyjnym do już istniejącej i publicznie akceptowanej rodziny formatów Open Document [2] konsorcjum OASIS. W przeciwieństwie do Open Document (ODF, w zeszłym roku przyjętego jako standard ISO 26300), OOXML nie jest wspólnym wysiłkiem środowisk informatycznych, mającym na celu ujednolicenie wymiany dokumentów. Jest to próba umocnienia swojej pozycji na rynku przez monopolistę. Można to bardzo łatwo zauważyć, przyglądając się specyfikacji formatu, który sprawia wrażenie przygotowanego niedbale i w pośpiechu [3].

Dodatkowo, przyjęcie tego formatu jako kolejnego standardu dla wymiany dokumentów biurowych nie daje żadnej korzyści w stosunku do istniejącego formatu ODF. Próba jego standaryzacji jest próbą zepchnięcia kosztów na resztę uczestników rynku oprogramowania. Jeśli standard ten zostanie przyjęty, firma Microsoft oszczędzi sobie konieczności pełnego dostosowania oferowanych produktów do formatu ODF, konkurencja ich zaś będzie zmuszona poświęcić swój czas i pieniądze na zaimplementowanie kolejnego formatu tylko po to, by mieć szansę utrzymania się na rynku.

Jest to sytuacja dalece niepożądana i sprzeczna z zasadami uczciwej konkurencji, a przyjęcie formatu OOXML jako standardu zaszkodzi tak rynkowi, jak końcowym użytkownikom aplikacji biurowych – poprzez wzrost kosztów producentów aplikacji, wielość niezgodnych formatów i zagrożenia patentowe [4].

Również z pozycji naszej – jako firmy zajmującej się budowaniem aplikacji internetowych – standaryzacja ta oznaczałaby konieczność poświęcenia dodatkowego czasu na wprowadzenie i przetestowanie obsługi dodatkowych formatów. Czasu, który wolelibyśmy poświęcić skupiając się na faktycznych potrzebach naszych klientów.

Liczymy na to, że Komisja dołoży wszelkich starań, aby uchwalane standardy leżały w interesie publicznym, a nie wyłącznie monopolistów.

[1] Internet Trading Solution Limited Sp. z o.o. oddział w Polsce, pl. Wolności 11, 50-071 Wrocław
[2] http://www.oasis-open.org/committees/office/
[3] NoOOXML.org, dział “Issues,” http://www.noooxml.org/
[4] http://www.noooxml.org/patents

Z wyrazami szacunku,

Patryk Zawadzki <patrys@pld-linux.org>
programista, pasjonat informatyki, deweloper PLD Linux Distribution

Zawiodła mnie tylko reakcja człowieka, którego bardzo szanuję:

W zasadzie, to mam to w dupie. Już dawno przestały mnie interesować formaty, standardy, janosik, płatnik i wszystko co ma wspólnego z OO w rządzie, szkołach, z wolnymi podręcznikami i całym tym gównem. Sranie w banie, podniecają się fanatycy. Dla mnie to taka mała utopia, krąg ludzi liżących się po fiutach, ze Stallmanem w środku.

Jabber i Fotka kontra naród

Dziś rano Fotka uruchomiła swój serwer Jabbera. Nie korzystam z Fotki, więc jest to dla mnie tylko ciekawostka, że powoli dobrze się w Sieci dzieje. Ważny jest za to sam powyższy wątek.

Targetem Fotki są młodzi ludzie, raczej niespecjalnie zainteresowani technologią (w przeciwnym wypadku używali by Flickra :P). Wiadomość powinna ich ucieszyć, bo dostali dostęp do narzędzia, które może im uatrakcyjnić korzystanie z serwisu (mówimy o środowisku, gdzie prywatne wiadomości są używane częściej niż poczta elektroniczna). Ich reakcja na pomysł przypomina raczej obrady sejmu albo strajk pielęgniarek. Dlaczego?

Problemem jest użyteczność podanej informacji. Pierwszy post w wątku informuje, że uruchomiona została nowa usługa i można za jej pomocą wysyłać prywatne wiadomości. Po więcej informacji ludzie odsyłani są na Wikipedię. W czym problem? Z punktu widzenia nastolatka wygląda to tak: oTpaLiLiśMy nOwoM rZecZ — eGleBeglE, pOpszEs kTurE mOrzNa wYsYlaCi pW, kTure jUsh mI DziAuaJom SłiTaśNiE bEs tEgO.

Brakuje jakiejkolwiek informacji o potencjalnych korzyściach. Nawet start jest utrudniony, bo notka zawiera adres serwera bez słowa komentarza i — jak wynika z lektury wątku — większość ludzi wpisuje go w adres przeglądarki. Dla nich Internet równa się niebieska litera ‘e’ na pulpicie.

Wielkie brawa dla ekipy Fotki za wprowadzenie nowej usługi i wielka szkoda, że została przedstawiona potencjalnym użytkownikom w tak lakoniczny i ociekający informatyką sposób. Uczmy się zatem na cudzych błędach i starajmy, by gratisy nie odstraszały klientów ;)

Kiedy wykopiesz węża ze sklerozą…

Zupełnie nie rozumiem, czemu na Wykop trafił artykuł o odśmiecaniu pamięci w Pythonie, wiem za to, że jest to świetna okazja, żeby się nad nim nieco popastwić. Zacznijmy od tego, że Python nie kończy się niemą samogłoską i nie odmieniamy go z apostrofem.

W przydługim wstępie do jeszcze dłuższego tekstu czytamy, że Python jest językiem. Świetnie. Zastanawiam się w tym momencie, jaki jest target audience owego dzieła, zanosi się bowiem na wykład dla początkujących. Po przecinku atakuje nas jednak automatyczna alokacja pamięci (i co to właściwie znaczy automatyczna — alokacja następuje wtedy, kiedy programista tworzy nowy obiekt).

Atakuje bez uprzedzenia, wypadałoby chociaż wspomnieć, że w językach niższego poziomu istnieją specjalne operatory i wymagane jest jawne zarządzanie zasobami. W Pythonie (w Javie, PHP…) nie jest wymagane jawne usuwanie obiektów, to prawda. Nie zgodzę się jednak z podsumowaniem, że główną zaletą tego rozwiązania jest fakt, że programiści nie muszą się martwić o zabezpieczenie pamięci.

Główną zaletą posiadania dużego trawnika nie jest możliwość rzadszego sprzątania po swoim psie, tak zbieranie psich bobków, jak pilnowanie zakresów buforów jest świętym obowiązkiem programisty i żaden język go w tym nie wyręczy. Autor tego akapitu chyba nigdy nie próbował napisać w C odpowiednika alaMaKota = ' '.join(('Ala', 'ma', 'kota')), gdyby spróbował, to wiedziałby, co jest główną zaletą. Przejrzystość kodu.

Podsumowując wstęp, Python nie jest wymarzonym narzędziem dla programisty. Python jest jednym z języków i — jak każdy z języków (nie zaczynających się słowem visual) — nadaje się do jednych rzeczy, a nie nadaje do innych. Nie wiem też, jakie powinienem mieć oczekiwania względem procesu śmieciarza, ale praktyka każe mi usuwać duże zbędne obiekty niezależnie od używanego języka.

Dalej mamy całą masę oderwanej od przykładów teorii. Wystarczyłoby powiedzieć, że z odśmiecaniem pamięci wiążą się trzy potencjalne problemy:

  • fragmentacja pamięci, która powoduje, że tworzenie dużych ciągłych struktur staje się bardzo kosztowne,
  • wykrywanie wysp, czyli obiektów odwołujących się do siebie nawzajem, ale oderwanych od aktualnego stanu programu,
  • przechowywanie obiektów, które często zmieniają swój rozmiar, na przykład typów numerycznych o nieskończonej precyzji.

Resztę można sprowadzić do stwierdzenia (którego w artykule brak, co oznacza, że ze swoim tytułem nie ma nic wspólnego), że CPython radzi sobie z wszystkimi trzema wymienionymi powyżej. Ni więcej, ni mniej. Żadnej alokacji, dzielenia stosu ani tablic uchwytów przywoływać tu nie trzeba, bo — za przeproszeniem — robi się burdel, a nic z tego nie wynika.

Podsumowując, możesz w Pythonie programować tak samo jak w Javie albo Rubym i wcale nie musisz z głowy recytować algorytmu śmieciarza. Genialne, tylko o czym był ten artykuł i po co trafił na Wykop?

10przykazan jeszcze nie umarło

Właśnie skończyłem kolejny raz przepisywać kod 10przykazan. Wyleciał zupełnie leciwy — i wielokrotnie łatany — MagpieRSS, zastąpiły go curl i XML Feed Parser.

Skutek zauważyć łatwo, bo wróciły do łask blogi, z których notki niechętnie trafiały do serwisu. W związku z tym proszę, żeby zgłaszać mi ewentualne usterki, a postaram się je poprawić, zanim przepiszę kod po raz kolejny.

Kolejna aktualizacja kodu prawdopodobnie będzie oznaczać schyłek ery PHP i dominację niezastąpionego Django. Termin nie jest jeszcze ustalony, ale spodziewajcie się zmian w ciągu trzech-czterech tygodni.

Uprzedzając pytania, tak, dodamy kolejne blogi, ale prawdopodobnie dopiero po reinkarnacji serwisu. W tej chwili wolny czas poświęcam głównie na walkę z tysiącem różnych odstępstw od standardów RSS i ATOM, które można spotkać na blogach już u nas goszczących.

Hardware4Linux

Jest sobie taki skromny projekt, którego jedynym zadaniem jest zbieranie informacji o twoich komputerach. Hardware4Linux, bo o nim mowa, to centralna baza informacji o kompatybilności przeróżnego sprzętu z Linuksem.

W tej chwili jest jeszcze na etapie gromadzenia informacji, ale można sobie wyobrazić, że już niedługo może stać się nieocenionym źródłem informacji dla takich projektów, jak HAL, czy poszczególne dystrybucje.

Jeśli używasz Linuksa i masz chwilę czasu, to zachęcam do zbudowania sobie pakietu hwreport i wysłania wyników jego działania na stronę, gdzie następnie można dodatkowo ocenić i skomentować najważniejsze (i potencjalnie sprawiające najwięcej kłopotów) składniki maszyny.

Cała procedura wygląda tak:

  1. Budujemy (lub pobieramy) pakiet hwreport
  2. Z prawami roota wykonujemy hwreport /tmp/report
  3. Zakładamy konto w serwisie
  4. Uploadujemy plik /tmp/report.tar.bz2
  5. Oceniamy wybrane składniki
  6. Cieszymy się z dobrego uczynku i liczymy na sławę, kobiety lub wygraną w totka

Nadchodzi dobre

Z niecierpliwością czekam na kilka wydań:

Ekiga

Ekiga

Nowa wersja — oprócz sensownego interfejsu użytkownika — będzie oferować wsparcie dla większości dostępnych protokołów. W tym zawiera się obsługa protokołu dostępności. Niestety, Skype nadal pozostaje zamknięty i oferuje posiadaczom Linuksa ułamek funkcjonalności.

Banshee

Banshee

Nowa wersja jest jeszcze szybsza we współpracy z dużymi bibliotekami mediów, a interfejs sprawia, że Rhythmbox może się schować i już planować nowe wydanie.

HAL Quirks

Obrazka nie będzie, bo nie ma co pokazywać. Interesuje mnie przede wszystkim projekt naprawienia klawiszy multimedialnych pod Linuksem. Komplet sterowników dla laptopów poszczególnych producentów i pakiet hal-info wystarczą, by wszystkie przyciski na klawiaturach były w końcu dostępne z poziomu GNOME i KDE. Właśnie pracujemy nad Asusami.

Jeszcze raz o wykrywaniu przeglądarek

Bullsh*t  in buzzword

Pisanie aplikacji webowych ma to do siebie, że czasem różne przeglądarki reagują na nie w nieco nieoczekiwany sposób. Problem może wynikać z błędnej implementacji CSS, z różnic w dostępnych funkcjach JavaScriptu, czasem przyczyną może być też populacja poszczególnych gatunków motyli w Australii (ukłon w stronę domyślnej przeglądarki Microsoftu). Najczęściej wynika jednak z zastosowania czynnika ludzkiego w procesie budowy owych aplikacji i usunięcie usterki sprowadza się do zrobienia czegoś TheRightWay™.

Jeśli boisz się, że twoja aplikacja nie zadziała na niczym poza dwoma testowanymi komputerami, to masz poważny problem. Albo cierpisz na paranoję, albo faktycznie aplikacja nie nadaje się do publikacji nawet w fazie alfa. Jeśli jednak uważasz, że wykrywanie przeglądarek innych niż testowane jest remedium na twoje bolączki, to masz już dwa problemy.

Po pierwsze, nigdy nie przetestujesz aplikacji w każdej konfiguracji przeglądarka + system operacyjny. Nawet gdyby się okazało, że wszędzie działa bez problemu, jeżeli nie pozwolisz ludziom tego sprawdzić, to wątpliwości pozostaną do końca życia. Ludzie, którzy w towarzystwie cieszą się największym autorytetem komputerowego guru i — tym samym — mają największą szansę zareklamować twój produkt wirusowo, często używają mniej popularnego oprogramowania. Ograniczając się do najpopularniejszej trójki, odcinasz się od nich na zawsze.

Po drugie, wyrzucanie gości, jeszcze zanim przekroczyli próg, to bardzo niegrzeczna metoda na powiedzenie komuś mamy was tam, gdzie słoneczko nie świeci. Jeśli aplikacja może rozpadać się na tyle, że nie da się jej używać, to wystarczy grzeczne ostrzeżenie, że za tabliczką spacery odbywamy na własną odpowiedzialność. Dużo więcej zyskasz, jeśli użytkownicy będą mieli szanse zgłosić konkretne usterki. Pomyśl, ile czasu twoi pracownicy muszą spędzić na szukaniu usterek przy dodawaniu obsługi kolejnej przeglądarki. Teraz pomnóż to przez liczbę zaangażowanych testerów i podziel przez liczbę użytkowników aplikacji. Trochę mniej, prawda? Użytkownicy pracują dla ciebie za darmo.

Jeśli jesteś pewien, że twoja aplikacja nie działa poprawnie z konkretną przeglądarką, to masz dwa wyjścia:

  1. Napraw aplikację. Z biznesowego punktu widzenia to jedyna sensowna odpowiedź na powyższy problem.
  2. Jeśli powyższe nie ma sensu, to wykrywaj przeglądarkę, w której aplikacja nie ma szans zadziałać, a nie te, w których testy przeszły pomyślnie.

Do upartych, jak autorzy pokazanego we wstępie buzzworda, apeluję, by przynajmniej wykrywanie zaimplementowali prawidłowo. Gecko to Gecko, czy będę używał Firefoksa, Flocka, Słitaśnej Przeglądarki Patrysa i niezależnie od systemu operacyjnego.