Opensource Projekt starten

  • Themenstarter Themenstarter Metallica
  • Beginndatum Beginndatum
M

Metallica

Guest
Schönen,guten Abend!

Ich habe endlich wieder Zeit gefunden um an ein paar Tools bzw. Programmen zu arbeiten, allerdings stehe ich immer wieder vor diversen Problemen, und ich frage mich (nicht spezial auf mein Programm sondern ganz allgemein gehalten) ob es nicht sinnvoller wäre wenn mehrere Personen sich an einem Projekt beteiligen würden, da ich aus Erfahrung weiß das es unmöglich ist alles zu können und es immer Personen geben wird die besser sind als man selbst.

Mich würde mal interessieren wie man im allgemeinen Anfängt ein Opensource Projekt zu starten, denn schließlich muss Endeffekt alles aufeinander abgestimmt sein...
Mal ein Beispiel:
Ich vor einem guten Jahr mein Programm QCT online gestellt. Allerdings bin dann auf eine Plattform umgestiegen, die 1.Leichter zu verstehen 2. schneller vom Programmablauf her und 3. noch dazu Freeware ist. (Ich rede von FreeBasic)

Um auf den Punkt zu kommen:
Wenn z.b. 10 Leute(in ganz Deutschland verteilt) an einem Kern (nennen wir sie einmal Kernel.dll) arbeiten, wie muss der ablauf aussehen das am ende eine voll funktionsfähige .dll entsteht?
Jeder Programmier hat doch sein eigenes Schema, der eine arbeitet viel mit INCLUDE-Files und der andere baut alles über libarys usw usw....

Wie fange ich ein solches Projekt am besten an? Im endeffekt möchte ich das sich jeder an dem Projekt beteiligen kann und es mehr oder weniger ein selbstläufer wird.

Mfg
Josh
 
Für ein OpenSource-Projekt, das mehr als 2-3 Entwickler hat, sollte es auf jeden Fall Coding-Guidelines geben, damit z.B. der Code einheitlich strukturiert ist usw. Außerdem sollte eine einigermaßen gute Plattform für Versionsverwaltung, Aufgaben-Tracking und Kommunikation zur Verfügung stehen. In dieser Hinsicht kann ich http://sourceforge.net/ sehr empfehlen. Die sind nicht umsonst die größten Hoster für OpenSource-Projekte und oft finden sich gerade darüber noch diverse neue Leute, die an einem Projekt mitarbeiten, oder mal Patches einschicken usw. Von einem minimalen Forum, über Mailinglisten für die Kommunikation der User mit dem Projekt als auch projektintern, über Versionsverwaltung (wahlweise Subversion oder CVS) bis hin zur Download-Plattform, die die Dateien auf mehreren Servern gleichzeitig zur Verfügung stellt, die auf der ganzen Welt verteilt sind und der Möglichkeit eine eigene Projektseite unter http://projektname.sourceforge.net/ online zu stellen, bieten die einfach alls wichtige an. Kurz gesagt: brauchbare Richtlinien, an die sich alle Entwickler halten und gute Koordination (vereinfacht durch gute Kommunikation) sind das A und O des Projektmanagements. Hinzu kommen dann natürlich noch Aufgaben wie eine logische Arbeitsteilung (jede/r macht das, was er/sie am Besten kann). Und der Rest ist Coden. ;)
 
Bei nem Windowsprojekt würde ich mitmachen ;)

Ich denke mal, um da einen genauen Plan machen zu können, muss man erstmal die Entwickler zusammentrommeln um sich abzusprechen.
 
naja die idee, die ich schon seit jahren habe ist die eine vernünftige Windows-Konsole zu schreiben.

Ich habe mit Dos angefangen und mich in Linux relativ gut eingearbeitet aber mir fehlt unter immer Windows etwas und ich finde die Eingaberaufforderung total besch****.

Nur das ding ist halt das ich nicht alles kann und leute gibt die z.b. in sachen Speicherverteilung (sry. weiß nicht genau man das nennt) wesentlich besser sind ich als usw.

Und finde auch das das Scripten unter Linux wesentlich mehr spaß macht als unter Windows... Ich kann mir auch gut vorstellen das mehrer Personen gibt die die Konsole in gewisser weise vermissen.

Was mích total beeindruckt ist auch das es möglich ist mehrere Welten zusammenzuführen... Egal ob C,Pascal, Basic... es lässt via dlls und den richtigen Parametern alles zusammenführen.

Ich glaube nur das schwierige ist jmd für ein Projekt zu überzeugen, denn wenn es (das Projekt) funktioniert gibt es genügend leute die sich dafür interessieren
 
Es gibt eine anständige Windows-Konsole, die sich Cygwin nennt und fast alles bietet, was man von Linux schätzen gelernt hat. Ist ja quasi eine Linux-Shell. Vielleicht solltest du dich lieber in dieses Projekt einbringen anstatt ein neues zu starten, denn je mehr Entwickler daran arbeiten, umso effektiver und schneller kann es weiter entwickelt werden. Die Cygwin-Leute versuchen halt eine komplette Linux-Umgebung (inkl. X-Server, verschiedenen Shells, Compilern/Interpretern usw.) als native Windows-Applikationen zu portieren.
 
Also ich stelle es mir vor alle Ideen/Vorstellungen unter einen Hut zu kriegen.
Vom Ablauf her kann ich bitmuncher nur voll zustimmen, Ordnung ist das halbe Leben. Und man sollte alle Entwicklungstools (Ide, SVN, ...) schon mal vorher ausprobiert haben. Auch Kommunikation zwischen den Members ist ein Problem.
 
Wie bitmuncher schon gesagt hat, liegt auch IMO alles in der internen Kommunikation der Teilnehmer. Da muss sich auf jeden Fall um ein Medium gekümmert werden, mit dem alle angenehm arbeiten können. Ich hab nicht erst einmal erlebt, dass an sich gute Ideen denau deshalb gescheitert sind. Man kommt innerhalb einer kleinen Gruppe schnell zur Versuchung kleine Problemstellungen mit einer anderen Person über ICQ etc. zu besprechen, was dann aber insofern keinen Sinn macht, wenn ein Dritter davon nichts mitbekommt.

Desweiteren müssen die einzelnen Arbeitsschritte schon im vorhinein gut überlegt und entsprechend aufgeteilt sein. Das Projekt sollte schließlich auch nicht still stehen, wenn einer der Teilnehmer mal für drei Wochen einen Ausflug in die Arktis macht.

Sinnvoll wäre daher sich also im vorhinein gut zu überlegen, was man eigentlich genau erreichen will und das auch mal auszuformulieren bzw. erwartete Probleme in der Entwicklung schon vorab besprechen und nicht erst wenn schon jemand daran arbeitet.

Man sollte sich auch überlegen, wie man die Software aufsplitten kann, damit Verbesserungsvorschläge dann auch gut umgesetzt werden können, also benötigt man in gewisser Weise eine Schnittstelle zwischen den "Modulen", die dann aber auch nicht die Leistung verringern sollten und dementsprechend flexibel gestalten werden sollten, damit man bei einer Änderung dann nicht alle Sourcefiles anpassen muss.

In Summe gesehen und als Ratschlag:
Es macht irrsinnigen Spaß gemeinsam mit anderen Leuten an einer Software zu arbeiten. Eben gerade auch deswegen, weil jeder irgendwie seine eigene Vorstellung vom Endprodukt hat und die sich eben alle irgendwie unterscheiden. Es kann schon schwierig genug sein nur zu zweit an einem Projekt zu arbeiten, vor allem dann wenn es dann schon einen größeren Umfang hat und eine längere Entwicklungsdauer daran hängt. IMO kann man das aber auch nur üben. Deshalb würde ich vorschlagen nicht mit einem zu großen bzw. komplizierten Projekt anzufangen. Oder es vlt. auch so aufzusplitten wie die drei Programmieraufgaben die wir vor kurzem hier hatten, die dann am Ende zu einem Programm wurden. Bei einer Webapplikation wäre das typische Beispiel dafür die Aufsplittung in das Content-Management auf der einen und das User-Management auf der anderen Seite.

Nachtrag:
Da war ich wohl etwas zu langsam, sonst wäre ich mehr auf das Thema nun eingegangen, sry.
 
Cool vielen dank für die tipps und informationen...
ich habe damals mit ein paar klassenkameraden an ein paar kleinen projekten gearbeitet, hat auch irsinnigen spaß gemacht aber für größere projekte war der zusammenhalt nicht stark genug....
 
Solche Projekte sind gar nicht sooo einfach wie man denken mag.Es geht um OpenSource, daher wird wohl keiner damit Geld verdienen und man braucht Leute die es wirklich machen wollen.Schaut man sich manche Programme an wie OpenMPI so sieht man,dass es unglaublich viele Firmen sind die dran arbeiten und der Code ist auch nicht das wahre.

Man wird keine Leute finden, wenn man keine gute Idee hat.Man sollte vorher vielleicht sogar ein vernünftiges Konzept haben.Schau dir manche Foren an, wo es eine Projektecke gibt, da ist ( meiner Meinung nach ) noch nie was draus geworden.

Es arbeiten auch nicht alle an einer Funktion oder Klasse. Man schafft Schnittstellen zwischen den einzelnen Teilen und klärt die Schnittstellen vernünftig ab. Schau dir mal den Linux Kernel an, dort wird an unterschiedlichen Ecken gearbeitet, einer kümmert sich um die Netzwerkkarten während andere nur die Sound Anbindung machen usw. Am Ende hat man für alles eine Schnittstelle, auf die man zugreift.
 
Zurück
Oben