30.11.2012

Noch'n Leserbrief zum Leistungsschutzrecht

Nachdem heute in der WZ mal wieder kurz und knackig einseitig über Google und das Leistungsschutzrecht berichtet wurde (S.2), habe ich einen erneuten Anlauf unternommen, einen Leserbrief zum Thema im Meinungstreff unterzubringen. Dort wird ja derzeit recht esoterisch über Terraforming und Umsiedlung zur Venus diskutiert, vielleicht habe ich ja doch Chancen mit einem regionaleren Thema.

[Update 05.12.12: Der Leserbrief wurde leicht gekürzt gedruckt. Alle Kurzlinks (zu goo.gl) wurden entfernt. Alle Änderungen habe ich rot markiert, Formatierungsänderungen habe ich kursiv markiert. Schade natürlich, dass alle Links fehlen und auch die weiterführenden Hinweise zur Entstehung etc.]
Leserbrief zum Thema "Leistungsschutzrecht", 28.11.2012, S.2

In dieser Ausgabe der WZ wird eine Pressemitteilung über das geplante Leistungsschutzrecht mit Zitaten von Google und BDZV abgedruckt (http://goo.gl/l6bdV).
Dieses neue Gesetz soll den Verlegern ein Lizenzierungsrecht für Textanrisse in Suchmaschinen garantieren. Weltweit wird dieser deutsche Alleingang belacht, der kürzlich vom Kabinett durchgewunken wurde und morgen nacht im Bundestag ohne Aussprache beschlossen werden soll.
Dieses neue Gesetz soll es für Suchmaschinen und vergleichbare Automatismen, z.B. sogenannte Nachrichtenaggregatoren (Sammler), kostenpflichtig machen, die Anrisse von Webseitentexten als Suchergebnis anzuzeigen. Auch in deutschen juristischen Fachkreisen wird das Gesetz eindeutig abgelehnt, weil es handwerklich schlecht formuliert ist und Wirkungslosigkeit prognostiziert wird (http://goo.gl/Wr55q).

Dieses geplante Gesetz ist absurd: die Verleger möchten von den Werbeeinnahmen von Google und anderen Werbevermarktern profitieren. Dabei bauen sie ihr Webangebot doch nicht für Google auf, sondern für ihre Leser!.
Das ist ungefähr vergleichbar mit der Idee, dass die Friedberger Geschäfte einen Anteil an den Einnahmen von Bussen,  Bahnen und Tankstellen fordern, weil ja die Käufer mit öffentlichen oder privaten Verkehrsmitteln zum Einkaufen kommen und die Geschäfte somit den Verkehrsbetrieben und Tankstellen Kunden zuführen! Welche Verdrehung der Tatsachen!.

Dabei vergessen die Verlage aber, dass die allermeisten Besucher erst durch die Suchmaschinen auf ihre Webseiten gelotst werden. Die Zahlen schwanken je nach Untersuchungsmethode zwischen 50 und 90%, d.h. dass mindestens die Hälfte aller Besucher durch eine Suchmaschine zu den Nachrichtenseiten gelotst werden. Außerdem gibt es seit 15 Jahren einen etablierten Standard, mit dem Webseitenbetreiber die Suchfunktion von Google etc. aussperren können (teilweise oder ganz, Stichwort robots.txt). Interessanterweise will kein Verleger diese technische Möglichkeit in Anspruch nehmen. Mit anderen Worten: die Verlage *wollen* (fett entfernt) über Google gefunden werden _und_ (Unterstreichung entfernt) sie wollen dafür bezahlt werden. Es gibt zahllose Firmen, die sich als "Suchmaschinenoptimierer" (SEO) andienen, um Seiten so mit Hilfsbegriffen zu spicken, dass sie besser von Google indiziert und gefunden werden können als die der Konkurrenz.

Es liegt also an den Webseitenbetreibern, Geld von den zu ihnen gelenkten Besuchern durch Werbung oder Käufe zu erhalten. "Google News" übrigens ist eine komplett werbefreie Seite. Es ist eine Falschdarstellung, wenn man "Google News" Werbeeinnahmen unterstellt. Es ist eine werbefreie Übersichtsseite und verweist auf Nachrichtenangebote. Probieren Sie es selbst aus (http://news.google.de)!

Bekannte, fachkundige Rechtsanwälte lehnen einhellig dieses Gesetzesvorhaben ab: z.B. Udo Vetter (http://goo.gl/ScqHh) und Thomas Stadler (http://goo.gl/iUEAb), sowie die Organisation irights.info (http://goo.gl/3ZpnY). Udo Vetter ist sogar der Meinung, wenn man im Internet, z.B. in seinem eigenen Blog, nicht mehr unter Bezug, d.h. Zitat oder Verlinkung, seine Meinung äußern darf, "bedroht das Leistungsschutzrecht die neue Meinungsfreiheit (Brechts Idee "jeder ist ein Sender"). Wer als Bürger nur noch Zeitung lesen, aber nichts mehr im Internet dazu sagen darf, kann sich getrost digital kastriert vorkommen" (Zitatendekennzeichnung entfernt).

Der Medienjournalist Stefan Niggemeier meint dazu, dass hier schon kleinste Textschnipsel geschützt werden. Damit würden die Verlage durch die Hintertür ein Monopolrecht auf Sprache erhalten, weil schon eine Überschrift nach dem LSR schützenswert wäre (http://goo.gl/90KSX), und sogar Zitate, die nur eine Überschrift und einen Link enthalten, wären lizenzpflichtig. Hurra, neue Einnahmequellen und ein weites Feld für Abmahnanwälte ... Eine interessante Aufstellung, wie das Leistungsschutzrecht entstanden ist, liefert Hr. Niggemeier mit dieser Übersicht: http://goo.gl/kaZCb, und in diesem Artikel wird m.E. sehr schön erklärt, warum das falsch ist: http://goo.gl/1CiUw
Und nachdem ich bereits einmal schlechte Erfahrungen mit einem Leserbrief zu diesem Thema gemacht hatte, ist mein Anschreiben an die Redaktion etwas offensiver ausgefallen als ich normalerweise zu schreiben pflege:
Hallo,
anbei ein Leserbrief zum Thema Leistungsschutzrecht anlässlich des kurzen Artikels heute auf S.2. Ich würde mich sehr freuen, wenn Sie zur objektiven Meinungsbildung beitragen und auch einen Leserbrief abdrucken, der Sie persönlich oder beruflich betrifft. Ich gehe davon aus, dass Sie die Funktion von Journalismus nicht als "Meinungssteuerung" auffassen oder als reine Wiedergabe von dpa-Zulieferungen, sondern dem Leser selbst eine gewisse Urteilsfähigkeit zugestehen. Es wäre in meinen Augen ein Zeichen von Größe, auf diese Weise eine sachliche Diskussion zu ermöglichen.

Ich werde weiter berichten, ob die WZ diesmal den Leserbrief abdruckt.

19.11.2012

Eclipse und Android - was man alles falsch machen kann

Heute mal was für Programmierer und solche, die es werden wollen ...
Wahrscheinlich amüsieren sich die Profis über meine ersten Stolperschritte mit einer neuen Eclipse-Installation. Ich hab's ja nicht so mit GUIs, ich bin ein reiner Kommandozeilenmensch ;)

Es war einmal ... ein Eclipse Indigo mit Android SDK auf einem WXP-System zur Entwicklung einer kleinen App für Android 2.2.
Android 2.2 als Target, weil sich exakt mit dieser Version das API für den Zugriff auf eine SD-Karte eingeführt wurde (getExternalFilesDir()).
Dann war lange Zeit Pause, weil die App einfach so fröhlich vor sich hin funktionierte.
Nach einem Jahr und etwas mehr war ich genervt von den neuen Android-Versionen, die an mir vorübergingen, weil Samsung keine Updates für die Galaxy-S-Geräte auf die Reihe bekam. Also Anschaffung Nexus7 und Galaxy Nexus ;), Verkauf Archos 101 (Android 2.2.1), Galaxy i9000 (2.3.3). Am Rand: Nexus7 seit 2 Tagen auf 4.2, GNexus noch auf 4.1.2.

Interessanterweise funktioniert die bisherige App für den Wetterauer Tiernotdienstkalender (aus dem Play Store) auch auf diesen Nexus-Geräten, die ja prinzipiell keine SD-Karten unterstützen (außer mit Tricks auf gerooteten Geräten und einem USB-OTG-Adapter ...).

Irgendwann kam ein neuer PC mit Linux (RHEL 6.3) und Eclipse Juno und die Lust, ein bißchen weiter an den bisherigen Apps zu basteln und auch mal am lang geplanten und siechenden Romanverwaltungsprogramm (für PR und die anderen Serien, die ich sammle) weiterzuschrauben.

Also:
  1. Eclipse Juno installiert
  2. Android SDK installiert
  3. Android plugin für Eclipse installiert
  4. Android SDK Manager zum Download diverser Google Images und APIs gestartet
  5. An diversen Permissions geschraubt, bis Eclipse, AVD und ADT als User (nicht root) funktionieren
  6.  Sourcen der Apps in den Eclipse-Workspace kopiert
  7. Freundliche Fehlermeldungen über R.java
  8. Clean Project
  9. R.java wird in gen/ nicht neu erzeugt ;(
  10. Fehlersuche bei stackoverflow.com und diversen anderen
  11. Alle Tipps der Reihe nach ausprobieren ...
  12. z.b. "manage imports" erzeugt immer wieder "import android.R;" (Erklärung dafür: das Android SDK stößt auf einen Fehler und bricht ab. R.java wird nicht erzeugt, deshalb bastelt Eclipse sich irgendwas zurecht ;( )
  13. z.b. "clean"
  14. z.b. "properties->android tools->fix project properties"
  15. z.b. "Build Path->Order"
  16. z.b. "per-project java build environment"
  17. Aus lauter Verzweiflung dann statt dem IBM JRE 1.6.0.11 noch Sun JDK 1.7.09 installiert und eclipse -vm /opt/jdk_1.7.0_09/jre/bin aufgerufen.
  18. z.b. Prüfen aller XML auf Korrektheit
  19. Im grafischen Editor für das UI fiel mir auf, dass nix angezeigt wurde, und zum ersten Mal wenigstens mit einem Hinweis: keine Version angegeben für Emulator!
  20. Also Preferences->Android aufgerufen
  21. Dort wurde nur Version 4.0.3 und 4.1.2 angezeigt, obwohl ich in der Zwischenzeit auch die benötigte 2.2 mit dem SDK Manager geladen hatte.
  22. Meine App hat aber minSdkVersion="8", also brauche ich Google API 8 zum Bauen.
  23. Android SDK Pfad neu gesetzt und Eclipse neu gestartet.
  24. Jetzt werden alle im SDK Manager geladenen Android-Versionen korrekt angezeigt. Bingo!
  25. Normalerweise kenne ich den "Neustarten"-Trick ja nur von Windows ;)
  26. Und die Moral von der Geschicht': man soll nicht Sachen parallel machen, hier Nachladen von Android-APIs mit dem SDK Manager und schon mit dem Entwickeln in Eclipse anfangen.
Des weiteren habe ich meinen Code etwas umgestellt, um sowohl mit Geräten ohne als auch solchen mit SD-Karte umzugehen.

Alt:
        public static void setDataDir(Context c) {
                if (okStorage()) {
                        DataDir = c.getExternalFilesDir(null).toString();
                        logger("setdatadir.ext", DataDir);
                } else {
                        logger("setdatadir.error", "no external storage");
                }
        }

        public static boolean okStorage() {
                StorageState = Environment.getExternalStorageState();
                if (Environment.MEDIA_MOUNTED.equals(StorageState)) {
                        StorageAvailable = StorageWriteable = true;
                } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(StorageState)) {
                        StorageAvailable = true;
                        StorageWriteable = false;
                } else {
                        StorageAvailable = StorageWriteable = false;
                }
                return StorageWriteable;
        }


Neu:
        public static void setDataDir(Context c) {
                if (okExtStorage()) {
                        DataDir = c.getExternalFilesDir(null).toString();
                        logger("setdatadir.ext", DataDir);
                } else {
                        DataDir = c.getFilesDir().toString();
                        StorageAvailable = StorageWriteable = true;
                        logger("setdatadir.int", DataDir);
                }
        }

        public static boolean okStorage() {
                return (DataDir != null);
        }

        public static boolean okExtStorage() {
                StorageState = Environment.getExternalStorageState();
                if (Environment.MEDIA_MOUNTED.equals(StorageState)) {
                        StorageAvailable = StorageWriteable = true;
                } else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(StorageState)) {
                        StorageAvailable = true;
                        StorageWriteable = false;
                } else {
                        StorageAvailable = StorageWriteable = false;
                }
                return StorageWriteable;
        }