Design copy-paste

www.codekicker.de
Irgendwann Anfang Februar habe ich von Marco Parrillo (Neue Mediengesellschaft Ulm mbH) eine Empfehlung für: “codekicker.de – Die deutschsprachige Entwickler-Community | Machen Sie mit!” bekommen. Ich finde so was immer super und habe die E-Mail sofort an meinen Kollegen weitergeleitet (die Empfehlung kam ja von einer seriösen Gesellschaft).

Ich hatte in der Arbeit keine Zeit, also habe ich die Seite erst am Abend geöffnet :
www.stackoverflow.com

Oh, dachte ich, super: eine deutsche Tochter von stackoverflow!

Auf den ersten Blick konnte man das nirgendwo sehen, also habe ich alles durchsucht: Impressum, Kontakte, sonstige Infoseiten, aber gar nichts… Danach habe ich einfach die Suchfunktion benutzt, aber das einzige Ergebnis eine Frage zu einem Stackoverflow-Exception war.

Durch googeln bin ich fündig geworden: die Seite ist gar keine Tochterseite von stackoverflow, sie wurde einfach nur kopiert! Auf die Suchbegriffe stackoverflow + codekicker habe ich folgende Diskussion bei stackoverflow gefunden:

In germany a Stackoverflow-like site was created, that is very, very similar to Stackoverflow in the mechanics of reputation and badges etc. That is so similar, that I think they could use the same software. Did you sell it to them? Or are they using a very similar clone-software? The Community I have in mind is Codekicker.

Das war ernüchternd (und gleichzeitig komisch, da es offensichtlich eine Diskussion auf codekicker über das Thema gibt, aber irgendwie doch nicht gefunden wird).
Als ich dann die Antworten der Betreiber der Seite gelesen habe, wurde ich richtig enttäuscht:

Vielen Dank für deine Anteilnahme an unserem Projekt 😉 Du darfst uns gerne auf unserer Feedbackseite gründlich deine Meinung sagen. Per Mail oder Telefon bin ich heute den ganzen Tag zu erreichen.

Gruß,
Marvin

Irre ich mich, oder waren die 2 Studenten sogar stolz auf ihre copy-paste Fähigkeiten? Und kann es wirklich sein, dass alle das ok finden und keine daran was auszusetzen hat? Ich meine, sogar die Logos sind ganz ähnlich. Und auch, wenn stackoverflow den Code nicht patentiert hat, jemand hat sich ja richtig viel Mühe gemacht, das Design auszudenken, angefangen mit den Farben bis zum Gesamtbild.

Die Antworten variierten zwischen “das macht ja nichts, Hauptsache ist es auf Deutsch” und “wenn es dir nicht passt, dann nutze es nicht!” – was für mich erst Recht keine Antwort ist.

Ich überlege nun seit ein paar Wochen, ob ich das hier ansprechen soll, aber ich möchte eure Meinung wissen:

  1. Bin ich wirklich die einzige, die diese Tatsachen stören? Wäre es wirklich zu viel gewesen, irgendwo auf der Seite ein Dankeschön an stackoverflow auszugeben?
  2. Auch wenn das von 2 Studenten OK wäre, ist es auch in Ordnung, dass nun mehrere renommierte Zeitungen ihren guten Namen dazu geben?
  3. Ist es dann auch in Ordnung, dass diese Zeitungen mit einer kopierten Seite Geld machen wollen – da sie ja kräftig Werbung dafür machen? Und diesen Satz habe ich gar nicht verstanden: “mit codekicker.de ist am 1. Februar 2011 die neue deutschsprachige Community-Plattform für Entwickler gestartet”? Die Seite gibt es ja schon seit Juli 2009.

Eins ist sicher: ich empfinde großen Respekt gegenüber Jeff und Joel und die anderen von stackoverflow und ich finde, sie leisten großartige Arbeit (auch, wenn sie dies sicher nicht umsonst tun). Genauso einen Respekt habe hatte ich auch vor den Redakteuren dieser Zeitungen. Durch sie aber – da ich ihre Empfehlung weitergeleitet habe – habe ich nun auch eine Sache unterstützt, deren Betreiber es meiner Meinung nach nicht verdient haben. Mein Fehler, wird so bald sicher nicht wieder passieren.

File provided for Reference Use Only By Microsoft Corporation (c) 2007

Seit ein paar Wochen, wenn ich mit Resharper zu der Implementierung von manchen Microsoft-Funktionen navigieren will, bekomme ich die ganze dll heruntergeladen und danach den ganzen Code zu sehen:

// ==++==
//   Copyright (c)  Microsoft Corporation.  All rights reserved.
// ==--==
namespace System.Globalization {
    using System.Security.Permissions; 
    using System.Runtime.Serialization; 
    using System.Text;
    using System; 
    //
    // Property             Default Description
    // PositiveSign           '+'   Character used to indicate positive values.
    // NegativeSign           '-'   Character used to indicate negative values. 
    // NumberDecimalSeparator '.'   The character used as the decimal separator.
    // NumberGroupSeparator   ','   The character used to separate groups of 
    //                              digits to the left of the decimal point. 
    // NumberDecimalDigits    2     The default number of decimal places.
    // NumberGroupSizes       3     The number of digits in each group to the 
    //                              left of the decimal point.
    // NaNSymbol             "NaN"  The string used to represent NaN values.
    // PositiveInfinitySymbol"Infinity" The string used to represent positive
    //                              infinities. 
    // NegativeInfinitySymbol"-Infinity" The string used to represent negative
    //                              infinities. 
    // Property                  Default  Description
    // CurrencyDecimalSeparator  '.'      The character used as the decimal
    //                                    separator.
    // CurrencyGroupSeparator    ','      The character used to separate groups 
    //                                    of digits to the left of the decimal
    //                                    point. 
    // CurrencyDecimalDigits     2        The default number of decimal places. 
    // CurrencyGroupSizes        3        The number of digits in each group to
    //                                    the left of the decimal point. 
    // CurrencyPositivePattern   0        The format of positive values.
    // CurrencyNegativePattern   0        The format of negative values.
    // CurrencySymbol            "$"      String used as local monetary symbol.
    // 

    [Serializable] 
    [System.Runtime.InteropServices.ComVisible(true)] 
    sealed public class NumberFormatInfo : ICloneable, IFormatProvider
    { 

        // invariantInfo is constant irrespective of your current culture.

        private static NumberFormatInfo invariantInfo;
...

Das ist wunderbar, es ist großartig zu sehen, wie die Klassen Random or DateTime aufgebaut sind. Obwohl ich keine Ahnung habe, warum das passiert… Ich hoffe allerdings, dass es kein Bug ist, und ich weiterhin den Code statt irgendeine Dokumentation sehen werde, auch wenn komischerweise am Ende der meisten Klassen der Titel dieses Artikels steht: File provided for Reference Use Only By Microsoft Corporation (c) 2007 😉

Das alles ist cool, aber noch nicht wirklich ein Grund für einen Blogeintrag. Den folgenden Kommentar wollte ich euch aber nicht vorenthalten:

        // READTHIS READTHIS READTHIS 

        // This class has an exact mapping onto a native structure defined in COMNumber.cpp

        // DO NOT UPDATE THIS WITHOUT UPDATING THAT STRUCTURE. IF YOU ADD BOOL, ADD THEM AT THE END. 

        // ALSO MAKE SURE TO UPDATE mscorlib.h in the VM directory to check field offsets. 

        // READTHIS READTHIS READTHIS

        internal int[]  numberGroupSizes = new int[] {3};
...
        internal bool m_useUserOverride=false;    // NEVER USED, DO NOT USE THIS! (Serialized in Everett)
...

😆

Recht auf benutzerfreundliche Software

Bei den letzten DNUGKöln-Treffen habe ich einen verblüffenden Satz gehört:

Jeder Bürger hat ein streitbares Recht auf benutzerfrendliche Software.

Die Grundlage wird durch die Bildschirmarbeitsverordnung (BildschirmarbV, Dezember 1996) geliefert. Die Liste der Anforderungen an den Bildschirmarbeitsplätzen beinhaltet folegende Punkte:

21.
Bei Entwicklung, Auswahl, Erwerb und Änderung von Software sowie bei der Gestaltung der Tätigkeit an Bildschirmgeräten hat der Arbeitgeber den folgenden Grundsätzen insbesondere im Hinblick auf die Benutzerfreundlichkeit Rechnung zu tragen:
21.1
Die Software muß an die auszuführende Aufgabe angepaßt sein.
21.2
Die Systeme müssen den Benutzern Angaben über die jeweiligen Dialogabläufe unmittelbar oder auf Verlangen machen.
21.3
Die Systeme müssen den Benutzern die Beeinflussung der jeweiligen Dialogabläufe ermöglichen sowie eventuelle Fehler bei der Handhabung beschreiben und deren Beseitigung mit begrenztem Arbeitsaufwand erlauben.
21.4
Die Software muß entsprechend den Kenntnissen und Erfahrungen der Benutzer im Hinblick auf die auszuführende Aufgabe angepaßt werden können.

Das erste, was mir – und ich bin sicher, nicht nur mir – in Sinn gekommen ist, war: wie zum Teufel konnte Windows dieser Verordnung entsprechen?? Ich denke dabei vor allem an Punkt 21.3 …

Am Ende des vorher erwähnten Satzes, gab es allerdings noch eine Bemerkung: “es weißt nur keiner“.

Also jetzt schon.

Off Topic: In dieser Liste gibt es noch einen letzten Punkt:

22.
Ohne Wissen der Benutzer darf keine Vorrichtung zur qualitativen oder quantitativen Kontrolle verwendet werden.

Und jetzt frage ich mich, ob all die Konzerne (Deutsche Bahn, Telekom und wie die alle heißen), die ihren Mitarbeiter ausgespitzelt haben, wirklich dieser Anforderung entsprechen…