Dziś jest poniedziałek, 8 września 2008 roku (z kalendarza...)

Open-source, a zarabianie

Icon

08.02.2008, 00:16

Komputery

Komentarze (6)

Powrót

Kolejny wpis zainspirowany przez Nowakera poświęcony będzie kwestii zarabiania na rozwoju oprogramowania open-source. Nietrudno napotkać tego typu modele jego tworzenia i budzą one u różnych osób rozmaite odczucia. Mam zamiar rozstrzygnąć, jakie są cele takich praktyk, czy pomagają one w rozwoju projektu oraz jak się najlepiej do nich ustosunkować?

Cel

Powszechny jest pogląd, że oprogramowanie open-source powstaje po godzinach, w wolnych chwilach. Choć w dużej części przypadków jest to prawda, takie podejście budzi zawsze wątpliwość, czy projekt nie zostanie z jakiegoś powodu anulowany. Pół biedy, gdy jest on popularny i pracuje nad nim z dziesięć osób. Na miejsce jednego wchodzi natychmiast kolejny. Jednak są perełki tworzone przez pojedynczych pasjonatów, które wraz z ich rezygnacją umierają śmiercią naturalną. Są to sytuacje ekstremalne. Znacznie częściej bywa, że rozwój takiego projektu jest zakłócany przez inne wydarzenia. Znam to z autopsji, bo nawet ostatnia wersja OPT została wydana znacznie później, niż to było planowane, z powodu przedłużających się prac nad przedsięwzięciem komercyjnym.

Warto też poruszyć kwestię motywacji. Choć cała idea open-source opiera się na swobodnym współdzieleniu efektów własnej pracy, człowiek nie jest maszyną. Może siąść przed komputerem i stwierdzić, że dziś mu się nie chce nic robić na poczet projektu, a skoro nikt go nie ściga, nic się nie stanie. Na sam koniec pozostawiłem kwestię kosztów utrzymania projektu, bowiem w przypadku każdej większej pracy kiedyś przyjdzie taki moment, że trzeba będzie coś sfinansować. Jeżeli się nie ma akurat tyle pieniędzy, kombinuje się z zamiennikami, które nie zawsze są najwyższych lotów. Wszystko to rzutuje na ogólny rozwój całego projektu.

Zalety

Gdy projekt open-source przynosi dochód, odbija się to pozytywnie na całokształcie. Są pieniądze na serwery, są pieniądze na inwestycje, na które normalnie nie można by było sobie pozwolić. I wreszcie: jeśli dochód jest odpowiednio duży, aby się z niego utrzymać, programista może poświęcić mu cały swój czas zawodowy. W dalszej perspektywie użytkownicy zyskują bardziej dopracowany kod, który jest poddawany staranniejszym oględzinom. Można powiedzieć, że jest to wzajemna relacja. Użytkownicy, którym projekt się spodobał lub którzy potrzebują go do jakichś dziwnych celów, płacą za niego i w zamian oczekują, że dostaną coś adekwatnego do poniesionych kosztów. Więc aby tacy użytkownicy nie zrezygnowali i nie zrobili antyreklamy, konieczna jest staranność.

Z grubsza można wyróżnić dwa modele zarabiania na projektach open-source. Część firm lub osób prywatnych stosuje podwójne licencjonowanie kodu. Ogólna społeczność otrzymuje pakiet na którejś z wolnych licencji, zaś gdy licencja ta powoduje problemy ze sposobem wykorzystania projektu (najczęściej działalność komercyjna), twórcy oferują możliwość wykupienia innej. Jednak ogólnie patrząc, licencje open-source wcale nie zabraniają pobierania opłat za rozpowszechniane na ich warunkach oprogramowanie. Sztuczka leży w tym, że jeśli takowe kupisz, możesz je legalnie udostępnić innym za darmo. Przez to zwykłe umieszczenie paczki na własnym serwerze i przycisku "Kup teraz za 100 złotych" nie zdaje egzaminu. Sens robi się większy, gdy w parze za tym idą dodatkowe korzyści. Więcej materiałów informacyjnych, zestaw nowych modułów czy pomoc techniczna to tylko niektóre z udogodnień. Można zapytać, dlaczego dostępne są one za opłatą. Odpowiedź jest prosta: gdyby nie było ich dostępnych za opłatą, najprawdopodobniej nie byłoby ich w ogóle. Niestety, przygotowanie cyklu tutoriali oraz ich aktualizacja to pracochłonne zajęcie. Za darmo żaden człowiek nie będzie na wezwanie pod telefonem 24 godziny niezależnie od tego, co aktualnie robi - inna sprawa, że przy większej liczbie użytkowników jest to także niewykonalne. Tak samo wiele innych dodatków wymaga czasu, który wtedy byłby tak cenny, że nie starczyłoby go na pisanie nowego kodu. To są realia. Jeśli są pieniądze, można to komuś zlecić bez obawy, że dwa dni później powie, że mu się jednak nie chce.

Słuszność

Zwróćmy uwagę, że w tym wszystkim kluczowe jest słowo dobrowolność. Samo oprogramowanie dostępne jest dla każdego zainteresowanego za darmo. Może je legalnie ściągnąć, przetestować, przerobić, wysłać znajomym i nikt go za to do więzienia nie wsadzi. Nie przyjdzie do niego żaden pan z pytaniem, gdzie ma certyfikat autentyczności. Jeżeli projekt mu się spodoba, może wesprzeć autora finansowo, ale nikt go do tego nie zmusza. A jeśli wiąże się to z otrzymaniem szeregu dodatków? Czemu nie?

Uważam, że każdy programista ma prawo do wynagrodzenia za swoją pracę. Jeśli projekt podoba się, należy mu się coś za to, że mu się chciało i dopiął swego - że poświęcił swój czas, żebym ja nie musiał poświęcać swojego. Bo tak naprawdę gdy się coś samemu zacznie pisać, wtedy widzi się, że to nie powstaje w jeden wieczór przy piwku i pizzy, tylko niekiedy wymaga naprawdę sporej gimnastyki oraz umiejętności, które w końcu także na drzewach nie rosną. Może zaprezentuję małą ilustrację sprzed kilku dni z prac nad dziedziczeniem w OPTv2. Pierwsze wyobrażenie po przeczytaniu możliwości: "przyszedł, siadł, napisał, opublikował, fajne". W praktyce zasiadnięcie do klawiatury poprzedzał pewien okres przemyśleń, jak powinien wyglądać całokształt i jak go wbudować w już istniejący kod z zachowaniem kompatybilności. Było tam trochę rozważań w stylu "zrobić tak, czy tak". W końcu nadszedł pewien wieczór i stwierdziłem, że pora to ostatecznie zakodować. Gdyby rozpisać to godzinowo, wyglądałoby to mniej więcej tak:

  • 17.00 - rozpoczynam przegląd istniejącego kodu. Kartka w ruch. Znalazłem notatki z wczoraj.
  • 17.20 - ustaliłem miejsca, które będą wymagać przeróbki oraz wstępną koncepcję, jak je przerobić. Rozpoczynam kodowanie.
  • 17.40 - dokończyłem kodowanie instrukcji snippetów i insertów, bo coś tam brakowało. Stworzyłem szkielet dla "extend". Nagle mi się przypomniało, że muszę jeszcze jedną rzecz zmienić, by mój pomysł w ogóle zadziałał.
  • 18.00 - OK, zmienione. Pasuje do tego, do tego, do tego... o cholera, ale przecież obecny rezultat się lekko kłóci z zamiarami. Świeżo napisany kod do poprawy.
  • 18.10 - zabieram się za przeróbkę kompilatora. Kurde, najlepiej byłoby to przenieść do osobnej metody i sprawić, aby nie przechowywało tych danych w polach klasy. Rozpoczynam więc prace.
  • 18.40 - kod uporządkowany pod zmiany. Zaczynamy testy.
  • 19.00 - OK, kod zdebugowany i się nie sypie. Przy okazji sprawdziłem też snippety. Krótka przerwa. Trzeba coś zjeść.
  • 19.30 - wracam do kodu. Hmmm... napisałem 10 linijek, ale coś mi tu nie gra cały czas. Mam wrażenie, że to nie będzie działać w tej formie. Zaczynam krążyć po domu i myśleć.
  • 20.00 - znów wracam do kodu. Kasuję to i piszę w innym kształcie. Będzie potrzebna struktura drzewa.
  • 20.15 - drzewo ukończone. Trzeba je podpiąć.
  • 20.20 - przejdźmy do parsera, bo tam też trzeba dopisać nową metodę.
  • 20.40 - kurrrr.... straszny się burdel zrobił, parę rzeczy wypada wysłać do osobnych metod.
  • 21.00 - Napisałem instrukcję "extend". Powrót do kompilatora.
  • 21.30 - kurde, większość tego, co jest w instrukcji "extend", musi być w kompilatorze bezpośrednio, gdyż za bardzo to ingeruje w jądro.
  • 21.40 - siadam nad kartką papieru i rozpisuję sobie działanie.
  • 22.00 - shit, kompilator mi wyszedł taki, że jeszcze potrzebuję paru rzeczy w parserze. Przerabiam.
  • 22.30 - gotowe, sprawdzone. Tja, jednak część rzeczy wraca do "extend". Czas na jakiś test.
  • 22.40 - nie działa. Szukamy przyczyny.
  • 23.00 - kij wie, czemu to nie działa. Hmmm... a tak w ogóle to jak się ta reszta szablonów w dziedziczeniu zachowa, gdy to się zacznie rekompilować? Kartka w dłoń.
  • 23.20 - nie. To nie może być tak kompilowane. Błąd w założeniach. Siedzę nad kartką.
  • 23.30 - przyjmuję koncepcję poprzednio odrzuconą. Dla pewności raz jeszcze rozrysowuję schemat kompilacji.
  • 23.50 - tak, teraz już mam pewność, że w takiej postaci zadziała to, jak trzeba. Wykasowałem parę linijek w kompilatorze. Ale późno. Idę spać.
  • 8.00 - z powrotem na kodzie. OK, dokończyłem usuwanie tego, co zbędne, z metody kompilującej. Zaczynam przeróbkę.
  • 8.40 - przeróbka w kompilatorze skończona. Piszę teścik.
  • 8.45 - teścik działa, ale coś dziwnie przymula. Debugujemy.
  • 9.20 - ok, mam błąd. Przy okazji trochę zmodyfikowałem metody w parserze. Działa.
  • 9.30 - hmmm... trochę śmieci zostało po tym moim. Ale trudno. Wychodzę.
  • 11.00 - jestem z powrotem. Czas na porządki.
  • 11.15 - Wywaliłem drzewo, bo niepotrzebne. Posprzątałem po "extend". Przejrzałem kod, pododawałem komentarze. Jeszcze parę testów.
  • 11.35 - działa. Piszemy notkę na bloga.
  • 12.14 - notka poszła w świat.

Około 9 godzin wyjętych z życia. Co prawda wiele rzeczy, jakie pozostały do zrobienia nie jest aż tak czasochłonnych pod względem planowania, ale jednak też sporo zabierają. A jak do tego doliczymy kolejne biblioteki...

Wady

Niestety do wad modelu częściowo płatnego można zaliczyć ludzkie podejście. Człowiek najchętniej chciałby mieć dużo pieniędzy i wszystko za darmo, a że jest to tak samo realne, jak silnik Carnotta, w rzeczywistości jest myślami bliżej lub dalej tego niedoścignionego ideału. Dlatego na widok ofert zakupu niektórzy mogą zrezygnować ze wspierania, nawet pomimo faktu, że uczestniczą w wielu innych projektach, które z czegoś takiego korzystają (chociażby PHP i komercyjna wersja Zend Core, żeby daleko nie szukać). Jak na mój gust, jest to bardzo nieostrożna krótkowzroczność. Osobiście nie mam absolutnie nic przeciwko wspieraniu projektu prowadzonego według jednego z powyższych modeli. Jeśli autorzy uznali, że dobrowolne dotacje są zbyt niepewne i oferują rozszerzony pakiet, w którym mogą znaleźć się moje poprawki - dopóki są one dostępne także za darmo, niech oferują. Zaczęli ten projekt, stworzyli cały szkielet oraz strukturę organizacyjną. Niech mają coś z tego. Ponadto pomyślmy też inaczej: jeśli aktywnie włączę się w rozwój, być może twórcom tak się spodobają poprawki i propozycje, że zapragną mieć mnie w zespole, "za kulisami"?

Zakończenie

Podsumowując - moim zdaniem idea pieniędzy i open-source nie tylko nie są ze sobą sprzeczne, ale idą ze sobą w parze. Odpowiednie fundusze mądrze dysponowane wpływają pozytywnie na całe przedsięwzięcie i w dłuższej perspektywie mogą podnieść jego jakość. Oczywiście korzyści odczuwają wszyscy użytkownicy: i Ci, którzy płacą, i Ci, którzy stwierdzili, że płatna wersja im niepotrzebna. Osobiście nie miałbym nic przeciwko tworzeniu open-source na etacie. Pracuję dla społeczności, bez żadnych nie-wiedzących-czego-chcą-klientów, i nie muszę martwić się o pieniądze dzięki stałej pensji... jak dla mnie, oferta kusząca.

Powrót

Komentarze

Napisał Boreq w poniedziałek, 11 lutego 2008 o 14:19

Zyx, no to postaw się w sytuacji pracodawcy (przedsiębiorcy), który miałby Cię zatrudnić, abyś mógł sobie "dłubać" przy OS-wym projekcie. Czy z jego punktu widzenia oferta jest równie kusząca? Myślę oczywiście o producencie oprogramowania, a nie o jakiejś pseudofiremce, która kątem robi "oprogramowanie" na czasem wątpliwej próby kodzie stworzonym przez tzw. społeczność. Programista też człowiek - zjeść, wypić, mieć gdzie mieszkać mieć musi, a do tego trzeba pieniążków... W ogóle, to sądzę, że luminarze OS po prostu wychowują sobie rzesze klientów, którym w odpowiednim czasie zaczną sprzedawać swoje genialne wynalazki (oczywiście za dużo za duże pieniądze). Oczywiście mówię o generlanej tendencji, nie o konkretnym projekcie. Pozdrawiam!

Napisał Zyx w wtorek, 12 lutego 2008 o 09:27

Producencie oprogramowania = w domyśle Microsofcie? Dla niego faktycznie nie byłaby kusząca, ale jest wielu innych, którzy się właśnie open-source'm zajmują i jakoś nie protestują im programiści na ulicach.

Ponadto: na czym opierasz swoje przypuszczenia? Ja widziałem tylko parę takich przykładów, z czego wiele kończyło się bezsensownie dla producenta:
1. Jeżeli projekt był dotąd wolnym oprogramowaniem, reszta programistów bierze sobie ostatnią wolną wersję i zaczyna legalnie rozwijać ją niezależnie, a reszta wycofuje wsparcie dla całkowicie płatnej wersji. Tak było z XFree86. Gdy FSF ogłosiła, że nowa licencja jest niezgodna z GPL, natychmiast powstał fork X.org i obecnie tego pierwszego nie uświadczysz w praktycznie żadnym systemie.
2. Firmy tworzące dystrybucję Linuksa nawet nie mają prawa zrobić czegoś takiego - nie mają praw autorskich do kodu źródłowego jądra ani większości narzędzi, tak więc nie mogą zmienić im licencji.
3. Zmiany licencji nie działają wstecz. Jeśli otrzymałeś program GPL, a kolejna wersja kosztuje już 1000 euro, obowiązuje Cię licencja GPL.
Tak więc co ty o "generalnych tendencjach" gadasz, kiedy to się kupy nie trzyma? Jeden producent softu sobie postanowi w nogę strzelić, na jego miejsce wejdzie kto inny i tyle. Chyba że sugerujesz jakieś teorie spiskowe. Nawet gdyby wszyscy się zmówili, licencje są tak napisane, że poza trwającym X miesięcy chaosem open-source trwałoby dalej jako forki.

Napisał Boreq w poniedziałek, 18 lutego 2008 o 16:19

Witam! Kompletnie mnie niezrozumiałeś... Nie mówię o Microsofcie, czy innym potentacie. Gdybyś był szefem firmy software'owej i musiał się utrzymać na rynku, czyli sprzedać swoje oprogramowanie - jak wtedy zapatrywałbyś się na kolesia, którego zatrudniasz, a on radośnie oświadcza Ci, że jego interesuje tylko otwarty, dostępny dla każdego kod? Coś czuję, że niedługo byś na rynku wytrwał jak podmiot gospodarczy. Tak więc mówię o czymś zgoła z drugiej strony. Piszesz: "Osobiście nie miałbym nic przeciwko tworzeniu open-source na etacie. Pracuję dla społeczności, bez żadnych nie-wiedzących-czego-chcą-klientów, i nie muszę martwić się o pieniądze dzięki stałej pensji..." - a komu by to nie odpowiadało? Brak obowiazków, rygoru, szef nic by Ci nie mógł powiedzieć, bo w końcu dla szczytnej idei to robisz... Tylko, że to... trochę nierealne (no chyba że znajdziesz takiego sponsora, bo żadna komercyjna firma na to nie pójdzie). PS: wspomnisz za kilka lat moje słowa o wychowywaniu sobie rzeszy klientów;) Pozdrawiam.

Napisał Zyx w wtorek, 19 lutego 2008 o 15:49

Pierwszy lepszy przykład: Zend Technologies, firma w całości zbudowana wokół open-source'owego PHP. Drugi (jeszcze) lepszy przykład: MySQL AB, skupiona wyłącznie wokół open-source'owej bazy danych MySQL. Kto im te programy pisze, jak nie zespoły programistów na etatach współpracujące z ochotnikami z całego świata? Same się przecież nie zrobią. I wreszcie: jakim cudem tego typu firmy egzystują już n lat (żeby tylko egzystowały - rozwijają się na dokładkę) i najwyraźniej mają się świetnie, skoro się rzekomo nie da?

Ogółem, jesteś w błędzie, i to potężnym, bo myślisz strasznie wyświechtanym, stereotypowym szablonem. Jeśli firma jest nastawiona na oprogramowanie zamknięte, to oczywiste jest, że programiści będą pisać oprogramowanie zamknięte. Istnieje jednak kilka modeli biznesowych skupionych właśnie wokół open-source (podwójne licencjonowanie, dodatkowe narzędzia, szkolenia, wdrożenia itd.), gdzie sztandarowy produkt pełni rolę darmowej reklamy. Jak ktoś zainwestował swój czas w poznawanie produktu, być może zakupi dodatkowe narzędzia lub zainwestuje w specjalistyczne szkolenia. W dodatku ma on świetny soft za darmo, a producent - społeczność, która aktywnie pomaga w jego rozwoju, nadsyłając własne poprawki, ulepszenia itd. I teraz pomyśl sam: skoro firma ma w ogóle co sprzedawać dzięki udostępnianiu oprogramowania open-source, to kto jej pisze kod tego oprogramowania? Krasnoludki czy etatowi programiści?

Napisał Boreq w wtorek, 19 lutego 2008 o 18:55

Witam ponownie. Widzisz, jasność formułowania myśli ma wręcz fundamentalne znaczenie. Z treści twojej wypowiedzi możnaby wywnioskować, że chcesz bawić się w programowanie nie przynoszące żadnych wymiernych zysków i do tego jeszcze na koszt pracodawcy. Tyle mógłby wywnioskować postronny, niezorientowany w temacie czytelnik.
Oczywiście wiem, że chodzi Ci tutaj głównie o Zend'a i jego usługi (dodatkowe, płatne oprogramowanie, oferty szkoleń, certyfikacja, podręczniki, etc.), po stronie których byś pracował. Troszkę Cię podpuściłem, ale nie bierz tego zbyt poważnie:). Jednak coś co mnie osobiście irytuje w OS doskonale wyłania się nawet z twojego postu: mianowicie ta lekka hipokryzja luminarzy OS. Widzisz, niejako się zgadziłeś ze mną, że na OS idzie świetnie zarobić. Idzie, a pseudohumaniści OS pierwsi o tym wiedzą i to miałem na myśli mówiąc o wychowywaniu sobie nowych klientów. Nic nie utrzyma lepiej klienta przy produkcie/firmie niż dobra filozofia. Rozumie to MS, Apple, Sony, Zend oraz wielu, wielu innych. Jeśli ktoś tego wzoru nie widzi, to albo cwaniakuje, albo jest półgłówkiem :|. BTW: wspomniany przez ciebie "model biznesowy" dopiero się rozkręca - ale o tym pogadamy za parę lat..;) Pozdrawiam!

Napisał Zyx w środę, 20 lutego 2008 o 22:07

Jeśli mnie podpuściłeś, to przynajmniej teraz już nie powinno być wątpliwości co do opinii autora :). Faktem jest, że wpis ten pisałem bardziej pod kątem wypowiedzi wspomnianego Nowakera na blogu Invenzzii i w sumie ktoś niezorientowany może to niewłaściwie odebrać.

Strona 1 z 1 :: 1

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2008 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia