Zalogowany jako: gość

Forum

Wątek: Kod Eltena - licencja, współpraca

Wróć do listy wątków

1 z 1

1 z 5: pajper

Ostatnio pojawiają się skargi pod moim adresem, jak również zapytania, jeśli chodzi o otwartość Eltena, jego kod źródłowy i wszystkie tematy z powyższym związane. Postanowiłem więc napisać ten dokumencik, aby spróbować rozwiać wszelkie wątpliwości i uzasadnić decyzje.

Spis treści:
1. Licencja,
2. Kod źródłowy,
3. Zasady współpracy,
4. Pola współpracy.


1. Licencja.
Elten jest oprogramowaniem otwartym (open-source). Nie jest jednak oprogramowaniem wolnym.
Podlega pod licencję Open Public License. W skrócie założenia są następujące:
1. Kod źródłowy programu jest publicznie dostępny.
2. We własnym zakresie możecie robić z nim, co chcecie: uczyć się z niego, tworzyć usługi bazujące na Eltenie... Ktoś chce mieć serwis wysyłający mu maila, gdy coś się stanie na forum? Bardzo proszę.
3. Zakazane jest jednak publiczne udostępnianie jakichkolwiek klonów, pochodnych, inspiracji Eltena lub też wykorzystywanie jego kodu w innych projektach bez zgody autora.
Powyższy punkt nie ogranicza jednak w żadnym stopniu możliwości rozwijania Eltena, proponowania nowych funkcji i poprawek, o czym szerzej w pkt3 tego dokumentu.

2. Kod źródłowy.
Kod źródłowy Eltena jest aktualizowany przeze mnie po wydaniu każdej kolejnej bety, zwykle w ciągu godziny od publikacji. Gdybym o czymś zapomniał, ścigajcie mnie.
Gałąź stabilna:
https://github.com/dawidpieper/elten2
Gałąź beta 2.3:
https://github.com/dawidpieper/elten2/tree/elten_2.3
Klient napisany jest w języku Ruby, serwer obecnie w języku PHP.
Kodu serwera w żadnym razie nie można brać za ostateczny, powiem więcej, mam nadzieję, iż znajdzie się czas, by przepisać go niemal od zera.
Kod klienta mniej-więcej ostateczny jest tam, gdzie nie pojawiają się nowości, a sam plik wygląda na uporządkowany. Tam, gdzie jest chaos lokalny... No cóż, to są pierwsze wersje programu i wymaga to stosownego ogarnięcia. W tym, oczywiście, także można pomóc.
Kilka założeń związanych z budową źródeł Eltena:
1. Układ:
A. Ostatecznie (Elten 3.0), kod samego klienta ma być uniwersalny dla systemów Windows, Linux Mac,
B. Za komunikację z API systemu odpowiadać ma silnik, napisany w języku C oraz Ruby,
C. Silnik ten jest frameworkiem, funkcje silnika wywoływane są przez samego klienta Eltena, co zapewnia kompatybilność ze wszystkimi systemami.
2. Organizacja kodu:
Kod jest zorganizowany w plikach wedle kategorii lub najwyższej klasy (forum.rb, messages.rb), w wypadku funkcji, odpowiednio, w folderach eapi dla EltenAPI oraz ri dla funkcji instancji istniejących klas, np. dla tablic.
3. Polityka zmiennych:
A. Kiedy to tylko możliwe, wszystkie zmienne powinny być dynamicznie tworzone wewnątrz klas, by zmniejszyć zużycie pamięci,
B. W wypadku stałych struktur (wiadomości, wpisy na forum), piszemy odpowiednie klasy, by nie używać zbędnej pamięci na cache kluczy.
4. Agent:
A. Agent Eltena jest tymczasowym rozwiązaniem. RGSS nie obsługuje asynchronicznych zapytań, co wymagało napisania osobnego programu do podtrzymywania sesji czy też powiadomień "co nowego".
B. Komunikacja z agentem odbywa się poprzez wejście/wyjście (stdin/stdout).
C. Nie należy w żadnym razie traktować agenta jako rozwiązania stałego, jest to rozwiązanie w każdej możliwości tymczasowe.

3. Zasady współpracy:
Najlepiej, nim się coś napisze, skonsultować się w tym wątku, jakimkolwiek innym o zbliżonej tematyce lub prywatnie ze mną, aby upewnić się czy dany projekt nie jest pisany na daremno, nie dotyczy poprawek.
Wszystkie propozycje zmian kodu należy, przepisowym trybem, przesłać jako Pull Request, najpierw forkując repozytorium Eltena. Odpowiedni artykuł, jak to zrobić, znalazłem tutaj:
http://blog.msakwa.net/2017/05/22/pierwszy-pull-request-czyli-dokladamy-swoja-cegielke-do-projektow-typu-open-source/

4. Pola współpracy.
Wszystkie. Możecie napisać nowe tłumaczenie, uporządkować kod, wykonać pentesty (oczywiście zgłaszając wyniki). Ale, żeby nie było, tutaj są rzeczy, którymi (na czas pisania wpisu) możecie się zająć, if you wish:
1. Przede wszystkim, ogarnąć katalog mediów. Najlepiej zrobić CTRL+A, Delete na całym obecnym kodzie i napisać to od nowa. Potrzebujemy drzewka kategorii, możliwości przypisywania plików do wielu kategorii, a więc i zmiany struktury bazy danych i serwera. Najlepiej byłoby tu zainspirować się tym, jak działają blogi, a więc tabele media_categories na kategorie, media_streams na strumienie i jakieś media_assigning określające przypisania strumieni do kategorii.
2. Skoro mowa o funkcjach, które działają, jakby chciały, a nie mogły, chat, któemu przydałąby się oooogroooomnaaaa przebudowa.
3. Generalnie warto uporządkować ustawienia, tutaj dużo copy-paste się spodziewam.
Ale, to tylko pierwsze pomysły, lista wcale, a wcale zamknięta nie jest.
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
19.01.2019 15:23

2 z 5: mikolajholysz

Odniosę się do tej licencji:

pod adresem
https://opensource.org/osd

Możemy przeczytać następujące fragmenty dotyczące warunków, jakie musi spełniać program open source

The license must allow modifications and derived works, and must allow them to be distributed under the same terms as the license of the original software.

The license may restrict source-code from being distributed in modified form only if the license allows the distribution of "patch files" with the source code for the purpose of modifying the program at build time. The license must explicitly permit distribution of software built from modified source code. The license may require derived works to carry a different name or version number from the original software.

Czyli innymi słowy, wg definicji open source, można modyfikować i udostępniać to publicznie, ale można wymagać dania programowi innej nazwy i wersji. Można zabronić udostępniania zmodyfikowanych źródeł pod warunkiem, że pozwala się na udostępnianie plików patch modyfikujących te źródła i skompilowanych modyfikacji.

w związku z przesiadką na Maca, prawie mnie tutaj nie ma. Inne sposoby kontaktu w wizytówce.
19.01.2019 15:46

3 z 5: pajper

Oczywiście. I tego nigdzie nie zakazałem. To, że nie można stworzyć klona Eltena, nie zabrania udostępnienia patha.
Ale, patha, nie kodu. Równie dobrze możesz przecież napisać na forum:
aby Elten przy zalogowaniu zagrał V Symfonię Beethovena, otwórz plik login.rb i pod linijką
play("login")
napisz
play("symfonia")
a następnie wklej plik symfonia.ogg do folderu Audio/BGS.
Tego nikt nigdy nie zabraniał. Ale nie możesz udostępnić kodu z tą linijką już wklejoną.
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
19.01.2019 15:50

4 z 5: pajper

Tak samo możesz napisać plik bat, exe, skrypt js, cokolwiek tę linijkę doklejające.
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
19.01.2019 15:50

5 z 5: pajper

Tutaj zamieściłem w formie Pull Requestu napisany przeze mnie moduł znanej biblioteki Tolk dla języka Ruby, który najpewniej wejdzie w skład Eltena 3.0:
https://github.com/dkager/tolk/pull/12
#StandWithUkraine Shoot for the Moon. Even if you miss, you'll land among the stars.
24.01.2019 19:24

Wróć do listy wątków

1 z 1


Nawigacja


Copyright (©) 2014-2024, Dawid Pieper