Wie Wikipedia funktioniert (Teil 2)

    Hallo habr
    Bild
    Sie gaben mir ein paar freie Tage bei meiner Hauptbeschäftigung und zusätzlich zu wichtigen persönlichen Angelegenheiten beschloss ich, sie der Fortsetzung einer Reihe von Beiträgen über Wikipedia zu widmen.

    Der erste Teil der Reihe wurde positiv aufgenommen, deshalb werde ich versuchen, den zweiten für das lokale Publikum noch interessanter zu machen: Heute wird er einigen technischen Aspekten des Projekts gewidmet.

    Wie Sie wissen, handelt es sich bei Wikipedia um ein freiwilliges Projekt, und dieses Prinzip wird nicht vollständig aufgehoben, selbst wenn es sich um die technische Unterstützung seiner Arbeit handelt. Grundsätzlich kann jeder Teilnehmer mit relativ geringem Aufwand einen einfachen Fehler auswählen und seinen Patch senden, ohne Gerrit zu benutzen .

    Eine weitaus häufigere Form der Teilnahme ist die Entwicklung zusätzlicher Tools, Einstellungen und Roboter für Wikipedia.

    Bots


    Um einige routinemäßige oder umfangreiche Aufgaben auszuführen, starten die Teilnehmer häufig Bots oder fragen andere, technisch versiertere Teilnehmer. MediaWiki bietet Zugriff auf die API , und für Konten mit dem Bot-Flag ist dieser Zugriff noch breiter (z. B. kann der Bot über die API nicht 500 Einträge, sondern jeweils 5000 anzeigen). Darüber hinaus können Sie mit dem Bot-Flag im Konto Änderungen vor anderen Benutzern verbergen, wodurch die Teilnehmer vor Tausenden geringfügiger Änderungen geschützt werden, die die Liste der zuletzt vorgenommenen Änderungen verstopfen würden.

    Pywikibot

    Das beliebteste der vorhandenen Frameworks ist pywikibot , das bereits eine große Anzahl von vorgefertigten Skripten enthält - zum Beispiel das Löschen von Seiten aus einer Liste, das Verschieben von Artikeln aus einer Kategorie in eine andere und vieles mehr. Ungefähr 100 Personen haben bereits an der Entwicklung dieses Frameworks teilgenommen , was die Verwendung angeht, ist dieses Skript auch äußerst einfach: Selbst ein gewöhnlicher Windows-Benutzer muss nur Python installieren, das Distributionskit herunterladen, den Benutzernamen und das Kennwort in der Konfiguration eingeben und eines der vorgefertigten Skripts ausführen.

    Früher bestand eine beliebte Aufgabe für Pywikibot darin, Links zwischen Artikeln in verschiedenen Sprachabschnitten zu arrangieren: Beispielsweise erstellt jemand einen Artikel über Rallye in der russischen Wikipedia , weiß aber, dass es eine ähnliche Rallye in der englischen Wikipedia gibtund setzt einen Link darauf. Dann kommt ein Bot, der sieht, dass es im englischen Abschnitt Links zu mehr als 20 anderen Sprachabschnitten gibt, und im russischen Abschnitt gibt es keine Links zu diesen: Daher fügt der Bot in jedem Abschnitt einen Link zu einem neuen russischen Artikel hinzu und aktualisiert im russischen Artikel die vollständige Liste ähnliche Interwiki-Links.

    Wie wir sehen können, ist die Arbeit wirklich nicht die interessanteste für eine Person, aber sehr umfangreich, und Dutzende von Bots waren daran beteiligt, wodurch Millionen von Bearbeitungen erzielt wurden. Zum Beispiel hat mein Bot jetzt mehr als 990.000 Änderungen, von denen 80 Prozent nur solche Änderungen für Interwiki sind. Vor nicht allzu langer Zeit wurde die Wikipedia-Engine überarbeitet, und solche Änderungen in den einzelnen Abschnitten sind nicht mehr erforderlich, aber die Anzahl der Routineaufgaben wird immer noch nicht reduziert.

    Kommen wir aber zurück zu Pywikibot - das Framework hat 2 Zweige:
    • Core ist ein neuer Zweig, in dem Code neu geschrieben wurde, strukturierter und effizienter geworden ist.
    • Compat ist eine alte Zeile, hat aber eine größere Auswahl an Skripten, funktioniert besser in MediaWiki-Projekten von Drittanbietern und ist für viele vertrauter.

    Fehler und Wünsche neuer Funktionen werden mit MediaWiki in einem einzigen Bug-Tracker gesammelt. Die Entwicklung läuft jetzt über Git / Gerrit , was es vereinfacht hat, neue Entwickler anzuziehen und neue Patches und deren Rezensionen hinzuzufügen. Zuvor wurde die Entwicklung über SVN abgewickelt. Um jedoch die Ressourcen mit MediaWiki zu vereinheitlichen und den Entwicklerkreis zu erweitern, wurde beschlossen, zu Git / Gerrit zu wechseln: Es gibt sogar ein Thema über die Vorteile von Git gegenüber SVN bei Habr .

    Ich werde nicht alle bereits vorhandenen Funktionen des Frameworks beschreiben. Diejenigen, die dies wünschen, können das Repository durchgehen und sehen: Ich kann nur sagen, dass es aktiv gefüllt ist und vorhandene Skripte nur eine minimale Installation erfordern, um in einem Sprachabschnitt ausgeführt zu werden.

    AutoWikiBrowser

    Wenn der oben beschriebene Bot in der Konsole funktioniert, ist AWB (AutoWikiBrowser) ein benutzerfreundlicheres Tool. AWB verfügt über eine vollständige Benutzeroberfläche, automatische Updates und funktioniert nur unter Windows (inoffiziell - und unter Wine). Typische AWB-Funktionen: Ersetzen von Text durch reguläre Ausdrücke, andere Änderungen an einer bestimmten Artikelliste. AWB kann rekursiv durch Wikipedia-Kategorien gehen , Listen vergleichen, eindeutige Elemente oder Schnittpunkte hervorheben und sogar Wikipedia-Dumps verarbeiten . Gleichzeitig gibt es auch Einschränkungen für die Arbeit mit Konten ohne Administrator- oder Bot-Flag. Zusammengestellte Listen für diese Teilnehmer sind auf 25.000 Zeilen begrenzt. Wenn Sie eine Bot-Flagge haben, werden die Einschränkungen vollständig entfernt
    Awbscreenshot
    beim Laden eines speziellen Plugins . Wichtiger Haftungsausschluss: Mit AWB können Sie möglicherweise schnell eine Reihe nicht konstruktiver Änderungen vornehmen, einschließlich vandalistischer. Die Verwendung ist dann technisch auf von Administratoren genehmigte Benutzer beschränkt. Wenn der Benutzername auf dieser Seite nicht angegeben ist, verweigert AWB die Arbeit.

    Im Allgemeinen müssen Sie beim Speichern jeder Änderung manuell auf die Schaltfläche "Speichern" klicken. Das automatische Speichern ist nur möglich, wenn AWB unter einem Konto mit einem Bot-Flag gestartet wird. Daher ist AWB für wirklich große Aufgaben schwierig zu verwenden, aber für kleine Aufgaben ist es sehr praktisch, da Sie bestimmte Aktionen automatisieren und schnell umsetzen können, ohne die Teilnehmer mit fortgeschritteneren Bots kontaktieren zu müssen (siehe oben). Persönlich verwende ich AWB häufig speziell zum Erstellen von Listen und starte dann schnell pywikibot mit der erforderlichen Aufgabe: pywikibot verfügt auch über einen speziellen Seitengenerator, der all dies ermöglicht, aber für mich ist es visueller und einfacher, alles über ein Programm mit einer GUI zu erledigen .

    AWB-Quellcode geöffnetDas Programm ist in C # geschrieben und wird von einem begrenzten Kreis von Entwicklern unterstützt. Beim Start prüft das Programm selbst auf Updates und installiert diese, die Distribution ist auch auf SourceForge angelegt . Bei kritischen Fehlern im laufenden Betrieb erstellt AWB einen Fehlerbericht und gibt ihn an die Entwickler weiter .

    Andere

    Es gibt Bots, die auf Perl , .NET , JAVA ausgeführt werden , aber sie werden oft von einzelnen Enthusiasten unterstützt und sind nicht weit verbreitet. Persönlich habe ich Wikis auch einmal in PHP ausgeführt, aber die massive Unterstützung von pywikibot, dem aktiven Bug-Tracker und der Reaktionsfähigkeit einer großen Anzahl von Entwicklern hat mich dazu veranlasst, mit diesem Bot zu arbeiten, sodass ich Ihnen keine detaillierten Informationen über andere Frameworks geben kann :)

    Toolserver


    Der obige Abschnitt befasste sich mit Skripten und Bots, die meist vom Computer des Teilnehmers oder von seinem Server aus gestartet werden. Darüber hinaus besteht jedoch die Möglichkeit, Skripte von Websites von Wikimedia-Organisationen aus auszuführen: Zuvor gab es einen Tulserver, der die deutsche Wikimedia-Niederlassung unterstützte, seit dem 30. Juni 2014 war er deaktiviert, da das Labs-System erstellt wurde, aber als Erstes. Die Geschichte von Tulserver begann im Jahr 2005, als Sun Microsystems einen V40z-Server (2 * Opteron 848, 2,2 GHz, 8 GB RAM, 6 * 146 GB Festplatte, 12 * 400 GB externes RAID) für die Verwendung auf der Wikimedia-Konferenz in Frankfurt spendete. Nach der Konferenz wurde er von einem der Teilnehmer der deutschen Abteilung mit nach Hause genommen und machte aus ihm einen Kaffeetisch; Nach einiger Zeit beschlossen sie, es in Amsterdam auf der Basis von Kennisnet zu installieren
    Kennisnet Wikipedia serverroom.jpg
    Dort wurden fünfzig Wikimedia Foundation-Server installiert.

    Danach wurden verschiedene Skripte und Tools (Revisionszähler, verschiedene Artikelanalysatoren, Tools zum Herunterladen von Dateien usw.) auf Tulserver gestartet, und die Kapazitäten von Tulserver nahmen zu: 17 Server waren zum Zeitpunkt des Herunterfahrens in Betrieb , mehr als 3 Millionen Anrufe bei Tulserver wurden registriert Tag erreichte der Verkehr 40 Mb / s. Jeder der Server verfügte über 24 bis 64 GB RAM. Hauptsächlich arbeiteten sie unter Solaris 10 (und wurden schrittweise auf Linux umgestellt). Der gesamte Festplattenspeicher betrug 8 TB.

    Was waren die Hauptvorteile von Tulserver als Site?
    • Replikation mit Wikimedia Foundation-Servern - weitere Informationen finden Sie weiter unten.
    • Offenheit - mit vernünftigen Zielen und Fähigkeiten war es einfach, einen Account zu bekommen .
    • Genug Code-Nähe: Wenn für die neuen Labs Code unter einer offenen Lizenz erforderlich ist und die Dateien selbst größtenteils für alle Labs-Teilnehmer sichtbar sind (mit Ausnahme von Passwörtern, Anmeldungen usw.), war der Tulserver in dieser Hinsicht viel demokratischer.

    Es gab auch Minuspunkte:
    • das system hat im "as is" modus gearbeitet, weil Die Finanzierung war begrenzt, und die Möglichkeiten der Administratoren, das System zu unterstützen, waren begrenzt: Viele Systemfehler wurden jahrelang nicht behoben.
    • Im Falle der Inaktivität eines Entwicklers verschwanden sein Code und seine Werke, und Wikipedia verlor häufig die Tools, mit denen es lange Zeit gearbeitet hatte. Aufgrund der Offenheit und Zugänglichkeit des Codes kann in Labs jedes Projekt beginnen, einen anderen Entwickler zu unterstützen.
    • Irgendwann wurde der Verbrauch von Systemressourcen stark eingeschränkt, was dazu führte, dass einige nützliche, aber teure Tools abgeschaltet wurden.

    Kommen wir aber zurück zum Hauptplus - der Replikation: Ohne sie würde sich der Tulserver nicht von einem normalen Hosting unterscheiden, bei dem Sie Ihre Prozesse starten können. Bei der Replikation gab es auf ToolServer immer Wikipedia-Datenbanken, sodass die Tools direkt mit der Datenbank arbeiten konnten und keine großen API-Anfragen stellten, manchmal irrelevante Dumps verarbeiteten usw.

    Ein Beispiel für ein Replikationsschema ist in der folgenden Abbildung dargestellt:


    Tampa im Diagramm - Dies ist die Hauptdatenbank des Fonds mit Sitz in den USA. Cluster s1-s4 sind für die Datenbank verantwortlich: s1 ist beispielsweise die englische Wikipedia, s2 sind einige große Abschnitte usw. Daten aus Tampa werden in die Tulserver-Datenbank in Amsterdam repliziert, und bereits dort greifen Tulserver-Benutzer und ihre Tools auf sie zu. Natürlich gab es immer eine Art Replikationsverzögerung, und aufgrund der Verwendung verschiedener Cluster konnte es vorkommen, dass die Verzögerung für die Verarbeitung von Daten aus der englischen Wikipedia 1 Minute und für die russische Wikipedia 2-3 Tage betrug. Beispielsweise betrug die Verzögerung am 21. Juni (kurz vor dem Herunterfahren) bis zu 28 Sekunden .

    Diese Verfügbarkeit relevanter Daten war der Hauptvorteil von Tulserver: Es war möglich, online praktisch zu analysieren, welche Dateien nicht verwendet werden, wie viele Änderungen und Aktionen ein Teilnehmer an allen Foundation-Projekten vorgenommen hat und viele andere Informationen, die die Wikipedia-Engine nicht direkt bereitstellt.

    Fazit


    Die Unterstützung von Tulserver war eine schwere Belastung für die deutsche Niederlassung, das System hatte bestimmte Einschränkungen, und ab dem 1. Juli wurde Tulserver vollständig durch das neue Labs-Projekt ersetzt, das vollständig von der Wikimedia Foundation selbst unterstützt wird. Dies ist ein neues großes Projekt, darüber werde ich im nächsten Beitrag schreiben, aber ich kann die Juni-Statistik von Labs for seed veröffentlichen :)
    • 213 Projekte arbeiten
    • 3 356 Benutzer sind im System registriert
    • Verwendet 1 714 312 MB RAM
    • Es werden 19.045 GB Festplattenspeicher verwendet

    Bis bald

    Jetzt auch beliebt: