Programmierkurs – Kapitel 6 Dipl.-Wirt.-Inf. Stefan Fleischer Dipl.-Wirt.-Inf. Ulrich Wolffgang

Programmierkurs

IT-Recht

Urheberrecht

(Deutsches) Urheberrecht: Schutz ideeller und materieller Interessen des Urhebers an seinem Geisteswerk.

Urheberbegriff: „Urheber ist der Schöpfer eines Werkes.“ (§7, UhrG) Werk im Sinne des UhrG: Sprachwerke, Software, … Persönliches Schaffen: Gestaltender Einfluss des Menschen. Wahrnehmbare Formgestaltung: Manifestierung obligatorisch  Ausschluss bloßer Ideen (im Gegensatz zum Patentrecht). Geistiger Gehalt: Erzeugung einer Gedanken- oder Gefühlswelt mit Wirkung auf Betrachter. Eigenpersönliche Prägung: Individualität, Originalität, schöpferische Gestaltungshöhe (Schöpfungshöhe). Programmierkurs 1

IT-Recht

Urheberrecht

Urheberrecht: Mit der Person des Urhebers untrennbar verbunden. Kann nur durch Erbfolge übertragen werden. (Anders als beim Copyright) Ist zeitlich begrenzt (70 Jahre), danach automatisch Gemeinfreiheit.

Problem: Urheberrecht ist nicht verkehrsfähig Urheberrecht kann nicht übertragen werden. Übertragung in manchen Fällen aber sinnvoll, z. B. zur Einkommenserzielung durch Monetarisierung des Werkes. Besteller kann aber niemals Urheber sein, auch nicht bei einem Arbeits- oder Dienstverhältnis. Besteller kann damit nicht über Werk frei und ausschließlich verfügen. Programmierkurs 2

Urheberrecht Lösung 1: Nutzungsrechte Urheber kann über Nutzungsrechte an Werk ausschließlich und frei disponieren. Urheber kann Dritten (z. B. Bestellern, Arbeitgebern) Nutzungsrecht einräumen, z. B. durch Arbeitsvertrag.

„Wird ein Computerprogramm von einem Arbeitnehmer in Wahrnehmung seiner Aufgaben oder nach den Anweisungen seines Arbeitgebers geschaffen, so ist ausschließlich der Arbeitgeber zur Ausübung aller vermögensrechtlichen Befugnisse an dem Computerprogramm berechtigt, sofern nichts anderes vereinbart ist. Absatz 1 ist auf Dienstverhältnisse entsprechend anzuwenden.“

Programmierkurs 3

Urheberrecht Lösung 2: Verwertungsrecht Urheber kann über Verwertungsrechte an Werk ausschließlich und frei disponieren. Wer über Nutzungsrechte Einnahmen erzielen will, sich aber nicht mit Rechteempfängern im Einzelnen befassen will, kann jemanden mit Verwertung seiner Rechte beauftragen. Der Verwerter erteilt dann Nutzungsrechte an Dritte. Einige Verwertungsgesellschaften: Musik: GEMA Sprachwerke: VG Wort Filme: VG Bild-Kunst

Musiker können z. B. in Verwertungsgesellschaft GEMA Mitglied sein. GEMA-Vermutung: Beweislastumkehr bei Veranstaltungen der Tanzund Unterhaltungsmusik Programmierkurs 4

Lizenzierung Probleme: Rechtegerüst auf Basis des Urheberrechts ist zu starr für kollaborative Softwareentwicklung im Internet mit wechselnden Entwicklern. Geschäftsmodelle der Verwertungsgesellschaften werfen Probleme auf

Programmierkurs 5

IT-Recht

Lizenzierung

Lösung Lizenz: Dauerhafte Einräumung einer Erlaubnis, Dinge mit Software zu tun, die ohne die Lizenz verboten sind  Nutzungsrechte.

Lizenzvertrag Inhaber eines geschützten Rechts (Urheber, Arbeitgeber) erteilt Lizenznehmer (z. B. Kunden) durch Vertrag ein definiertes Nutzungsrecht zu einem vom Inhaber bestimmten Preis. Kann einfach (nicht-exklusiv) oder ausschließlich sein.

Spezialfall Freie Software Einfache Nutzungsrechte pauschal jedermann einräumen. Lizenznehmer signalisiert Zustimmung zu Lizenz durch Wahrnehmung der durch Lizenz vereinbarten Rechte. Programmierkurs 6

Lizenzierung Problem: Lizenz der Form „Mach damit, was Du willst“ stellt nicht sicher, dass veränderte Versionen der Software ebenso freigiebige Lizenz besitzt.

Lösung: Copyleft-Lizenz Als Gegenleistung für eingeräumte Rechte: Freiheit von weiterbearbeiteten und fortentwickelten Versionen eines freien UrWerkes fordern. Unbeschränkte Verbreitung von Kopien und veränderten Versionen sicherstellen.

Kritik Forderung nach Gegenleistung impliziert Unfreiheit. Copyleft als Virus, der Quelltexte „infiziert“. Programmierkurs 7

GNU General Public License GNU General Public License 1989 von Richard Stallmann für das GNU Projekt (aka „GNU/Linux“) geschrieben Stellt vier Freiheiten sicher: Erlaubte Softwarenutzung ohne Einschränkungen (auch kommerzielle Nutzung). Verteilung der Software kostenlos oder gegen Geld. Auflagen: Quelltext ist beizufügen, vier Freiheiten bleiben bei Transfer erhalten. Programm darf analysiert und modifiziert werden. Veränderte Versionen müssen NICHT veröffentlicht werden. Falls aber sie veröffentlicht werden, stehen diese wieder unter der GPL  die vier Freiheiten gelten auch für abgeleitete Programmversionen (Copyleft). Programmierkurs 8

Lizenzierung Verwendung erprobter Lizenzen schafft Sicherheit in der Rechtsprechung. Wichtige Open-Source-Lizenzen Für Software: GNU General Public License (GPL) (copyleft) GNU Lesser General Public License (LGPL) (copyleft) MIT Lizenz (non-copyleft) BSD Lizenz (non-copyleft) Apache Lizenz (non-copyleft)

Für Audio, Video, Text: Creative Commons

http://de.wikipedia.org/wiki/Open-Source-Lizenz Programmierkurs 9

GNU General Public License Anwendung im Header jeder Quelltextdatei (als Kommentarfeld /** … */) [eine Zeile mit dem Programmnamen und einer kurzen Beschreibung] Copyright (C) [Jahr] [Name des Autors] This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see .

Zudem sollte Kopie der GPL dem Programm beiliegen, üblicherweise als Datei mit dem Namen LICENSE Programmierkurs 10

Optimierung Heute Optimierung des Laufzeitverhaltens des Crawlers Downloader: Irrelevante Dateitypen (Content-Types) ignorieren. Downloadgröße limitieren. HTTP Timeouts optimieren. StringBuffer beim Reader bzw. Einlesen des Inputstreams verwenden verwenden.

Threading: Automatisiert optimale Anzahl Threads ermitteln.

Parser: Nicht valide Domains ignorieren. Falls URL in Webseite mehrfach vorkommt, diese bei parseUrls() nicht mehrfach zurückgeben  Database.saveUrls() entlasten.

Programmierkurs 11

Optimierung Datenbank: Falls URL gespeichert werden soll, die bereits in Datenbank existiert  Exception wird geworfen. Schnellere Alternative nehmen. Randomisierungsmechanismus von getRandomUrl() optimieren. Indexe in MySQL optimieren. Anzahl offener Datenbankverbindungen optimieren.

Um 11.00 Uhr werden Crawler auf Dozenten-PC gemessen.

Programmierkurs 12

Evaluation

Evaluation

Programmierkurs 13