################################################################# # # # # # Ten Rok w DotGNU # # # # Nr 1 # # # # 2001 -- Rok, w którym narodziło się DotGNU # # # # # # Rok temu nic nie było, # # a teraz jest coś. # # # # Rhys Weatherley # # # ################################################################# Ostatnio na liście majlingowej deweloperów DotGNU padła propozycja, żeby "DotGNU" interpretować jako rekursywny akronim (taki jak GNU stanowi dla "GNU's Not Unix") .. więc może będzie tak, że "DotGNU" naprawdę znaczy coś jak "DotGNU over the GNU Networking Universe". Jak by jednak nie było, budujemy coś, co może być zwane "systemem operacyjnym dla internetu" - zbiór narzędzi pozwalający częściom oprogramowania współpracować z innymi poprzez internet. Generalna strona projektu: http://www.dotgnu.org Spis treści =========== Rozdział A: DotGNU - Odwalanie za Ciebie webowej roboty! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Departament "Nowego i Fajnego Oprogramowania" ma zamiar przycią- gnąć twoją uwagę do tych artykułów: 1. DotGNU Portable.NET (razem z jego kompilatorem C#, runtime i powiązanymi narzędziami deweloperskimi) napisany przez wiodącego dewelopera Portable.NET Rhys Weatherley 2. phpGroupWare (zbiór aplikacji do pracy grupowej, mogących być używanymi poprzez dowolną przeglądarkę jak również przez inne programy via XML-RPC). napisany przez wiodącego dewelopera phpGroupWare Dan Kuykendall Rozdział B: DotGNU - Utrzymując Cię od zagmatwania się w Sieci! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Od początku byliśmy zaniepokojeni faktem, że prawdopodobną inten- cją Microsoftu, jeśli chodzi o platformę .NET, jest usidlenie i złapanie deweloperów. Nie ma wątpliwości, że jest to pewną właści- wością firm produkujących oprogramowanie chcących rozszerzyć ich monopol systemów operacyjnych dla desktopów o Autentykację / Auto- ryzację / Identyfikację Wirtualną systemów w internecie. Jednym z głównych celów projektu DotGNU jest chronić przed tym i, generalnie, dostarczać narzędzia dla serwisów web nie "zamkniętych przez dos- tawcę" w jakimkolwiek tych słów znaczeniu. 3. Dyskusja majlowa nad polityką autentykacji i IDsec pomiędzy Richardem Stallman, Davidem Sugar i Tonym Stanco DotGNU jest sponsorowane przez FreeDevelopers (założony przez Tonego Stanco) i przez projekt GNU (założony i prowadzony przez Richarda Stallman). David Sugar jest przewodniczącym Komitetu Sterującego DotGNU. 4. Pytania i Odpowiedzi na temat "Serwisów Web" napisany przez Norberta Bollow (członek Komitetu Sterującego i ko-założyciel <> projektu DotGNU) Rozdział C: DotGNU -- Wielkie Przedstawienie ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 5. Źródła projektu DotGNU napisany przez Barry Fitzgerald (członek Komietetu Sterującego i ko-założyciel projektu DotGNU) 6. Przegląd DotGNU napisany przez przewodniczącego Komitetu Sterującego DotGNU Davida Sugar 7. Przepis na DotGNU napisany przez członka Komitetu Sterującego DotGNU Arun M. Rozdział D: DotGNU -- Wspólnota ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ten rozdział zawiera informacje na temat DotGNU od różnych wnoszą- cych w niego udział ludzi, wyjaśnienia w jaki sposób opiekują się projektem DotGNU. ################################################################# # # # Rozdział A: DotGNU -- Odwalanie za Ciebie webowej roboty! # # # # Artykuł 1: DotGNU Portable.NET (razem z jego kompilatorem # # C#, runtime i powiązanymi narzędziami # # developerskimi) # # # # napisany przez wiodącego dewelopera # # Portable.NET Rhysa Weatherley # # # ################################################################# Projekt Postable.NET rozpoczął się w styczniu 2001, a jego celem było zbudowanie silnika uruchomieniowego (runtime engine), kom- pilatora C# i biblioteki systemowej C#. We wczesnych początkach zrealizowałem ten cel budując infrastruk- turę dla runtime engine zgodną z kodem potrzebnym dla kompilatora C#. W szczególności, procedury czytające i zapisujące metadane w runtime engine, które mogą również być używane przez kompilator jako wewnętrzna reprezentacja klas. Ot tego momentu szybko pojawiły się asembler, disasembler i inne narzędzia deweloperskie. W tym momencie runtime engine, kompilator i biblioteka C# były ciągle w formie raczej embrionalnej. Biblio- teka C# została podzielona na drzewo "pnet" z drzewa "pnetlib", tak, by mogłabyć użyta przez inne projekty. Gdzieś koło końca kwietnia stało się jasne, że tworzenie kompila- tora C# staje się problematyczne. Ten poziom złożenia był tak du- ży, że błędy w kodzie wywoływały dreszcze. Użyłem sposobów podob- nych to tych z poprzednich projektów kompilatorów ale również miałem problemy ze złożonością. Mój pomysł był technicznie po- prawny, ale zwykle ilość elementów pogrążała kod. Więc wróciłem do tablicy by przemyśleć temat i dokonać kilku odkryć. Wynikiem było narzędzie "treecc", które daje zorientowane na wygląd podejście do budowania kompilatorów. Złożoność użyta wcześniej, powodująca tak wiele problemów stała się teraz prosta do obsłużenia. Kompilator C# został przepisany i udoskonalony na początku lipca. Odkryłem również, że szkielet treecc można łatwo użyć z innymi niż C# językami i kodem bajtowym o formacie różnym od IL. Obsługa kom- pilacji C# do JVM i Java do IL powinna pojawić się na początku 2002 roku. W sierpniu Portable.NET i DotGNU połączyły się. Największy postęp nastąpił w infrastrukturze rdzenia, bibliotece C# pnetlib i w kom- pilatorze C#. Ale runtime engine ciągle wlókł się gdzieś za nimi. Natura polimorficzna zestawu instrukcji uczyniła bardzo trudnym zbudowanie efektywnego runtime engine. Rozpocząłem pracę nad innym projektem by wynaleźć nowy engine. Zakończyło się to "Skonwertowaną Maszyną Wirtualną" ("Converted Virtual Machine", CVM) we wrześniu 2001. Był to zupełnie nowy pomysł na interpretety kodu bajtowego. Zamiast interpretować bezpośrednio skomplikowane instrukcje IL, kod bajtowy jest kon- wertowany na inny zestaw instrukcji, który może zostać sprawnie zinterpretowany. Jednym z głównych korzyści nowego pomysłu na engine jest to, że można bardzo łatwo w przyszłości dodać obsługę JIT. Sam CVM jest istotnie "JIT kodu bajtowego" ("bytecode JIT"). Najcięższa robo- ta jest już wykonana, tak więc napisanie natywnego JIT jest teraz naprawdę prostym zadaniem. Na koniec roku 2001 Portable.NET osiągnęło taki stan, że mogło uruchomić proste przykładowe programy, a jednym z nieco bardziej skomplikowanych jest gra video "Curse of Frogger". Największym obszarem do zrobienia na początku 2002 roku jest za- kończenie kompilatora C# i biblioteki C# i rozpoczęcie prac nad x86 JIT. W mojej prywatnej perspektywie widzę Portable.NET jako interesu- jące ze względu na poszukiwanie technik implementacji języków, które pojawiają się podczas moich prac nad projektem. Mam nadzie- ję "wykręcić" jakieś inne narzędzia, takie jak treecc, które będą przydatne nie tylko dla Portable.NET ale także dla innych projek- tów Free Software. ################################################################# # # # Rozdział A: DotGNU -- Odwalanie za Ciebie webowej roboty! # # # # Artykuł 2: phpGroupWare (zbiór aplikacji do pracy grupo- # # wej mogących być używanymi przez dowolną prze- # # glądarkę jak również przez inne programy # # via XML-RPC). # # # # napisany przez wiodącego dewelopera # # phpGroupWare Dana Kuykendall # # # ################################################################# phpGroupWare jest opartym na web i samej sieci serwisem aplikacji pracy grupowej. Zawiera wszystkie standardowe aplikacje PIM takie jak email, kalendarz, książka adresowa, lista rzeczy do zrobienia i notatki. Ale jest odpowiednio mocny, dobrze zdefiniowane i łat- we do użycia API pozwala na pełną integrację z innymi programami. Wszystkie aplikacje są instalowane opcjonalnie, można więc odpo- wiednio wybrać jedynie te aplikacje, które są potrzebne użytkow- nikom. W normalnym trybie użytkownicy wolą wybrać budzący strach interfejs sieciowy, ponieważ wszyscy tkwimy w standardzie HTML na tyle, na ile to możliwe. Interfejs web jest najlepiej obsługiwanym interfejsem dla aplikacji phpGroupWare, ale nie jedynym. Przy uży- ciu prostego protokołu XML-RPC, który jest obsługiwany przez phpGroupWare, deweloperzy i użytkownicy mogą mieć dostęp do apli- kacji, ich funkcjonalności i danych z innych programów. Aplikacje te muszą być co prawda napisane w języku obsługującym XML-RPC, ale zdaję sobie z tego sprawę. To czyni phpGroupWare "serwisem web", a jest tak ponieważ oferuje on funkcjonalność jako serwis dla in- nych aplikacji i daje deweloperom i użytkownikom moc i elastyczność. Serwisy web nie rozwiązują wszystkich problemów, ale otwierają duże możliwości dla niezależności języka i platformy, jak ułatwienie przenoszenia większej ilości dzielonego kodu i funkcjonalności wię- kszej niż kiedykolwiek. Na razie możliwości te są jedynie widoczne, ale *zmienią się* od czasu, jak aplikacje zostaną rozwinięte. Łącząc siły razem z DotGNU będziemy w stanie ponieść naszą wspólną wiedzę i doświadczenia w rozwijaniu niezłych aplikacji i serwisów dla użytkowników. DotGNU jest skupione wokół na innych rzeczach, na serwisach autentykacji i rozwiązaniach kodu bajtowego niezależ- nego od platformy do czasu kiedy grupa rozwijających phpGroupWare skupia się na rozwiązaniach bazujących na Groupware. Gdy te dwie rzeczy zaczną razem działać ich technologie staną się użyteczne. Jednak dla grupy rozwijających phpGroupware ważniejszą rzeczą jest użyczyć doświadczeń związanych z uniwersalnymi ustawieniami pre- ferencji serwisów, co nastąpi po próbach z serwisami autentykacji. phpGroupWare uczyni nagle użytecznym standardy DotGNU jak tylko wyjdą i staną się wielkim polem testowym DotGNU a sytuacja ta da phpGroupWare szansę wpłynięcia na ważne standardy. =================================================================== "Ten rok w DotGNU - Nr 1 -- Wszystkie artykuły są zastrzeżone przez ich autorów. Kompilacja zastrzerzona w 2000r. przez Norberta Bollow Wszystkie prawa zastrzeżone. Dosłowne kopiowanie, rozpowszechnianie w dowolnym medium, formacie jest dozwolone pod warunkiem zachowania tej informacji ===================================================================