1.
Einleitung ^
Das Urheberrecht schützt uA als Literatur auch Computerprogramme (§ 40a-e UrhG1). Doch leider fehlt es an einer Definition, was ein Computerprogramm ist. Eine solche ist auch in der Computerprogramm-RL2 der EU nicht vorhanden. Daher entstanden im Laufe der Zeit immer wieder Zweifel, ob eine bestimmte Art von Computerdaten nun als Programm (=geschützt als Computerprogramm) oder nicht (=ev als andere Werkart geschützt, oder auch lediglich zB über das Wettbewerbsrecht3) anzusehen sei. In der RL und/oder dem UrhG wird jedoch festgelegt:
- Ein Computerprogramm umfasst auch das Entwurfsmaterial zu seiner Entwicklung (RL: sofern die Art der vorbereitenden Arbeit die spätere Entstehung eines Computerprogramms zulässt).
- Die Form der Wiedergabe ist unerheblich, dh ob es sich um Quellcode/Maschinencode handelt sowie ob es Magnetdaten auf einem Datenträger, Elektronen in einem Flash-Speicher oder Tinte auf Papier sind spielt keine Rolle. Dies inkludiert daher auch Programme, die in die Hardware integriert sind (zB ROMs).
- Mindestansprüche an die Qualität oder ästhetische Kriterien sind nicht anzuwenden. Also auch fehlerhafte sowie unübersichtliche oder ineffiziente Programme sind geschützt.
Daraus ergeben sich jedoch sofort einige Fragen:
- Was ist mit Computerprogrammen die so fehlerhaft sind, dass sie überhaupt nicht ausgeführt werden können, dh die nicht nur logische sondern auch viele/schwere Syntax-Fehler enthalten?
- Wenn in die Hardware integrierte Programme immer noch Programme sind, ist dann zB eine VHDL-Beschreibung (=Hardware-Beschreibungssprache) ein Programm? Dies würde ev bedeuten, dass ein Großteil existierender Chips (als in Hardware integriertes Programm) Computerprogrammschutz beanspruchen könnten. Oder kommt es darauf an, ob der Code synthesefähig ist (=Übersetzung in Hardware automatisch möglich) oder nicht (nur Simulation möglich)?
- Was sind Klassenbibliotheken, die kein alleinstehendes Programm darstellen und ohne weitere Elemente auch nie ausgeführt werden können? Ähnliches gilt für Templates (Vorlagen für Programmcode; wurden früher zuerst in Quellcode übersetzt) oder Schnittstellendefinitionen.
- Sind Konfigurationsdateien Computerprogramme? Von der Konstantenfestlegung bis hin zu komplexen Verfahrensabläufen mit Schleifen und Verzweigungen (Business-Rules) kann alles Mögliche enthalten sein.
2.
Definition ^
Definitionen für «Computerprogramm» sind in div Quellen zu finden, daher wird hier nur eine Auswahl dargestellt:
- [...] Darstellung eines Problemlösungsverfahrens in einer für den Computer verständlichen Form. Programme werden in einer Programmiersprache formuliert4.
- Ein Programm stellt einen Algorithmus einschließlich erforderlicher Datenobjekte in einer dem Computer verständlichen Form einer Programmiersprache dar. Er ist auf einem Computer ausführbar. Programmiersprachen ermöglichen die Formulierung des Lösungsalgorithmus in einer formalen Form.5
- (Computer-)Programme sind Verfahren, die gegebene Daten durch Algorithmen in einem Computer manipulieren, um ein gewünschtes Endergebnis [...] zu erhalten. Die Formulierung eines Algorithmus erfolgt in einer Sprache, die der Computer verstehen und abarbeiten kann. Programmiersprachen sind ein Hilfsmittel zur Abbildung der Daten- und Kontrollstrukturen des Algorithmus in die Sprachkonstrukte der betreffenden Programmiersprache.6
- Eine Programmiersprache ist eine künstliche Sprache zur präzisen Formulierung von Algorithmen. Ein Programm ist die Codierung eines Algorithmus in einer Programmiersprache.7
- [...] eine Folge von den Regeln der jeweiligen Programmiersprache genügenden Anweisungen, die auf einem Computer ausgeführt werden können, um damit eine bestimmte Funktionalität zur Verfügung zu stellen8. Eine Programmiersprache ist eine formale Sprache zur Formulierung von Datenstrukturen und Algorithmen, d.h. von Rechenvorschriften, die von einem Computer ausgeführt werden können9.
- Nach der Deutschen Industrie-Norm (DIN) 44300, Teil 4 versteht man unter einer Programmiersprache eine zum Abfassen von Computerprogrammen geschaffene Sprache. Computerprogramme sind eine nach Regeln der verwendeten Sprache festgelegte syntaktische Einheit aus Anweisungen und Vereinbarungen, welche die zur Lösung einer Aufgabe (mittels einer digitalen Rechenanlage) notwendigen Elemente umfasst.
Durch Rückgriff auf die Programmiersprache löst sich auch das Problem einer ev. Selbstbeschränkung: Wenn ein «Programm» keine Datenstrukturen sondern nur Grund-Datentypen verwendet und auf Schleifen vollständig verzichtet, so kann es zB als Entscheidungstabelle repräsentiert werden. Ist dies noch als Programm anzusehen? Ja, denn es kommt nicht darauf an, welche Funktion die konkreten Anweisungen ausführen13 (bzw ob diese «sinnvoll», kommerziell erfolgreich etc. sind; vgl abstrakte Kunst...), sondern welche Möglichkeiten die Programmiersprache bietet. Dies beruht weiters darauf, dass ein Programm ebenso aus einem einzigen Befehl bestehen kann, welcher eine sehr komplexe Funktion ausführt (vergleiche CISC- vs. RISC-Rechner sowie den Einsatz von Bibliotheken). Damit ergeben sich zwanglos auch Programme, welche das (ohnehin niedrige) erforderliche Kreativitätsniveau eben nicht erreichen und damit zwar Computerprogramme sind, aber nicht vom UrhG geschützt werden.
3.
Einzelne Anwendungsbeispiele ^
3.1.
Webseiten ^
3.2.
Konfigurationsdateien ^
3.3.
Datenbankdefinitionen ^
Die Erstellung der Struktur, wie Daten abzuspeichern sind, beruht einerseits auf etablierten Regeln (zB Normalisierung), andererseits auf viel Kreativität und Arbeit. Daher besteht das Bedürfnis, das Ergebnis vor einfach möglichem Kopieren zu schützen. Dies kann jedoch, im Gegensatz zum Datenbankverwaltungssystem, nicht als Computerprogramm erfolgen, da hier zwar der statische Teil umfangreichst ausgeführt ist (oft mehr als in Programmiersprachen), jedoch dynamische Aspekte fehlen. So können zwar Trigger definiert werden, doch lösen diese nur den Aufruf von (externen) Computerprogrammen aus, ähnlich wie bei Konfigurationsdateien. SQL (um nur die häufigste Form zu nennen) wird auch nicht als Programmiersprache angesehen18.
3.4.
Schnittstellendefinitionen ^
3.5.
Klassenbibliotheken ^
Hier stellt sich jedoch eine zweite Frage: Wird der gesamte Programmcode entfernt und lediglich die Klassenaufteilung (inkl. Methoden, Attribute etc. und deren Benennung und Schnittstelle) übernommen, ist dies dann eine Verletzung des Urheberrechts am Computerprogramm? Diesfalls bleibt lediglich eine (etwas anders formulierte) Schnittstellenbeschreibung über, die daher wie eine solche (siehe oben) zu beurteilen ist. Als Beispiel für die Abgrenzung kann dienen:
- Daten in Objekten mit bestimmter Schnittstelle (Interface) zu kapseln, hierfür allgemeine Strukturen (Listen, Mengen etc.) bereitzustellen und diese bearbeiten zu können (etwa mittels Iteratoren) ist eine allgemeine Idee bzw eine Vorgehensmethode sowie bei genauer Detaillierung eine bloße Schnittstelle und nicht geschützt. Analoge Klassenbibliotheken dürfen jederzeit entwickelt werden. Vergleiche hierzu auch «design patterns».
- Die konkrete Zusammenstellung von Funktionalität in Klassen (was macht alles Klasse A, was übernimmt Klasse B bzw C) sowie deren spezifische Benutzung (ein Iterator muss erzeugt und dann mit einer Datenstruktur verbunden werden, wird von der Datenstruktur auf Anfrage geliefert, oder es existiert eine eigene Erzeugungsklasse) ist potentiell vom urheberrechtlichen Schutz umfasst: Es könnte sich um ein Sammelwerk handeln (Auswahl und Anordnung der Daten/Methoden). Die Auswahl enthält jedoch keine dynamischen Aspekte, somit handelt es sich nicht um ein Computerprogramm.
- Die konkrete Implementierung der einzelnen Methoden (zB wie ein Element in eine Liste eingefügt wird) ist ein Computerprogramm und als solche geschützt – insoweit ein Gestaltungsspielraum besteht und ausgenützt wurde.
3.6.
VHDL ^
4.
Zusammenfassung ^
Michael Sonntag, Institut für Informationsverarbeitung und Mikroprozessortechnik (FIM), Johannes Kepler Universität Linz.
- 1 Bundesgesetz über das Urheberrecht an Werken der Literatur und der Kunst und über verwandte Schutzrechte (Urheberrechtsgesetz), idF BGBl. I Nr. 58/2010.
- 2 Richtlinie 2009/24/EG des Europäischen Parlaments und des Rates vom 23. April 2009 über den Rechtsschutz von Computerprogrammen, ABl. L 111 vom 5.5.2009, 16.
- 3 Siehe zB OGH 16.1.2007, 4 Ob 198/06f.
- 4 Meckel, Computerprogramm, Gabler Wirtschaftslexikon, Springer: http://wirtschaftslexikon.gabler.de/Definition/computerprogramm.html (9.11.2012).
- 5 Werner et al., Taschenbuch der Informatik, Leipzig: Fachbuchverlag 1995, 324f.
- 6 Herold/Lurz/Wohlrab, Grundlagen der Informatik, München: Pearson 2006, 151.
- 7 Horn/Kerner, Lehr- und Übungsbuch Informatik. Band 1: Grundlagen und Überblick, Leipzig: Fachbuchverlag 1995, 223.
- 8 Wikipedia, http://de.wikipedia.org/wiki/Computerprogramm (9.11.2012), dort ein Zitat nach ISO/IEC 2382-1:1993 «A syntactic unit that conforms to the rules of a particular programming language and that is composed of declarations and statements or instructions needed to solve a certain function, task, or problem.» Siehe dazu auch die DIN-Definition im folgenden Punkt!
- 9 Wikipedia, http://de.wikipedia.org/wiki/Programmiersprache (9.11.2012) dort ein Zitat nach dem Informatik Duden.
- 10 Zitiert nach Walter in Walter, Europäisches Urheberrecht Art 1 RZ 19 SoftwareRL. Vergleiche die Mustervorschriften für den Schutz von Computersoftware der WIPO (GRUR Int 1978, 586, zitiert nach Koch, Handbuch Software- und Datenbank-Recht, 560), bei denen ebenfalls bereits die Anzeige eines bestimmten Ergebnisses ausreichen würde. Ebenfalls problematisch ist dort das Abstellen auf eine «prozedurale Darstellung» (§ 1 Abs 2: Programmbeschreibung), da viele andere Formen existieren.
- 11 So auch Ott, Urheberrecht im Internet und Computerprogramme, http://www.linksandlaw.de/linkingundframing6.htm (21.11.2012). Die Meinung, dass bei der Umsetzung in HTML kein Spielraum mehr verbleibe, wenn die Anordnung der Elemente einmal bestimmt ist, muss als eindeutig falsch angesehen werden: Sowohl in reinem HTML wie auch in CSS kann ein optisch identisches Ergebnis auf eine Vielzahl an Arten erreicht werden.
- 12 Dies könnte ev formal mit der «Turing-Vollständigkeit» beschrieben werden. Diese ist jedoch nach den meisten Definitionen nicht erforderlich, um eine Sprache als Programmiersprache zu qualifizieren.
- 13 Der Schutzbereich eines solchen Programms wird jedoch sehr eng sein, da die darin verkörperte Funktion nicht vom Urheberrechtsschutz umfasst ist, sondern lediglich die konkrete Form der Umsetzung in dieser Programmiersprache!
- 14 Beispiel: Der Befehl «ls -R / | grep -i ‘\.png‘| sort» findet alle PNG-Dateien im Dateisystem und gibt diese sortiert aus. Das Kommando (=eine Anweisung, kann aber auch als Programm angesehen werden) besteht aus drei unabhängigen Programmen, die ebenso alleine sinnvoll ausführbar sind.
- 15 Ein Webserver ruft zB basierend auf Benutzereingaben in einem Formular diverse Programme auf, um Aktionen zu initiieren oder Daten abzufragen.
- 16 OLG Düsseldorf, 29.6.1999, 20 U 85/98; Nicht ganz so klar OGH 16.1.2007, 4 Ob 198/06f.
- 17 HTML zusammen mit CSS ist Turing-Vollständig (umstritten!), denn ein, allerdings interaktiver, «Rule 110» Automat kann darin programmiert werden (zB https://gist.github.com/3370826#file_rule110_full.html; 21.11.2012). Von diesem ist bekannt, dass er Turing-vollständig ist: Cook, Universality in Elementary Cellular Automata, http://www.complex-systems.com/pdf/15-1-1.pdf (21.11.2012). Allerdings wird gewisse Benutzerinteraktion benötigt.
- 18 SQL nach Standard SQL92 ist nicht Turing-Vollständig, mit der Erweiterung CTE (Common Table Expressions) und Windowing jedoch schon (Fetter, High Performance SQL with PostgreSQL 8.4, http://assets.en.oreilly.com/1/event/27/
- 19 Beispiel: Ein Computerprogramm, das den Text eines Romans enthält und diesen beim Ausführen ausgibt. Das Computerprogramm selbst ist an sich als solches geschützt, jedoch trivial und fällt daher aus dem Schutzbereich heraus. Der darin enthaltene Text ist jedoch nicht Teil des Computerprogramms sondern ein separates Werk der Literatur. Siehe auch Fina, Urheberrechtsschutz von Computerprogrammen, 5.
- 20 ZB auch: Handelt es sich um eine «Programm-Methode» oder eine «Web-Methode», wird sie übergebene Daten verändern, verändert sie den globalen/lokalen Zustand, etc.
- 21 Wie von Walter in Walter, Europäisches Urheberrecht Art 1 RZ 21 SoftwareRL gefordert.
- 22 Wiebe in Kucsko, urheber.recht § 40a 2.1 Abs 2.
- 23 Koch, Handbuch Software- und Datenbank-Recht, 622 RZ 166.