Drafts-Rezepte IX: Serverstatus bei Github

Da auch den guten Leuten von github mal die Server wegbrechen, gibt es dort eine kleine API. Es ist nur eine klitzekleine Schnittstelle, aber sie wirft raus, wie es gerade und in letzter Zeit um die Erreichbarkeit von github steht. Also basteln wir uns doch mal ein kleines Script, mit dem wir die Daten abrufen können.

from console import alert
from json import loads
from sys import exit
from urllib import urlopen, quote
import webbrowser

def error_dialog(title, message):
    '''A diaolog box for error messages.'''
    try:
        alert(title, message)
    except KeyboardInterrupt:
        pass
    webbrowser.open('drafts://')
    exit(message)

def formatdate(date):
    '''bring the date into shape'''
    return date[:-1].replace('T', ' ')

def request(method):
    '''a request to github's status API.'''
    api_url_base = 'https://status.github.com/api/{method}'
    try:
        response = urlopen(api_url_base.format(method=method))
    except IOError:
        error_dialog('Connection Error', 'Unable to perform request.')
    if response.getcode() != 200:
        error_dialog('Error', 'Status code: {0} - Message: {1}'.format(response.getcode(), response.read()))
    return loads(response.read())

def github_status():
    '''get information and admin messages for github servers.'''
    status = request('status.json')
    messages = request('messages.json')
    output = '''
GITHUB STATUS
================
{date}: {status}

Last messages:
    '''.format(date=formatdate(status['last_updated']),
               status=status['status'])
    for item in messages:
        output += '\n{date}: {status}\n{comment}\n'.format(date=formatdate(item['created_on']),
                                                             status=item['status'],
                                                             comment=item['body'])
    output += '\nFor further information: https://status.github.com/'
    webbrowser.open('drafts://x-callback-url/create?text={0}'.format(quote(output)))

if __name__ == '__main__':
    github_status()

Gist

Die Action in Drafts ist auch keine Neuerung mehr.

pythonista://githubstatus?action=run

Import-Link

Seitdem Drafts auch Actions ausführt, wenn ein Draft keine Zeichen enthält, muss auch nur die Action gefeuert werden. Daraufhin rödelt Pythonista etwas rum, wirft dann aber das Ergebnis als Text in einen neuen Draft aus. Darin stehen dann in knapper Form die Informationen.

Gistacular: Ein mobiles Zuhause für Gist

Was für eine prächtige Ergänzung das kleine Gistacular zu iOctocat ist. Zwar kann ich Gists auch dort ansehen, aber nicht bearbeiten. Gistacular schließt diese Lücke auf einfache Weise.

Die App ist ein stromlinienförmiger Client für Gists. Alles ist übersichtlich angeordnet. Ich kann Favoriten verwalten, Skripte anderer Leute durchforsten, neben den eigenen Skripten natürlich. Der Texteditor ist spartanisch, aber ausreichend. Aber Gistacular zeigt in der Vorschau auch Syntax-Highlighting.

Ich sehe langsam, dass ich meine Desktoprechner nur noch für wirklich umfassende Schreibarbeiten oder eben Spiele brauchen werde. Alles andere kann ich immer besser auch von mobilen Geräten erledigen.

Übrigens, der Quellcode von Gistacular ist freundlicherweise auch auf Github.

Bilder: iTunes

Soziale Werbung – und warum wir sie nicht brauchen

Mit der Tür ins Haus zu fallen ist keine schlechte Eigenschaft, um eine Diskussion anzustoßen. In diesem Sinne ist mspro die Expertise im ‚Auf-Türen-durch-dein-mentales-Wohnzimmer-reiten‘ überhaupt nicht abzusprechen. Im Falle von Werbung ist sozial führt ihn die polemische Ausrichtung seines Textes, die ich sonst schätze, aber in den roten Bereich der fatalen Komplexitätsreduktion. Die Tür, ich bleibe mal bei dem Bild, ist schon im mentalen Flur so abgeschmirgelt, dass sie Papier zu nennen noch reichlich optimistisch wäre. Seine Annahme ist nicht falsch, für meine Begriffe aber auch nicht ausreichend.

Die Sache mit der Umverteilung

Seine Argumentation klingt überzeugend einfach, denn Werbung sei ein Mittel der Quersubventionierung zu Gunsten der Ärmeren Gesellschaftsteile. Nehmet den Reichen, gebet den Armen:

Denn das, was erreicht werden soll ist schließlich, dass der Empfänger der Werbung sein Geld für die beworbenen Produkte ausgibt. Je mehr Geld er hat, desto mehr wert ist seine Aufmerksamkeit. Daraus folgt: die Daten und die Aufmerksamkeit der Besserverdienenden quersubventionieren zu einem nicht unwesentlichen teil meinen Medienkonsum. Und den von vielen anderen Leuten mit wenig Geld.

Das klingt einleuchtend. So funktionieren weite Teile der sozialen Netzwerke im Web. Es ist auch offenkundig eine Umverteilung, das ist kaum zu bestreiten. Gegen die Umverteilung von oben nach unten malt er das Bild einer verhärmten Elite, die sich mit Geld exklusive Clubs hält. Der vermeintliche Plebs muss draußen bleiben. Dagegen wirken werbefinanzierte Umverteilungsnetzwerke geradezu egalitär. Doch schon sein Beispiel zeigt, dass diese Umverteilung nicht alternativlos ist. Er spricht app.net an, das einstmals nur durch eine Bezahlschranke erreichbar war, doch ist dieser Dienst mittlerweile geeignet, sein Argument zu entkräften. Seit Anfang des Jahres gibt es – im Funktionsumfang eingeschränkte – kostenlose Accounts. Was geschieht da? Umverteilung.

Dieses Mal aber nicht über den Umweg der Werbung. Die zahlenden Nutzerinnen und Nutzer subventionieren die kostenlosen Accounts. Dieses Freemium-Modell ist so neu auch nicht mehr. Ein Paradebeispiel ist github, wo zahlungskräftige Nutzerinnen und Nutzer sich private Repos erkaufen, damit aber die Open-Source-Öffentlichkeit finanzieren. Denn solange dort Code frei zugänglich gemacht wird, ist die Nutzung kostenlos.  So alternativlos ist die von mspro angenommene Umverteilung der Werbung also nicht. Ähnliche Umverteilungsmechanismen sind etabliert, erfolgreich und haben alle Vorteile der werbefinanzierten Umverteilung. Heben die Nachteile der Werbung aber auf.

Ist Umverteilung durch Werbung sozial?

Werbung hat eine soziale Funktion innerhalb heutiger ökonomischer Kontexte, ihre gesellschaftliche Funktion macht sie aber allein noch nicht gesellschaftsdienlich. Diese Ambivalenz des Begriffs des Sozialen ist weniger problematisch, denn es gibt keinen Grund, warum Werbung nicht sozial im Sinne von gesellschaftsdienlich sein könnte. mspro zeigt klar, dass sie eine gesellschaftlich wünschenswerte, sogar globale Umverteilung ermöglichen kann. Die Frage ist aber, ob Werbung hierfür ein gutes Mittel und daher Werbefinanzierung wünschenswert ist?

Aus meiner Sicht sprechen viele Argumente gegen werbefinanzierte Umverteilung, die nicht einfach dadurch geschwächt werden, dass mspro sie zur Verfremdung summiert:

Werbung ist nervig, für Werbung werden Daten gesammelt, Werber sind sowieso doof und überhaupt ist Werbung mindestens eine der schlimmsten Ausformungen des Kapitalismus. Einself.

So einfach ist es allerdings nicht, Werbekritik zu widerlegen. Die Datenschutzaspekte lasse ich dabei mal außen vor, mir geht es vorrangig um die Aspekte der Kommunikation. Damit meine ich Kommunikation wie die Sprachwissenschaft beispielsweise sie annimmt, nicht den Euphemismus, mit dem sich Werbung parasitär an die tatsächliche Kommunikation angeschlichen hat. Aus kommunikativer Sicht hat die Werbung erhebliche Nachteile:

  • Je umfangreicher die Werbung, desto geringer die Aufmerksamkeit für tatsächliche soziale Interaktion. Werbung entwickelt eine perfide kommunikative Zentrifugalkraft, die weit über das hinausgeht, was Mainstream-Kommunikation genannt werden kann. Sie bindet auch finanzielle Mittel in Werbeetats und zwingt ihre Bedingungen der Kommunikation auch anderen sozialen Institutionen auf, die nicht die finanzielle Ausstattung haben, gleichberechtigt mit ihr um Aufmerksamkeit konkurrieren zu können.
  • Werbung will keine gleichberechtigte Kommunikation. Sie will ihre Botschaft unwidersprochen etablieren. Wird ihre kommunikative Vormachtstellung hinterfragt, kritisiert oder attackiert, wehrt sie sich mit überbordenden Kräften. Werbung ist eine übermächtige Kommunikationsteilnehmerin. Und sie duldet keinen Widerspruch.
  • Werbung manifestiert mit ihrer Kommunikationskraft soziale Rollen und Muster, die nicht wünschenswert sein können. Gegen die negativen Folgen sozialer Uniformierung, Normierung, Diskreditierung und Diskriminierung durch Werbung sind ihre kommunikativen Vorzüge marginal.
  • Werbung macht abhängig von den Meinungen und Positionen Dritter. Werbung hat eine eigene Agenda, die nicht nicht zwingend sozial im gesellschaftsdienlichen Sinn sein muss. Sie kann diesem Sinn sogar widersprechen. Dennoch wird bei werbefinanzierter Umverteilung die inhaltliche Kontrolle indirekt an die Werbeindustrie abgegeben. Das heißt nicht, dass dies in alternativen Umverteilungsmechanismen nicht der Fall wäre, dass Eliten Inhalte kontrollieren, aber es ist ein wesentlicher Unterschied erkennbar. In Freemium-Umverteilungen entscheiden sich zahlende Nutzerinnen und Nutzer beispielsweise bewusst für die Netzwerke, weil sie ihren sozialen Wünschen entsprechen. Ihr Antrieb ist also die soziale Interaktion, für die sie gerne zahlen und subventionieren. Werbung zahlt dagegen nicht für soziale Interaktion, sondern für Eingriffe in soziale Interaktion.
  • Werbung, das scheint mspro einzugestehen, interessiert sich nur mittelbar für die Interessen, Meinungen und Gedanken der ärmeren sozialen Schichten, nämlich nur, solange sie für die reicheren Schichten als Projektionsfläche sozialer Interaktion dienen. Gerade wegen der von mspro angenommenen egalitären Motive der Umverteilung, halte ich die mittelbare Abhängigkeit weiter Teile der globalen Gesellschaft in Diskursen für überaus problematisch.

Aus meiner Sicht reichen allein die kommunikativen Folgen von werbegestützter Umverteilung, um nach Alternativen zu ihr zu suchen. Ich will noch kurz darauf verweisen, dass es durchaus auch noch kritische Punkte gibt, die zu den Rahmenbedingungen der Ungleichverteilung von finanziellen Mitteln heutzutage zu sagen wären, aber das würde den Rahmen sprengen.

Werbung kann sozial sein, ist aber nicht erstrebenswert

Für mich ergibt sich ein einfacher Schluss. Werbung kann sozial sein, muss es aber nicht. Und sie ist es in den meisten Fällen auch nicht.  Ihre intrinsischen kommunikativen Mechanismen widersprechen nicht grundsätzlich einer sozialen, also gesellschaftsdienlichen Funktion, dauerhaft allerdings gerät sie in Konflikt mit diskurstheoretisch notwendigen Bedingungen. Allein deshalb reicht mspros Annahme nicht aus, um werbefinanzierte Umverteilung gutheißen zu können. Alternative Modelle, auch wenn sie noch lange nicht problemlos sind, verfügen nicht über das störende, übergriffige Potenzial, soziale Interaktion und Kommunikation zu beeinflussen, behindern oder verhindern zu wollen. Werbung kann also durchaus, da hat mspro recht, sozial sein. Aber das ist nicht die eigentliche Frage. Fragt lieber: Wird sie jemals sozial genug sein?

Bundesgit

Schöner kleiner Ansatz, Open Data voranzutreiben. Im Bundesgit finden sich aktuelle Fassungen von Gesetzen. Da alles auf der Versionsverwaltung Git aufsetzt, wird daraus implizit eine Forderung nach transparenter Gesetzgebung. Potenziell, abhängig von der Genauigkeit der Abbildung der Gesetze im Repositorium, ließen sich aber die Änderungen über die Zeit verfolgen. In Gänze kann ich dies nicht abschätzen, setzt das Projekt doch bei einigen blinden Flecken in meiner Bildung an. Namentlich sind dies Git selbst und Python.

Mit den in Python geschriebenen ScraperTools, die Initiator Stefan Wehrmeyer in einem weiteren Repositorium hinterlegt hat, lässt sich aber bestimmt schon etwas anfangen. Die Tools grasen etwa im XML-Format die Gesetzestexte bei Gesetze im Internet ab. Aus dem XML kann dann das im Bundesgit verwendete Markdown gemacht werden. Auch schön, dass dort schon Tools liegen, um Inhaltsverzeichnisse des Bundesanzeigers und Bundesgesetzblattes auszulesen. Bei Null muss also niemand anfangen.

Gerade auch die Idee der Versionskontrolle und des dann anschließenden Bugtrackings in deutschen Gesetzen ist allzu verlockend. Letztlich baut eine ganze junge Partei auch darauf auf. Das Bundesgit zeigt, wie wenig Aufwand nötig ist, um den Anfang mit bestehenden Gesetzen und Softwarelösungen zu machen. Für mich ist es ein willkommener Anlass, mich endlich mal mit Git und mehr mit Python zu beschäftigen.

[via]