Difference between revisions of "How To Help Developing Lazarus/de"

From Lazarus wiki
Jump to navigationJump to search
m (→‎Der Umgang mit Rückfällen (engl. "regressions"): Remove reference to defunct git mirror)
 
(19 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
{{How To Help Developing Lazarus}}
 
{{How To Help Developing Lazarus}}
  
== Voraussetzungen um Lazarus zu entwickeln ==
+
== Voraussetzungen um an der Entwicklung von Lazarus mitzuarbeiten ==
There are two things to note:
+
Beachten Sie die folgenden beiden Punkte:
* You should have the latest release of FreePascal compiler (FPC) or a recent SVN version (i.e. a later version) of it. For obtaining FPC, see [http://www.freepascal.org/download.html FreePascal download].
+
* Sie sollten die jeweils letzte offizielle Version des ''FreePascal Compilers'' (FPC) oder eine aktuelle SVN Version (d.h. eine Entwicklerversion mit höherer Build-Nr.) installiert haben. Um den FPC Compiler zu bekommen, siehe [http://www.freepascal.org/download.html FreePascal download].
* You '''must''' have the very latest Lazarus from SVN. For obtaining it, see [[Getting_Lazarus#Using_SVN|Getting Lazarus via SVN]].
+
* Sie '''müssen''' ebenfalls über die allerneuesten ''Lazarus-Quelltexte'' von SVN verfügen. Um diese zu bekommen, siehe [[Getting_Lazarus#Using_SVN|Getting Lazarus via SVN]].
  
 
== Entwicklungsbereiche ==
 
== Entwicklungsbereiche ==
So now you have the latest version of Lazarus and wish to start improving it, but are asking yourself "where do I begin?" Das kommt darauf an.
+
Sie haben die neueste Version von Lazarus. Sie möchten sie verbessern und fragen sich: "Wo kann ich beginnen?" Hier einige Anregungen:
  
=== Bekannte Bugs ===
+
=== Bekannte Fehler ===
If you don't have any particular woes about Lazarus but just want to help, then I would recommend looking at the bug list [http://www.lazarus.freepascal.org/mantis/main_page.php Bug Tracker] find a bug that you think you can fix, and start hacking. Das Lazarus Team hat offene Bugs priorisiert in [[Road To 1.0]].
+
Wenn Sie keine besonderen Probleme mit Lazarus haben, aber einfach helfen möchten, dann werfen Sie doch einen Blick auf die Fehlerliste [http://www.lazarus.freepascal.org/mantis/main_page.php Bug Tracker]. Suchen Sie sich einen Bug, den Sie beheben können, und fangen Sie zu Hacken an. Das Lazarus Team hat die noch offenen Bugs nach Prioritäten aufgelistet in [[Road To 1.0]].
  
 
=== Dokumentation ===
 
=== Dokumentation ===
Lazarus needs more documentation! If you don't want to fix a bug you can help by writing documentation. Even this page is a work in progress. If you have useful information to add, or if you see mistakes, please feel free to improve the contents of this page.
+
Lazarus muss besser dokumentiert werden! Falls Sie keine Fehler beheben wollen, können Sie vielleicht bei der Dokumentation mithelfen. Auch diese Seite ist in Bearbeitung. Falls Sie nützliche Informationen zum Hinzufügen haben, oder falls Sie Schreibfehler finden, dann zögern Sie nicht den Inhalt zu verbessern.
  
Look at [[Lazarus Documentation Editor]] and [[LCL Documentation Roadmap]] for some help on how to and a list of units to be documented.  
+
Schauen Sie nach bei [[LCL Documentation Roadmap]] für eine Liste der noch undokumentierten Units. Eine Hilfe wie's gemacht wird finden Sie unter [[Lazarus Documentation Editor]].  
  
The on-line IDE help is gradually being created as a part of the wiki. Recently a lot of stub pages of the [[Lazarus IDE]] documentation about the IDE windows have been added. When working in IDE, if you need help, press F1. You will be presented a help wiki page (possibly empty or incomplete). Improve it, if you have the relevant knowledge.
+
Die Online-Hilfe der IDE entsteht schrittweise als Teil dieses Wikis. Dabei wurden der Dokumentation über die [[Lazarus IDE]] Fenster auch viele leere Seiten als vorläufige Platzhalter hinzugefügt. Wenn Sie in der IDE arbeiten und F1 drücken wird die Online-Hilfe aufgerufen. Dabei wird Ihnen eine Seite des Hilfe-Wikis angezeigt - möglicherweise ist sie aber leer oder unvollständig. Helfen Sie mit, sie zu verbessern, wenn Sie über das nötige Wissen dazu verfügen.
  
 
=== IDE ===
 
=== IDE ===
Siehe diese Links: [[Extending the IDE]], [[Road To 1.0]].  
+
Siehe diese Links: [[Extending the IDE/de|Die IDE erweitern]], Der Weg nach 1.0 [[Road To 1.0]].
  
 
=== Widgetsets ("interfaces") ===
 
=== Widgetsets ("interfaces") ===
  
A widgetset (WS) is the "glue code" between the LCL code parts that are independent of the target operating system and the target operating system itself. For each supported target OS, the corresponding WS units are to be found in one of the subdirectories under the C:\Lazarus\lcl\interfaces\.
+
Ein Widgetset (WS) ist der "Kleber" zwischen den Teilen des LCL Codes, die unabhängig von einem Betriebssystem sind, und dem jeweiligen Ziel-Betriebssystem selbst. Für jedes unterstützte Ziel-Betriebssystem findet man die entsprechenden WS Units in einem der Unterverzeichnisse unter C:\Lazarus\lcl\interfaces\.
  
Here is an outline of the steps one should follow, in order to improve a widgetset (description provided by Mattias Gärtner on the Lazarus mailing list on 2006-07-15). When making changes to a WS, it is not necessary to rebuild everything (Lazarus including the IDE), in order to test the efects of the changes. Proceed as follows:<br>
+
Hier ist eine Reihenfolge der Schritte die beim Verbessern eines Widgetsets zu beachten sind. (Diese Beschreibung wurde durch Mattias Gärtner von der Lazarus Mailing-Liste am 2006-07-15 geliefert.) Wenn Sie an einem WS Änderungen durchführen, ist es nicht notwendig alle Units (Lazarus inklusive der IDE) erneut zu kompilieren, um die Effekte Ihrer Änderungen zu testen. Gehen Sie so vor:<br>
  
 
  * Create your testbed project (a small program
 
  * Create your testbed project (a small program
Line 48: Line 48:
 
  * Create a patch and send it (see further below for details).
 
  * Create a patch and send it (see further below for details).
  
== Wie reichen sie ihre Änderungen ein? ==
+
== Wie reichen Sie ihre Änderungen ein? ==
You will need to make a "patch" (see [[Creating A Patch]]). The preferred way of submitting the patch to the Lazarus developers is to create an issue in the bug tracker and attach the patch to it. Alternatively you can send it to the mailing list (maximum size 40kB) or the mailbox for patches [mailto:patch@lazarus.dommelstein.net patch@lazarus.dommelstein.net]. (put at least the word "patch" in the subject otherwise the mail will be rejected).
+
Sie müssen dazu einen "Patch" erzeugen (siehe [[Creating A Patch]]). Der empfohlene Weg, um einen Patch an die Entwickler von Lazarus zu übermitteln ist der über den Bug Tracker. Erstellen Sie einen neuen Fehlereintrag (engl. "issue") und fügen Sie Ihren Patch als Anhang hinzu. Alternativ dazu können Sie ihn an die Mailing List übermitteln (maximale Größe 40kB) oder an die Mailbox für Patches [mailto:patch@lazarus.dommelstein.net patch@lazarus.dommelstein.net]. (Schreiben Sie zumindest das Wort "'''patch'''" in das Feld 'Betreff' sonst wird Ihre Mail zurückgewiesen).
  
== Dealing with regressions ==
+
== Der Umgang mit Rückfällen (engl. "regressions") ==
  
From time to time changes on the Lazarus source code might cause features which worked before stop working. In case there is no clue of what caused the break it may be useful to do a iteration method to determine exactly which revision caused the problem.
+
Von Zeit zu Zeit können die Änderungen am Lazarus Quellcode ungewollt bewirken, dass bisher zuverlässige Programmfunktionen ihr Verhalten ändern. Falls es keinen Hinweis darauf gibt, was diesen Bruch verursachte, könnte es hilfreich sein, mit einer Näherungsmethode exakt diejenige Lazarus-Revision zu bestimmen, die das Problem verursachte.
  
This process is simple, althougth somewhat time consuming:
+
Dieser Vorgang ist einfach, aber auch etwas zeitraubend:
  
Suppose it works with rev 1000 and not with 5000. Then test with 3000. Testing requires updating the svn code, rebuilding lcl for desired widgetset, rebuilding a test application which uses the feature and testing this application. If it works, repeat with 3000 and 5000 as extremes. If not, use 1000 and 3000 as extremes.
+
Angenommen ein Merkmal funktioniert mit rev 1000 aber nicht mit rev 5000. Dann testen Sie mit 3000. Diese Tests erfordern es, den svn code zu aktualisieren, die lcl für ein bestimmtes Widgetset neu zu erstellen, ebenso eine Testanwendung (die das Merkmal benutzt) neu zu erstellen und diese Anwendung ausführlich zu testen. Wenn das zufriedenstellend klappt, wiederhole das Verfahren mit den Revisionen 3000 und 5000. Falls nicht, nimm 1000 und 3000 als Schranken.
  
After some time you should be able to isolate which revision broke it. This information makes fixing the problem much easier, so we encourage people helping to develop Lazarus to try this process and post this information on bug reports in case they are regressions with no clear clue of what went wrong.
+
Nach einiger Zeit sollten Sie damit die Revision, die den Bruch verursachte, isolieren können. Diese Information erleichtert die Problembeseitigung sehr. Deshalb ermutigen wir alle, die an der Verbesserung von Lazarus mithelfen wollen, dieses Verfahren zu versuchen. Senden Sie uns die Informationen über Fehlerberichte die sich auf Rückfälle ohne klaren Hinweis auf die Problemursache beziehen.
  
To check to which data each revision correspondes one can use the [http://svn.freepascal.org/cgi-bin/viewvc.cgi/?root=lazarus Lazarus ViewCVS]. After the interval of revisions was reduced to a relative small number, like 25 or so, it may be quicker to check the revisions with ViewCVS and check which are possible canditates for the break, to speed up the final part.
+
Um zu prüfen, welche Daten mit einer Revision korrespondieren, können Sie den [http://svn.freepascal.org/cgi-bin/viewvc.cgi/?root=lazarus Lazarus svn browser (ViewVC)] benutzen. Nachdem Sie das Intervall der Revisionen auf eine relativ kleine Anzahl (ungefähr 25) eingegrenzt haben, geht es vielleicht schneller, die Revisionen mit ViewVC zu untersuchen und so den möglichen Verursacher des Bruchs zu bestimmen.
  
One can obtein a particular revision using the command:
+
Sie können eine bestimmte Revision erhalten, indem Sie folgenden Befehl benutzen:
 
  svn update -r <revision number>
 
  svn update -r <revision number>
 +
 +
'''Ein Wort zur Warnung.''' Wenn Sie eine langsame oder unzuverlässige Internetverbindung (wie ein Modem oder 3G) und begrenzte Bandweite, dann ist das Checkout von verschiedenen Revisionen von SubVersion ein langsamer und teurer Vorgang. Jede auszucheckende Revision muss aus dem Internet heruntergeladen werden.
 +
 +
Dieses Problem entfällt vollständig, wenn Sie eine [[git mirrors|Git-Spiegelung]] von Lazarus verwenden, weil dann die vollständige History des Repositoriums lokal auf Ihrem Computer liegt. So können Sie beliebige ältere Revisionen auschecken ohne Internetverbindung und Checkouts passieren sofort.
 +
 +
=== Automatisieren der Suche nach Rückfallsfehlern ===
 +
 +
==== SubVersion ====
 +
Florian schrieb ein kurzes Unix-Skript das hilft, die Suche nach Regressionsfehlern zu automatisieren. Das Skript heißt
 +
[http://svn.freepascal.org/cgi-bin/viewvc.cgi/scripts/florian/unix/searchrev?view=markup&root=fpcbuild searchrev].
 +
 +
==== Git-Spiegelung ====
 +
Git enthält einen Befehl namens ''bisect'', der bei der Suche nach Regressionsfehlern hilft. Außerdem hat es eine eingebaute Unterstützung für das automatisierte Testen. Sie müssen einen kleinen Testfall erzeugen, den Git dazu benutzt, festzustellen, ob eine Revision fehlerhaft ist oder nicht. Mit dem automatisierten 'Bisecting', werden Regressionsfehler in Sekunden gefunden. Für weitere Informationen über den ''git bisect''-Befehl, siehe das [http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#using-bisect Git User Manual].
  
 
== Sie haben noch Fragen? ==
 
== Sie haben noch Fragen? ==
  
Wenn sie noch Fragen haben, dann können sie diese an den folgenden Stellen loswerden:
+
Wenn Sie noch Fragen haben, dann können Sie diese an den folgenden Stellen loswerden:
 
* Die Lazarus Mailing Liste (siehe [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Mailing list])  
 
* Die Lazarus Mailing Liste (siehe [http://www.lazarus.freepascal.org/modules.php?op=modload&name=StaticPage&file=index&sURL=maill Mailing list])  
 
*Der #lazarus-ide IRC Channel auf irc.freenode.net.
 
*Der #lazarus-ide IRC Channel auf irc.freenode.net.
 +
 +
==Siehe auch==
 +
 +
* [[Lazarus Development Process]]
 +
 +
[[Category:Lazarus/de]]

Latest revision as of 07:04, 13 January 2022

Deutsch (de) English (en) español (es) Bahasa Indonesia (id) 日本語 (ja) português (pt) русский (ru)

Voraussetzungen um an der Entwicklung von Lazarus mitzuarbeiten

Beachten Sie die folgenden beiden Punkte:

  • Sie sollten die jeweils letzte offizielle Version des FreePascal Compilers (FPC) oder eine aktuelle SVN Version (d.h. eine Entwicklerversion mit höherer Build-Nr.) installiert haben. Um den FPC Compiler zu bekommen, siehe FreePascal download.
  • Sie müssen ebenfalls über die allerneuesten Lazarus-Quelltexte von SVN verfügen. Um diese zu bekommen, siehe Getting Lazarus via SVN.

Entwicklungsbereiche

Sie haben die neueste Version von Lazarus. Sie möchten sie verbessern und fragen sich: "Wo kann ich beginnen?" Hier einige Anregungen:

Bekannte Fehler

Wenn Sie keine besonderen Probleme mit Lazarus haben, aber einfach helfen möchten, dann werfen Sie doch einen Blick auf die Fehlerliste Bug Tracker. Suchen Sie sich einen Bug, den Sie beheben können, und fangen Sie zu Hacken an. Das Lazarus Team hat die noch offenen Bugs nach Prioritäten aufgelistet in Road To 1.0.

Dokumentation

Lazarus muss besser dokumentiert werden! Falls Sie keine Fehler beheben wollen, können Sie vielleicht bei der Dokumentation mithelfen. Auch diese Seite ist in Bearbeitung. Falls Sie nützliche Informationen zum Hinzufügen haben, oder falls Sie Schreibfehler finden, dann zögern Sie nicht den Inhalt zu verbessern.

Schauen Sie nach bei LCL Documentation Roadmap für eine Liste der noch undokumentierten Units. Eine Hilfe wie's gemacht wird finden Sie unter Lazarus Documentation Editor.

Die Online-Hilfe der IDE entsteht schrittweise als Teil dieses Wikis. Dabei wurden der Dokumentation über die Lazarus IDE Fenster auch viele leere Seiten als vorläufige Platzhalter hinzugefügt. Wenn Sie in der IDE arbeiten und F1 drücken wird die Online-Hilfe aufgerufen. Dabei wird Ihnen eine Seite des Hilfe-Wikis angezeigt - möglicherweise ist sie aber leer oder unvollständig. Helfen Sie mit, sie zu verbessern, wenn Sie über das nötige Wissen dazu verfügen.

IDE

Siehe diese Links: Die IDE erweitern, Der Weg nach 1.0 Road To 1.0.

Widgetsets ("interfaces")

Ein Widgetset (WS) ist der "Kleber" zwischen den Teilen des LCL Codes, die unabhängig von einem Betriebssystem sind, und dem jeweiligen Ziel-Betriebssystem selbst. Für jedes unterstützte Ziel-Betriebssystem findet man die entsprechenden WS Units in einem der Unterverzeichnisse unter C:\Lazarus\lcl\interfaces\.

Hier ist eine Reihenfolge der Schritte die beim Verbessern eines Widgetsets zu beachten sind. (Diese Beschreibung wurde durch Mattias Gärtner von der Lazarus Mailing-Liste am 2006-07-15 geliefert.) Wenn Sie an einem WS Änderungen durchführen, ist es nicht notwendig alle Units (Lazarus inklusive der IDE) erneut zu kompilieren, um die Effekte Ihrer Änderungen zu testen. Gehen Sie so vor:

* Create your testbed project (a small program
  which should contain the testing code for your WS changes);
* Setup the keyboard shortcuts for 'Build Lazarus' and 'Configure Build Lazarus' 
  (in IDE, go to Editor Options/Keymapping);
repeat
 * Configure "Build Lazarus" to only build the LCL 
  (in IDE, go to Tools/Configure "Build Lazarus");
 repeat
  * Make your improvement in the WS code;
  * Build Lazarus (in IDE, go to Tools/Build Lazarus 
    - this only rebuilds the LCL, which rebuilds also the selected WS);
  * Now compile your testbed project;
  * Run and debug your program;
 until no errors are found in your change;
 * Reconfigure "Build Lazarus" to build all 
   (in IDE, go again to Tools/Configure "Build Lazarus");
 * Build Lazarus and test the IDE;
until no errors/degradation due to your changes are found in IDE;
* Create a patch and send it (see further below for details).

Wie reichen Sie ihre Änderungen ein?

Sie müssen dazu einen "Patch" erzeugen (siehe Creating A Patch). Der empfohlene Weg, um einen Patch an die Entwickler von Lazarus zu übermitteln ist der über den Bug Tracker. Erstellen Sie einen neuen Fehlereintrag (engl. "issue") und fügen Sie Ihren Patch als Anhang hinzu. Alternativ dazu können Sie ihn an die Mailing List übermitteln (maximale Größe 40kB) oder an die Mailbox für Patches patch@lazarus.dommelstein.net. (Schreiben Sie zumindest das Wort "patch" in das Feld 'Betreff' sonst wird Ihre Mail zurückgewiesen).

Der Umgang mit Rückfällen (engl. "regressions")

Von Zeit zu Zeit können die Änderungen am Lazarus Quellcode ungewollt bewirken, dass bisher zuverlässige Programmfunktionen ihr Verhalten ändern. Falls es keinen Hinweis darauf gibt, was diesen Bruch verursachte, könnte es hilfreich sein, mit einer Näherungsmethode exakt diejenige Lazarus-Revision zu bestimmen, die das Problem verursachte.

Dieser Vorgang ist einfach, aber auch etwas zeitraubend:

Angenommen ein Merkmal funktioniert mit rev 1000 aber nicht mit rev 5000. Dann testen Sie mit 3000. Diese Tests erfordern es, den svn code zu aktualisieren, die lcl für ein bestimmtes Widgetset neu zu erstellen, ebenso eine Testanwendung (die das Merkmal benutzt) neu zu erstellen und diese Anwendung ausführlich zu testen. Wenn das zufriedenstellend klappt, wiederhole das Verfahren mit den Revisionen 3000 und 5000. Falls nicht, nimm 1000 und 3000 als Schranken.

Nach einiger Zeit sollten Sie damit die Revision, die den Bruch verursachte, isolieren können. Diese Information erleichtert die Problembeseitigung sehr. Deshalb ermutigen wir alle, die an der Verbesserung von Lazarus mithelfen wollen, dieses Verfahren zu versuchen. Senden Sie uns die Informationen über Fehlerberichte die sich auf Rückfälle ohne klaren Hinweis auf die Problemursache beziehen.

Um zu prüfen, welche Daten mit einer Revision korrespondieren, können Sie den Lazarus svn browser (ViewVC) benutzen. Nachdem Sie das Intervall der Revisionen auf eine relativ kleine Anzahl (ungefähr 25) eingegrenzt haben, geht es vielleicht schneller, die Revisionen mit ViewVC zu untersuchen und so den möglichen Verursacher des Bruchs zu bestimmen.

Sie können eine bestimmte Revision erhalten, indem Sie folgenden Befehl benutzen:

svn update -r <revision number>

Ein Wort zur Warnung. Wenn Sie eine langsame oder unzuverlässige Internetverbindung (wie ein Modem oder 3G) und begrenzte Bandweite, dann ist das Checkout von verschiedenen Revisionen von SubVersion ein langsamer und teurer Vorgang. Jede auszucheckende Revision muss aus dem Internet heruntergeladen werden.

Dieses Problem entfällt vollständig, wenn Sie eine Git-Spiegelung von Lazarus verwenden, weil dann die vollständige History des Repositoriums lokal auf Ihrem Computer liegt. So können Sie beliebige ältere Revisionen auschecken ohne Internetverbindung und Checkouts passieren sofort.

Automatisieren der Suche nach Rückfallsfehlern

SubVersion

Florian schrieb ein kurzes Unix-Skript das hilft, die Suche nach Regressionsfehlern zu automatisieren. Das Skript heißt searchrev.

Git-Spiegelung

Git enthält einen Befehl namens bisect, der bei der Suche nach Regressionsfehlern hilft. Außerdem hat es eine eingebaute Unterstützung für das automatisierte Testen. Sie müssen einen kleinen Testfall erzeugen, den Git dazu benutzt, festzustellen, ob eine Revision fehlerhaft ist oder nicht. Mit dem automatisierten 'Bisecting', werden Regressionsfehler in Sekunden gefunden. Für weitere Informationen über den git bisect-Befehl, siehe das Git User Manual.

Sie haben noch Fragen?

Wenn Sie noch Fragen haben, dann können Sie diese an den folgenden Stellen loswerden:

  • Die Lazarus Mailing Liste (siehe Mailing list)
  • Der #lazarus-ide IRC Channel auf irc.freenode.net.

Siehe auch