ubuntuusers.de

Workflow als Linux-Software-Entwickler?

Status: Gelöst | Ubuntu-Version: Kein Ubuntu
Antworten |

Sh4kal

Anmeldungsdatum:
18. August 2011

Beiträge: 343

Grüße an alle,

ich lese mich im Moment ein bisschen ein und möchte mich stärker als Entwickler bei Linux einbringen - Dafür hab ich mir elementary OS (und die Programmiersprache Vala) ausgesucht, das in den letzten Tagen zu meinem neuen Leblings geworden ist. Tut hier aber eigentlich gar nichts zur Sache. Im Moment bin ich als ITler tätig und habe dementsprechend beruflich nichts mit Programmieren zu tun. Ansonsten hab ich vor gefühlten Ewigkeiten mal verschiedene Programmier-/Skriptsprachen (Delphi, Java, PHP, ein kleines bisschen Bash) gelernt. In letzter Zeit hab ich in meiner Freizeit vorallem Webseiten mit HTML und CSS gebaut (was dementsprechend gar nichts mit Programmiersprachen zu tun hat). Mein Wissen ist also äußert begrenzt.

Jetzt aber mal zu meiner eigentlichen Frage: Was ist so der Workflow als Software-Entwickler? Angenommen, ich möchte jetzt am Filemanager Änderungen vornehmen, dann hole ich mir den master/trunk branch ja über git oder bzr lokal, nehme gewünschte Änderungen vor, lade das in eigenen branch hoch, usw. Aber ich möchte das was ich schreibe ja auch ausprobieren; heißt, ich kompiliere meine Version des Programms bzw. erzeuge ein Paket (oder?). Überschreibe ich damit nicht die "stabile" Version des Pakets? Benenne ich meine Version des Programms um (z.B. "filemanager-devel-shakal")? Wird sowas für gewöhnlich in einer virtuellen Maschine gemacht?

Was mich noch verwirrt ist wie ich an Informationen über Programme/Funktionalitäten komme, die ich für mein Projekt benötige. Nehmen wir beispielsweise mal an, ich will Änderungen am Account vornehmen können. Das wäre dann accountservice - Wie genau erfahre ich, wie ich diesen Dienst in Vala importiere und anspreche? Oder ist das Beispiel jetzt schlecht gewählt weil sehr umständlich? Hat jemand ein Beispiel, an dem er es vlt besser erklären kann?

Ich entschuldige mich für die vielen Fragen, die einigen Leuten bestimmt nicht allzu schlau vorkommen - Mir ist nur irgendwie absolut nicht klar wo ich für die Klärung meiner Fragen anfangen soll nachzuforschen. Deshalb wollte ich mich einfach mal an die Software-Entwickler hier wenden (ich bin sicher mir fallen auch noch mehr Fragen an Leute ein, die Ahnung davon haben). Danke schonmal an alle, die versuchen, mir das hier zu erklären.

Das_Wort

Anmeldungsdatum:
23. Dezember 2009

Beiträge: 5269

Wohnort: /dev/null

Sh4kal schrieb:

Aber ich möchte das was ich schreibe ja auch ausprobieren; heißt, ich kompiliere meine Version des Programms bzw. erzeuge ein Paket (oder?).

Ja. Wenn du es nur testen willst, dann kannst du gewöhnlich einfach die Anwendungsdatei ausführen, ein Paket muss nicht gebaut werden.

Beispiel:

Projektverzeichnis
├── bin
├── build
├── builtin
├── cache
├── client
├── cmake
├── CMakeFiles
├── doc
├── fonts
├── games
├── locale
├── misc
├── mods
├── po
├── src
├── textures
├── util
└── worlds

Wenn ich das Projekt kompiliere und das Resultat starten möchte dann schaue ich einfach im bin Ordner nach der kompilierten Programmdatei.

Im Terminal über folgenden Befehl oder im Dateimanager durchs klicken öffnen/ausführen.

./programm

Wenn man das Programm installieren **will** (sodass man Befehl überall einfach so funktioniert) dann kann man das oft durch

sudo make install

wenn es denn ein Makefile gibt das beschreibt wie das Programm installiert werden soll.

Überschreibe ich damit nicht die "stabile" Version des Pakets? Benenne ich meine Version des Programms um (z.B. "filemanager-devel-shakal")? Wird sowas für gewöhnlich in einer virtuellen Maschine gemacht?

Nun wenn du ein Paket baust und dieses installierst dann gewöhnlich schon. Ein Paket baust du aber gewöhnlich erst wenn du das Program veröffentlichen willst oder von nicht-programmieren testen lassen möchtest.

Wenn man aber den Namen der Programmes und einiger Dateien ändert dann wird auch bei der Installation das Paket nicht überschrieben.

Ein Beispiel ist das Paket minetest welches sich im Repository befindet. Dieses ist leider etwas älter, deshalb gibt es ein PPA in welchem sich die aktuelle Version befindet, damit es keine Kollision gibt und keine Dateien überschrieben werden heißt das Paket in dem PPA minetest-c55 (der alte Name nach dem Entwickler "C55"). Die Anwendungsdaten sind beim Benutzer aber trotzdem in ~/.minetest und nicht ~/.minetest-c55. Was aber kein Problem bei dem Programm ist.

[schlechtes Beispiel für den Einstieg (viel zu komplex)] Oder ist das Beispiel jetzt schlecht gewählt weil sehr umständlich? Hat jemand ein Beispiel, an dem er es vlt besser erklären kann?

Angenommen du willst an dem Editor Mousepad Änderungen vornehmen:

  1. Gehe auf die Projektseite: http://xfce.org

  2. Zum Code finden: http://git.xfce.org/

  3. Code-Repo des Programms finden: http://git.xfce.org/apps/mousepad/

  4. Code mit git clone auf System kopieren

  5. README-Datei lesen: http://git.xfce.org/apps/mousepad/tree/README

  6. Ggf. benötigte Abhängigkeiten installieren

  7. Änderungen am Programmcode machen

    1. Datei im Editor der Wahl öffnen

    2. Änderungen machen

    3. Speichern

  8. Kompilieren

  9. Testen

  10. Fehlerbeheben (Coding Style!)

  11. Git über Änderungen bescheid geben git add *

  12. Commit Message schreiben

  13. Schauen wie man die Änderungen Upstream bekommt Steht meistens im Projektwiki

  14. Änderungen pushen git push

Wie du siehst ist das Erstellen von Paketen gar nicht nötig. Das liegt aber daran dass die Distributionen XFCE bzw. Mousepad paketieren. Bei einer Anwendung die du selbst verteilen möchtest musst du das selbst machen.

Nur zum testen braucht es eigentlich keine Pakete, außer du testest Pakete, Paketmanager und der Gleichen. ☺

Ich entschuldige mich für die vielen Fragen, die einigen Leuten bestimmt nicht allzu schlau vorkommen.

Tu das bitte nicht. Du kannst dich gerne entschuldigen wenn du keine Fragen stellst. Aber für Fragen stellen entschuldigen solltest du dich nie.

Das_Wort

Anmeldungsdatum:
23. Dezember 2009

Beiträge: 5269

Wohnort: /dev/null

Bzgl. deines Beispiels: https://wiki.gnome.org/GnomeLove

Sh4kal

(Themenstarter)

Anmeldungsdatum:
18. August 2011

Beiträge: 343

Vielen Dank für die umfangreiche Antwort! ☺

Um ehrlich zu sein habe ich das meiste inzwischen doch irgendwie selbst gelernt; der Anfang war zwar ein bisschen schwierig (sich da einzulesen und zu verstehen wie das abläuft, bla bla), aber inzwischen geht mein erstes Programm in Vala stark auf "stabil genug um paketiert und in mein ppa hochgeladen zu werden" zu. Gibt noch ein großes Problem das ich lösen muss (Sonderzeichen wie z.B. die Wurzel erkennen ...), aber ich bin trotzdem stolz wie Oskar dass der Rest ziemlich gut funktioniert 😬

Antworten |