mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-17 00:29:19 +02:00
Unowocześnienie issue trackera dla new comerów + analiza aktywności #526
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
W związku ze spadkiem liczby aktywnych twórców zawartości proponuję rozszerzenie obecnego systemu issue oraz lepsze wyeksponowanie możliwości współpracy.
Nowe oznaczenia issue
Oznaczenia pozwolą osobom zainteresowanym pomocą łatwo znaleźć zadania odpowiadające ich umiejętnościom.
Informacja o możliwości współpracy
Na forum, Discordzie oraz GitHubie powinno zostać utworzone widoczne miejsce opisujące możliwości wsparcia projektu.
Dla nowych twórców zawartości głównym punktem wejścia powinien być odnośnik do przefiltrowanej listy issue oznaczonych dobre na początek.
Należy również krótko opisać:
Dokumentacja dla początkujących powinna zawierać skrócone wytyczne i odsyłać do pełnej dokumentacji dopiero w razie potrzeby.
Procedura testowania
Dla nowej zawartości pozostaje obecna procedura:
Drobne poprawki istniejącej zawartości przesłane przez osoby zewnętrzne mogłyby korzystać z uproszczonej procedury, np. poprzez załączenie paczki ZIP bezpośrednio do odpowiedniego issue. Po sprawdzeniu poprawki maintainer mógłby wprowadzić ją do SVN bez konieczności upływu okresu tygodnia/dwóch. Procedura uproszczona dotyczyłaby wyłącznie niewielkich poprawek istniejącej zawartości, a nie nowych modeli, pojazdów, scenerii czy innych większych zmian.
Przyczyna propzycji
Od 2020 roku widoczna jest długoterminowa tendencja spadkowa aktywności w repozytorium SVN. Nie wydaje się, aby jej główną przyczyną był obecny sposób przesyłania i testowania zawartości. Znacznie większym problemem jest stopniowe zmniejszanie się liczby regularnie aktywnych twórców oraz brak wystarczającego napływu nowych osób.
Obecny system przyjmowania dodatków funkcjonuje i nie wymaga zasadniczej przebudowy. Brakuje natomiast nowoczesnej i łatwo dostępnej informacji o tym, w jaki sposób można rozpocząć współpracę, czego obecnie projekt potrzebuje oraz gdzie znaleźć zadania odpowiednie dla nowych osób.
GitHub i Discord są obecnie naturalnymi miejscami, do których trafiają potencjalni nowi contributorzy. Informacja o możliwości współpracy powinna być jednak dostępna również na forum, stronie głównej projektu oraz, w miarę możliwości, na stronach MaSzyny na platformach dystrybucyjnych, takich jak Steam, Epic Games Store czy GOG.
Dane z historii SVN pokazują wyraźną zmianę skali aktywności:
Rok 2020 był szczytem aktywności w analizowanym okresie, z 1687 commitami i 337 dniami, w których pojawiła się przynajmniej jedna zmiana. Spadek rozpoczyna się wyraźnie w 2021 roku, natomiast szczególnie silne ograniczenie aktywności następuje w drugiej połowie 2022 roku i jest w pełni widoczne od 2023 roku.
Dla zobrazowania:

Przebieg drugiej połowy 2022 roku dobrze pokazuje moment załamania:
Jednocześnie porównanie aktywności do 24 sierpnia każdego roku pokazuje, że 2026 nie jest najsłabszym rokiem całego okresu:

Nie chodzi więc o próbę powrotu do dawnej liczby commitów poprzez zwiększanie obciążenia obecnych twórców. Celem powinno być odbudowanie dopływu nowych contributorów poprzez ułatwienie im znalezienia zadań, poznania podstawowych zasad projektu oraz wykonania pierwszej niewielkiej zmiany.
Proponowane oznaczenia issue, skrócona dokumentacja dla początkujących i lepsze wyeksponowanie możliwości współpracy mają przede wszystkim stworzyć czytelną ścieżkę:
zainteresowanie projektem > znalezienie odpowiedniego zadania > wykonanie pierwszej zmiany > przesłanie jej do projektu > test/review > dalsza współpraca.
Drugi wątek
Od poprzedniej dyskusji dotyczącej sposobu prowadzenia projektu minęło już kilka miesięcy. Emocje zdążyły opaść, część spraw można dziś ocenić z większym dystansem, a przede wszystkim mamy możliwość sprawdzenia, co faktycznie udało się od tamtej pory zmienić.
Dodatkowym argumentem za uporządkowaniem tych kwestii jest potrzeba zapewnienia ciągłości działania projektu niezależnie od aktualnego składu osób pełniących poszczególne role.
Nie chciałbym w tym miejscu rozstrzygać powodów, dla których ktoś ogranicza swoją aktywność, rezygnuje z pełnionej funkcji albo przestaje uczestniczyć w projekcie. Istotne jest natomiast to, aby taka sytuacja nie powodowała jednocześnie utraty wiedzy o
sposobie podejmowania decyzji ani powrotu do niejasnego podziału kompetencji.
Nie chciałbym również wracać do poprzedniej dyskusji po to, aby ponownie ustalać, kto miał rację, kto czego nie zrobił albo kto powinien był zachować się inaczej. Moim zdaniem znacznie bardziej użyteczne będzie zastanowienie się, czy problemy, które wtedy ujawniły się w projekcie, zostały rzeczywiście rozwiązane i co możemy zrobić, żeby podobna sytuacja nie powtórzyła się za kilka miesięcy.
Spisanie podstawowych zasad pozwoliłoby zachować ciągłość działania projektu również w przypadku zmian personalnych, niezależnie od ich przyczyn.
Od tamtego czasu wprowadziliśmy kilka konkretnych zmian:
Zmiany te uważam za potrzebne, jednak nie rozwiązały one w pełni problemu niejasnego podziału kompetencji i sposobu podejmowania decyzji.
Jednocześnie poza nimi sposób podejmowania decyzji i organizacji pracy w projekcie pozostał w dużej mierze taki sam jak wcześniej. W dalszym ciągu nie mamy jasno określonego:
Uważam, że brak takiego podziału był jednym z głównych źródeł poprzedniego konfliktu, a stwierdzenie "moderatorzy, administracja" nie rozwiązuje tego problemu.
W poprzedniej dyskusji Kapuce zwrócił uwagę na jeszcze jeden aspekt, który moim zdaniem warto tutaj przypomnieć. Przez dłuższy czas projekt znajdował się w stanie, który można określić jako względnie stabilny, ale jednocześnie stagnacyjny. Późniejszy okres dużej liczby zmian był próbą przełamania tej stagnacji i ponownego przyspieszenia rozwoju projektu, ale odbywało się to kosztem większej niestabilności i ujawnienia problemów organizacyjnych, których wcześniej w takim stopniu nie było widać.
Nie oznacza to, że każda wprowadzona w tym okresie zmiana była dobra, że każda została przeprowadzona prawidłowo ani że pojawiające się regresje należy akceptować jako nieunikniony koszt rozwoju. Takie problemy należy normalnie zgłaszać i poprawiać.
Nie chciałbym jednak, abyśmy w efekcie poprzednich doświadczeń doszli do sytuacji, w której sposobem na zachowanie stabilności będzie ponowne unikanie większych zmian. Moim zdaniem celem powinno być znalezienie trzeciej drogi: projektu, który potrafi rozwijać się aktywnie, ale robi to w sposób przewidywalny, z jasno określonym procesem podejmowania decyzji, review i odpowiedzialnością za poszczególne obszary.
Właśnie temu miałyby służyć proponowane niżej zasady governance. Nie chodzi o ograniczenie rozwoju, ale o stworzenie warunków, w których rozwój nie musi oznaczać organizacyjnego chaosu.
W kilku sytuacjach pojawiał się zarzut, że jakaś decyzja została podjęta bez konsultacji. Problem polega na tym, że często nie było jednocześnie jasne, z kim taka konsultacja powinna się odbyć i kto ostatecznie miał prawo daną decyzję zatwierdzić albo odrzucić (patrz punkt wyżej). Forum powinno pozostać miejscem konsultacji i szerszej dyskusji, jednak przy braku jasno określonego sposobu zakończenia takiej dyskusji różnice zdań mogą prowadzić do długotrwałego braku decyzji i w praktyce blokować dalsze prace.
Jeżeli chcemy wymagać konsultowania decyzji, powinniśmy również jasno określić, kto posiada w danym obszarze kompetencje do ich podejmowania. Nie chodzi przy tym o tworzenie hierarchii, w której jedna osoba "rządzi" określonym elementem projektu. Nie chodzi również o przypisywanie komukolwiek obowiązku wykonywania jakiejś pracy.
W jednej z wcześniejszych dyskusji proponowałem wskazanie osób zajmujących się poszczególnymi obszarami projektu. Zosała wówczas interpretowana jako próba narzucenia komuś obowiązku pracy. Nie taki jest cel tej propozycji. Argumentem było to, że "naczelnicy" działów już kiedyś byli i pomysł nie wypalił.
MaSzyna jest projektem tworzonym w dużej mierze w wolnym czasie i oczywiste jest, że nikt nie może być zobowiązany do wykonania konkretnej pracy, naprawienia błędu czy poświęcenia określonej liczby godzin. Można jednak wskazać osoby, które:
Pełnienie takiej roli nie oznacza obowiązku wykonywania pracy ani wyłączności na rozwój danego komponentu. Każdy nadal powinien mieć możliwość przygotowania zmiany w dowolnej części projektu.
Dlatego zamiast mówić o "osobach odpowiedzialnych za wykonanie pracy", proponuję mówić o maintainerach lub opiekunach technicznych poszczególnych obszarów.
Przykładowe obszary mogłyby wyglądać następująco:
Nie twierdzę, że dokładnie taki podział musi zostać przyjęty. Chodzi przede wszystkim o ustalenie zasady, według której wiadomo, kto posiada wiedzę i kompetencje decyzyjne w danym obszarze.
Jednocześnie powinno być jasno zapisane, że:
Drugim elementem powinno być rozróżnienie decyzji technicznych od decyzji organizacyjnych. Nie każda zmiana powinna wymagać tego samego procesu.
Przykładowo:
nie powinny wymagać takiego samego poziomu konsultacji jak:
Podobnie sytuacje awaryjne powinny mieć osobne zasady.
Jeżeli istnieje:
osoba administrująca danym systemem powinna mieć możliwość podjęcia potrzebnej decyzji bez oczekiwania kilku dni na pełną dyskusję.
Takie działania powinny być jednak później opisane, aby pozostałe osoby wiedziały, co zostało zmienione i dlaczego.
Chciałbym również, abyśmy zaczęli rozdzielać realne problemy techniczne od sporów organizacyjnych.
Przykładem może być obecny stan PBR. Po stronie exe sam system działa zgodnie z przyjętymi założeniami, natomiast część istniejących materiałów była przygotowana pod wcześniejsze zachowanie renderera i po zmianach pojawiły się regresje wizualne. Jest to realny problem, który należy poprawić. Powinien jednak funkcjonować jako konkretny problem techniczny opisany w bugtrackerze, z przykładami i możliwością jego naprawienia, a nie jako argument w dyskusji o tym, kto miał lub nie miał prawa rozwijać daną część projektu.
Tak samo powinniśmy traktować inne regresje.
Jeżeli zmiana coś psuje, zgłaszamy to, opisujemy i poprawiamy. Jeżeli rozwiązanie techniczne po czasie okazuje się nietrafione, możemy się z niego wycofać. Nie oznacza to automatycznie, że samo podjęcie decyzji o jego przetestowaniu było błędem organizacyjnym. Jako konkretny rezultat tej dyskusji proponuję utworzenie w repozytorium na githubie pliku: "GOVERNANCE.md". Dokument nie musiałby być szczególnie długi ani próbować przewidywać każdej możliwej sytuacji. Powinien opisywać przede wszystkim:
Obok niego można utworzyć prosty plik: "MAINTAINERS.md" z aktualną listą osób zajmujących się poszczególnymi obszarami. Dzięki temu zmiana osoby zajmującej się konkretnym komponentem nie wymagałaby edytowania całego dokumentu zasad. Na forum proponuję natomiast stworzyć przypięty wątek zawierający skróconą wersję zasad oraz odnośnik do aktualnego
GOVERNANCE.md. Repozytorium byłoby w takim układzie źródłem aktualnych zasad, natomiast forum pozostawałoby miejscem ich omawiania. Zmiany samego "GOVERNANCE.md" również powinny przechodzić normalnie przez pull request i review. Dzięki temu wszystkie zmiany sposobu zarządzania projektem byłyby jawne, możliwe do przedyskutowania i miałyby zachowaną historię.Nie proponuję tego po to, aby zwiększać formalizm projektu, a wręcz przeciwnie. Obecnie część zasad istnieje wyłącznie jako zwyczaj, część jako ustalenia z Discorda, część jako wcześniejsze decyzje konkretnych osób, a część nie istnieje w ogóle. Kilka prostych i jasno zapisanych zasad może ograniczyć ilość formalności, ponieważ nie będzie trzeba za każdym razem od początku ustalać, kto powinien podjąć konkretną decyzję. Nie chciałbym również, aby efektem tego wątku było ponowne analizowanie przez kilkadziesiąt postów wydarzeń sprzed kilku miesięcy. Jeżeli mamy z niego coś wynieść, dobrze byłoby zakończyć go konkretnym rezultatem.
Moja propozycja jest więc następująca:
Nie traktuję przedstawionych wyżej punktów jako gotowego regulaminu. To jest propozycja punktu wyjścia do dyskusji.
Chciałbym jednak, aby tym razem jej efektem były konkretne, zapisane zasady, do których za pół roku każdy będzie mógł się odwołać, zamiast kolejnej sytuacji, w której dopiero po wykonaniu jakiejś zmiany zaczynamy zastanawiać się, kto właściwie miał prawo podjąć decyzję.
Unowocześnienie issue trackera dla new comerów.to Unowocześnienie issue trackera dla new comerów + analiza aktywności