# &arts; unterstützen

## Wie Sie helfen können

Das &arts;-Projekt benötigt einerseite Hilfe von Entwicklern, um existierende Multimedia-Anwendungen für &arts; anzupassen, neue Anwendungen zu schreiben und die Möglichkeiten von &arts; zu erweitern. Andererseits gibt es auch viele Aufgaben, die von Anderen übernommen werden können. Es werden Tester benötigt, die Fehlermeldungen liefern, Übersetzer, die die Anwendungstexte und die Dokumentation in andere Sprachen übersetzen, Graphiker, die Bitmaps (besonders für die artsbuilder-Module) entwerfen, Musiker, die Beispiele für &arts; erzeugen, und Autoren, die die Dokumentation schreiben und korrigieren.

## Mailinglisten

Viele Diskussionen zur Entwicklung von &arts; finden in einer von zwei Mailinglisten statt. Hier werden neue Fähigkeiten und Umsetzungsideen diskutiert, hierhin kann man sich bei Problemen wenden.

Die &kde;-Multimedia-Mailingliste ist für allgemeine Multimediathemen sowohl &arts; als auch andere Multimediaprogramme wie &noatun; und &aktion; betreffend. Sie können sich auf der Internetseite http://www.kde.org/mailingslists.html oder durch eine E-Mail mit dem Betreff (subject) `subscribe Ihre-E-Mail-Adresse` an kde-multimedia-request@kde.org anmelden. Die Liste wird unter http://lists.kde.org archiviert.

In der &arts;-Mailingliste geht es um &arts;-spezifische Themen einschließlich der Nutzung von &arts; außerhalb von &kde;. Zur Anmeldung senden Sie eine E-Mail mit dem Inhalt `subscribe Ihre-E-Mail-Adresse` an arts-request@space.twc.de. Die Liste wird unter http://space.twc.de/~stefan/arts-archive archiviert.

## Programmierstandards (in Englisch)

For getting a consistent reading through all the sources, it is important to keep the coding style the same, all over the &arts; source. Please, even if you just write a module, try to write/format your source accordingly, as it will make it easier for different people to maintain the source tree, and easier to copy pieces of from one source to another.

Naming of member functions

  &Qt;/&Java; style, that means capitalization on word breaks, and first letter always without capitalization; no underscores.

  This means for instance:

      createStructureDesc()
         updateWidget();
         start();

Class members

  Class members are not capitalized, such as menubar or button.

  When there are accessing functions, the standard should be the &MCOP; way, that is, when having an long member `foo`, which shouldn't be visible directly, you create:

      foo(long new_value);
         long foo();

  functions to get and set the value. In that case, the real value of `foo` should be stored in _foo.

Class names

  All classes should be wordwise capitalized, that means ModuleView, SynthModule. All classes that belong to the libraries should use the &arts; namespace, like Arts::Soundserver.

  The implementations of &MCOP; classes should get called Class_impl, such as SoundServer_impl.

Parameters

  Parameters are always uncapitalized.

Local variables

  Local variables are always uncapitalized, and may have names like `i`, `p`, `x`, &etc; where appropriate.

Tab width (Shift width)

  One tab is as long as 4 spaces.

Leerzeichen in Ausdrücken

  Normalerweise müssen in Ausdrücken keine Leerzeichen verwendet werden. Man kann sie allerdings zwischen Operatoren und ihren Operanden setzen. Falls man allerdings ein Leerzeichen direkt vor einen Operator (wie z.B. +) setzt, muss man auch nach dem Operator ein Leerzeichen setzen. Die einzige Ausnahme von dieser Regel bilden listenartige Ausdrücke (mit ,), bei denen man nur hinter dem "," ein Leerzeichen setzen darf. Man kann es aber auch weglassen.

  Die folgenden Beispiele demonstrieren die sinnvolle Verwendung von Leerzeichen:

      {
          int a,b;
          int c, d, e;
          int f = 4;

          a=b=c=d+e+f;
          a = b = c = d + e + f;

          if(a == 4) {
              a = b = c = (d+e)/2;
          }

          while(b<3)
              c--;

          arts_debug("%d\n", c);
      }

  Die folgenden Beispiele demonstrieren, wie Leerzeichen nicht verwendet werden dürfen. Bei Funktionsaufrufen, nach "if", "for", "switch" und so weiter dürfen keine Leerzeichen stehen.

      {
          // FALSCH: In einer Liste dürfen Leerzeichen nur nach dem "," stehen
          int a , b , c , d , e , f;

          // FALSCH: unsymmetrische Leerzeichen beim =-Operator
          a= 5;

          // FALSCH: "if" ist eine Funktion, daher dürfen keine Leerzeichen folgen
          if (a == 5) {
          }

          // FALSCH: nach "while" darf kein Leerzeichen folgen
          while (a--)
              b++;

          // FALSCH: Auf Funktionsnamen dürfen keine Leerzeichen folgen
          arts_debug ("%d\n", c);

          // FALSCH: keines von beiden ist ein member-Name
          Arts::Object o = Arts::Object::null ();
      }

Naming of source files

  Source files should have no capitalization in the name. They should have the name of the class when they implement a single class. Their extension is `.cc` if they refer to &Qt;/&GUI; independent code, and `.cpp` if they refer to &Qt;/&GUI; dependant code. Implementation files for interfaces should be called `foo_impl`, if Foo was the name of the interface.

  &IDL; files should be called in a descriptive way for the collection of interfaces they contain, also all lower case. Especially it is not good to call an &IDL; file like the class itself, as the .mcopclass trader and type info entries will collide, then.