Ich schrieb: > Wir haben es jetzt mehr als acht Jahre auf "unsere" Art und Weise > versucht, und konnten die Zahl der Entwickler, die aktiv an > unserer > Codebasis arbeiten nicht erh"ohen (wohl aber die Anzahl > Codezeilen, > die es zu pflegen, und die Anzahl Bugs, die es zu fixen gilt). Ich > finde es daher durchaus angebracht, das System als Ganzes zu > hinterfragen - und was k"onnten wir besseres tun, als uns von > Projekten leiten zu lassen, die diesbez"uglich erfolgreicher > waren? >
So, nun endlich meine Gedanken zum Thema Entwicklercommunity. Zun"achst mal ein paar allgemeine Fakten: - ca. 8 Millionen Zeilen Code (je nach Z"ahlweise) - gr"osstenteils C++ (ca. 90%, je nach Z"ahlweise) - ziemlich alter Code - ein grosser Prozentsatz hat sich seit dem initialen OpenSourcen (im wesentlichen) nicht ge"andert, Stil und Techniken sind daher "ofters antiquiert und f"ur Einsteiger schwer zu verstehen. - Deutsche Code-Kommentare sind speziell in den alten Codeteilen noch die Regel - sehr ungew"ohnliches Buildsystem, Konzepte wie Module, delivern, solver, build.pl und eigenes Make-Utility sind vorsichtig ausgedr"uckt sehr ungewohnt f"ur neue Entwickler. - nicht nur beim Buildsystem, auch in anderen Bereichen hat OOo hat f"ur vieles eigene L"osungen entwickelt: GUI-Lib, System-Abstraktion, Komponentensystem, Konfiguration, Strings & UI-Ressourcen, Testsystem, um nur einige zu nennen - OOo setzt sehr viele Tools auf dem System voraus, auf dem man entwickeln will. Die sogenannten build-preconditions sind vermutlich mit die h"ochsten im ganzen FLOSS-Zirkus. Das Konfigurationsskript, dass man vor dem Compilieren startet, fragt die meisten davon ab, testet aber beileibe nicht alles - Hacker-Support: der klassische Hackersupport geschieht "uber IRC; leider sind die wenigsten OOo-Coreentwickler dort zugegen. - fast keine unit-Tests im Code Daraus folgen sofort ein paar Dinge: - alles, was OOo betrifft, dauert sehr lange. Quelltexte runterladen oder auschecken, den Code "ubersetzen, etwas im Quelltext finden, sich im Code zurecht finden, nach einer Code"anderung neu "ubersetzen, ein Teilsystem umbauen usf. - Das Compilieren des Codes geht, gerade f"ur Anf"anger, sehr h"aufig schief. Manchmal ist schon die Version im SCM kaputt (da HH nicht immer alles baut), manchmal hat das Konfigurationsskript eine Voraussetzung nicht richtig gepr"uft. - Das "Einlesen" in den Code f"allt schwer (aufgrund der vielen OOo-eigenen Konzepte. Aufgrund deutscher/ungenauer/falscher/ fehlender Kommentare). Aufgrund der vielen Eigenl"osungen - Hacker, die in anderen FLOSS-Projekten bereits Erfahrungen gesammelt haben, k"onnen davon in OOo so gut wie nichts weiterverwenden. - das Fehlerbeheben ist riskant, da fehlende Unittests einem keine Sicherheit geben Das bedeutet, die technischen Einstiegsh"urden f"ur potentielle OOo-Hacker sind maximal hoch, vermutlich die h"ochsten im ganzen FLOSS-Zirkus. Falls jemand den Einstieg wagt, verst"osst schon das Build-System gegen eine eherne FLOSS-Regel: "Fail fast" - wenn etwas nicht funktioniert, muss der Hacker es *schnell* erfahren, nicht erst nach einem Tag Bauen. Mal angenommen, er hat diese erste H"urde genommen (was erfahrungsgem"ass unter Linux mindestens einen Tag, unter Windows auch mal eine Woche dauern kann). Will er dann von seinen Erfahrungen berichten, muss er sich auf der Hauptseite, dem Wiki, und vielleicht noch im Userforum jeweils separat anmelden. Hat er eine spezielle Frage, wird ziemlich sicher der entsprechende Entwickler nicht im IRC sein, also muss auf einer Mailingliste gefragt werden - bis mit dem "ublichen Frage-Antwort-Gegenfrage-Pingpong eine L"osung gefunden ist, vergeht manchmal soviel Zeit, dass der Hacker entnervt aufgibt. Auch noch so ein Punkt: OOo hat sehr viele Spezialisten, aber wenige Generalisten, wenn es um "Ubersicht im Code geht. Das alles sind, wenn man so will, intrinsische Gr"unde, warum sehr wenige Hacker "uberhaupt bis zum ersten Bugfix kommen. Dann fallen mir noch ein paar extrinsische ein: - SCA. Nicht jeder Hacker kann sich mit sowas anfreunden - Die meisten Hacker benutzen OOo nicht, oder nur in Ausnahmef"allen. D.h. der typische "scratch my itch"-Fall tritt bei OOo seltener ein als beispielsweise beim Linux-Kernel. Insgesamt ist der Zulauf von Freiwilligen geringer, je n"aher ein Projekt am Benutzer ist. Im allgemeinen haben Serverprojekte mehr Zulauf als Applikationen. - OOo gilt nicht gerade als cool. Viele Hacker stempeln es als "Bloatware" ab. Das ist vermutlich eine Frage des Marketings (aber bitte nicht im klassischen Sinne, Hacker sind diesbez"uglich sehr allergisch!), z.B. sind beim Linux-Kernel eine ganze Reihe Leute beteiligt, die in Hackerkreisen eine extrem hohe Reputation geniessen - bei solchen Leuten, in solchen Projekten macht man gerne mit. - c++ ist als Sprache eher auf dem absteigenden Ast, ich habe mal ohloh bem"uht: http://www.ohloh.net/languages/compare?commit=Update&l0=c&l1=cpp&l2=html&l3=java&l4=php&l5=python&l6=-1&measure=contributors&percent= http://www.ohloh.net/languages/compare?commit=Update&l0=c&l1=cpp&l2=html&l3=java&l4=php&l5=python&l6=-1&measure=projects&percent= - OOo ist mit anderen FLOSS-Projekten so gut wie nicht vernetzt, da es einerseits keine Basisbibliotheken mit anderen Projekten "teilt" (nur tonnenweise welche benutzt, Fixes aus OOo werden aber eher langsam beim origin"aren Projekt abgegeben), andererseits viele OOo-Entwickler nur f"ur OOo entwickeln, und nicht auch f"ur andere FLOSS-Projekte. Zusammenfassend gesagt: von den paar Hackern, die "uberhaupt bei OOo vorbeischauen, verlieren wir dann noch viel zu viele bei den ersten Schritten. Die Folge ist, dass OOo nur eine extrem kleine Gruppe von freiwilligen Entwicklern hat. Insgesamt geht, nicht nur nach Michaels Statistik, die Anzahl der OOo-Entwickler zur"uck. Wieder Ohloh: http://www.ohloh.net/p/compare?metric=Contributors&project_0=OpenOffice.org&project_1=Linux+Kernel+2.6 Das Projekt befindet sich damit, was die Entwicklerseite angeht, in allen angesprochenen Bereichen in der Problemzone. Schauen wir uns daher jetzt mal die andere Seite an, was sind die Anforderungen: - insgesamt ca. 22000 offene Issues, davon ~3000 auf 3.x, ~8000 auf "OOo later", und ~9000 ohne Target (die meisten vermutlich "unconfirmed") - ein sich ziemlich schnell "anderndes Umfeld - mobile internet devices, neue Platformkonzepte (aqua, android, iPhone), g"anzlich andere UI-Konzepte, anderes Nutzungsverhalten ("collaboration") - Neue UI & eine ganze Reihe neuer Features bei MSO; neuere Mitspieler im Markt (iWork, Web Offices). Und dann gibt es da leider auch noch ein paar ung"unstige R"uckkopplungsschleifen: - wenige Freiwillige heisst wenig Leute, die neu in den Code einsteigen & Dinge "andern wollen, die einen eben nerven, wenn man neu einsteigt -> vieles bleibt beim alten, man hat sich ja dran gew"ohnt -> weniger Freiwillige, weil der Einstieg so schwerf"allt. - wenige Entwickler f"uhrt zu "Uberlastung, "Uberlastung zu schnellen Fixes, schnelle Fixes zu fragilerem und schlechter zu durchschauendem Code. Was wiederum neue Entwickler abschreckt. - viel Arbeit an neuen Features f"uhrt zu weniger Arbeit an existierendem Code (Code braucht Pflege. Man muss ihn hier und da mal "olen, oder verschlissene Teile auswechseln). Wenig Pflege am Code f"uhrt zu mehr Aufwand bei neuen Features. Was zu noch weniger Zeit f"ur Pflege f"uhrt. Tja. Mehr Bugs, mehr Code, aber weniger Entwickler, und vielleicht Verst"arkungstendenzen. Was kann man tun? Die genannten Probleme l"osen, nat"urlich. Mehr Firmen dazu kriegen, dass sie OOo-Entwickler sponsorn. Wenn Firmen sich am SCA st"oren, mal Kosten und Nutzen abw"agen. Weiterhin macht es aber m.E. auch Sinn, sich mal die Eigenschaften von FLOSS-Projekten anzuschauen, die erfolgreich viele freiwillige Entwickler rekrutieren konnten (ich z"ahl mal hier bloss noch die auf, die meiner Meinung nach OOo nicht hat, und die oben noch nicht genannt wurden): - Entwicklung im Bazaar-Stil. Hacker stehen auf ein gewisses Chaos, und lassen sich vor allem ungern sagen, was sie tun sollen - Meritocracy - Hacker haben eine nat"urliche Aversion gegen Authorit"at, solange sie nicht sozusagen von ihnen selbst gestiftet wurde - release early, release often - user-driven testing - Community first - Fail fast (ok, hatten wir schon. Kann ich aber nicht genug betonen) - Mach niemals einen Fehler zweimal (im Code -> (unit) tests) - Mach den Einstieg so leicht wie m"oglich - Mozilla hat nur eine sehr kleine c++-Core, und Rumspielen mit JavaScript ist trivial; Linux Kernel hat Tutorials und gute B"ucher. Ein paar Schlagworte: - Nimm das, was die meisten anderen FLOSS-Projekte auch benutzen (bei Buildsystem, GUI-Lib, System-Abstraktion, Komponentensystem, Konfiguration, Strings & UI-Ressourcen, Testsystem usf.) - Sorge daf"ur, dass OOo-Code auch anderswo benutzt wird - wenn Hacker die Office-Suite nicht benutzen, packe Teile des Codes in Server oder Kommandozeilentools! Vieles von dem genannten ist langwierig; speziell in den letzten Abschnitten sind Punkte genannt, die geradezu unrealistisch sind. Ich m"ochte sie trotzdem als Vision genannt wissen, auf die man hinarbeiten kann (wenn man sie vielleicht auch nie erreicht). Und ein paar Worte seien mir noch erlaubt bez"uglich des recht emotional diskutierten Themas Entwickler gegen den Rest der Community: Mathias Bauer schreibt: > Wer ist hier "die Community"? Sind es nur die Entwickler, wie es > Michael Meeks gerne hätte, oder auch andere? > Michael Meeks schrieb dagegen: > Instead put the developers (all of them), and those actively > contributing into the driving seat. > Auf deutsch: "Sorgt daf"ur, dass die Entwickler (alle), und diejenigen, die aktiv etwas beitragen bestimmen." Also ganz bestimmt kein "nur die Entwickler". Sondern eher ein: "nehmt die Project-Leads, die sich seit Jahren auf ihren eigenen Mailinglisten nicht mehr gemeldet haben, aus den Entscheidungsgremien raus". Es wird, wie von Martin gesagt, immer Interessenskonflikte zwischen Entwicklern, QA, "Ubersetzung, Hilfe etc. geben. Der allereinfachste Weg, diese Reibereien zu minimieren ist eine "unstable"-Codelinie, die nicht irgendwann zwangsweise zur Release reifen muss - sondern aus der man sich selektiv fertige Features oder Fixes rauspicken kann, um damit die n"achste Release zu best"ucken. Gibt den Entwicklern schnelles Feedback & mehr Freiheit, und nimmt den Druck von QA und "Ubersetzung. So, und morgen sammel' ich dann nochmal die in den diversen Ver"astelungen dieses Monsterthreads liegengebliebenen offenen Fragen zusammen, die eine oder andere Sache m"ochte ich denn doch noch klarstellen. Viele Gr"usse, -- Thorsten --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@de.openoffice.org For additional commands, e-mail: dev-h...@de.openoffice.org