Wikipedia Diskussion:Technik/Skin/Gadgets

Aktive Diskussionen
Auf dieser Diskussionsseite
  • können neue Gadgets vorgeschlagen werden
  • kann über Gadgets diskutiert werden, die keine eigene Dokumentationsseite haben
  • können Inhalte und Gestaltungsfragen der Vorderseite diskutiert werden
  • können Betrachtungen über Gadget-Management angestellt werden.


Qualitätsstandards für GadgetsBearbeiten

Am liebsten wären mir folgende Qualitätsstandards für Gadgets:


Damit ein Skript als Gadget installiert wird, müssen folgende Dinge erfüllt sein:

  • Das Skript hat einen aktiven Maintainer, der es in seinem Benutzernamensraum pflegt, auf Fehlermeldungen in angemessener Zeit reagiert und bereit ist, das Skript gegebenenfalls den folgenden Punkten entsprechend anzupassen.
  • Das Skript enthält keine bekannten schwerwiegenden Fehler, insbesondere keine Sicherheitslücken, und nur wenige kleine Fehler, an deren Behebung gearbeitet wird.
  • Das Skript verwendet keine Funktionen, die als deprecated markiert sind, der Quellcode entspricht Standards, wie sie etwa durch jshint festgelegt werden.
  • Soweit anwendbar besteht ein Mechanismus zur Internationalisierung, Lokalisierungen sind für Deutsch und alle seine Varianten (Schweizer Deutsch, österreichisches Deutsch, Sie-Form) vorhanden.
  • Das Skript ist mit allen Skins und allen gängigen Browsern kompatibel, Ausnahmen sind begründet, dokumentiert und werden automatisch abgefangen.
  • Es erfolgte ein Review durch einen erfahrenen Benutzer, der dabei die obigen Punkte überprüfte.
  • Das Skript erfordert keine zusätzliche Konfiguration durch den Benutzer.
  • Das Skript besitzt eine Dokumentationsseite, die alle Funktionen erläutert, einen Ansprechpartner für das Skript nennt (besonders für Meldung von Sicherheitslücken, die nicht öffentlich erfolgen soll), und deren Diskussionsseite vom Maintainer auf Fehlermeldungen hin beobachtet wird.
  • Die Funktion des Skripts ist so allgemein, dass es viele Benutzer gibt, die es nutzen wollen.

Sobald ein Skript diese Punkte erfüllt, kann es von jedem Administrator als vorläufiges Gadget eingerichtet werden. Der Quellcode wird dabei kopiert, also nicht einfach per importScript o. Ä. eingebunden. Nach ein bis zwei Monaten werden die Punkte erneut überprüft (insbesondere die tatsächliche Zahl der Nutzer) und das Skript entsprechend entweder wieder entfernt oder in eine der dauerhaften Rubriken verschoben.

Ist der Maintainer des Skripts nicht mehr aktiv oder kann oder will dieser gemeldete Fehler nicht in angemessener Zeit beheben und findet sich kein Nachfolger, so wird das Skript in eine Rubrik Gadgets ohne Maintainer verschoben. Treten Fehler bei einem Skript auf, das länger als einen Monat in dieser Rubrik steht, so wird es als Gadget ganz entfernt.

Sollen Änderungen an einem Gadget vorgenommen werden, müssen diese zunächst von einem erfahrenen Benutzer reviewt werden, außer der betroffene Teil ist durch Softwaretests abgedeckt, die weiterhin bestanden werden.

Alte Gadgets, die vor der Einführung dieses Verfahrens bestanden, und die den neuen Ansprüchen nicht genügen werden in eigene Rubrik Hic sunt dracones verschoben, damit sich die jahrelangen Benutzer nicht darüber beschweren, dass ihr Lieblingsgadget plötzlich verschwunden ist, von einer Verwendung wird aber abgeraten.

Gadgets aus anderen Wikis mit einem vergleichbaren Qualitätssicherungsprozess können direkt per mw.loader.load geladen werden.


Das würde die Pflege wesentlich erleichtern, man hätte nicht so Aktionen wie neulich mit contribs-range, etc. (Solche Standards werden ohnehin nicht eingeführt, aber den Wunsch äußern wollte ich einfach mal.) --Schnark 11:07, 6. Jun. 2014 (CEST)


Hoppla, gestern erst gesehen, irgendwie durch die Beo gerutscht.
  • Du hast grundsätzlich völlig recht.
  • Einen Punkt hätte ich noch zur Ergänzung der Liste:
    • Eine Versionsbezeichnung hat mindestens im Kommentar, besser noch zur Laufzeit auslesbar im Code vermerkt zu sein.
      • Bei dem ganzen C&P zwischen echter deWP, enwP, Beta, privatem Wiki und Festplatte ist es völlig ungenügend, sich auf die Versionsgeschichte nur in der deWP-Seite zu verlassen und danach die Versionsfolge nachvollziehen zu wollen.
      • Bei diesem contribsdings hatte ich nur auf die Versionsbezeichnung geguckt und eine englische gesehen. Die Leutchen, die dadrin rumgepfriemelt hatten, waren schlicht zu träge, eine einzige Kommentarzeile zu ergänzen, dass sie an dewiki anpassen, und was man jetzt eigentlich für eine Version vor sich hätte. Ich hatte mir das Dings natürlich nicht byteweise durchgelesen und dachte, es manipuliert nur irgendwelche IP-Adressen und nicht gesehen, dass es irgendwo tief im Innern auch Textausgaben gibt. Wobei die enWP es grundsätzlich nicht nötig hat, zu internationalisieren; insbesondere nicht mal einen Textkonfigurationsblock herauszieht und an den Skriptanfang stellt.
      • Ich kopiere aus den Wikis auf meine Festplatte und mache Diffs – dann will ich auch das Datum der Code-Veränderung im Diff erscheinen sehen; und mich interessiert nicht der Zeitpunkt in der Versionsgeschichte, wann in dieses Wiki diese Version kopiert wurde.
    • Die Bedeutung der Doku kann man gar nicht genug hervorheben.
  • Ich hätte einen anderen Ansatz für neue Gadgets: Die Skripte im Mediawiki:Gadget- enthalten bei größeren Aufgaben nur noch ein kleines Kopf-Skript, das NR, action oder kanonischen Spezialseitennamen oder vielleicht Skin und mobile oder sowas prüft, und danach mit geeignetem max-age aus einer WMF-Benutzerseite lädt.
    • Für die Anwender bleibt es beim Häkchenmachen.
    • Die Maintainer sind klar.
    • Wenn das Ding Bockmist macht, kann die Seite administrativ gelöscht oder auskommentiert werden, und Ruhe ist.
    • Die Benutzer werden nicht auf jeder Seite mit Hunderten kB belästigt, nur damit die Skripte feststellen, dass sie ja nur beim Editieren wirksam werden.
    • Die Entwickler können die Produktivversion permanent weiter verbessern, ohne jedesmal auf WP:AAF mit neuer Version aufschlagen zu müssen.
    • Das Mediawiki:Gadget- enthält keine fehleranfällige und wartungsbedürftige Expertise.
    • Nur beobachtbare WMF-Benutzerseiten sind erlaubt, bei denen jede Version nachvollzogen werden kann; so mal eben böswillig einen sysop edit token ausborgen.
    • Die Anforderungen an neue Skripte entsprechen in etwa den von dir oben vorgetragenen; zumindest für die präsentierte Ausgangsversion. Die Seiten können danach ja jederzeit beobachtet und gedifft werden.
    • Auf versioning und Komprimierung durch MediaWiki ist gehustet. Dafür wird der Hauptteil des Skriptes erst dann geladen, wenn es wirklich benötigt wird; und nicht gnadenlos alles JS und alles CSS in jeder Situation in jede dafür überhaupt nicht geeignete Spezialseite. Dann dauert es halt mal ein paar Tage, bis eine frische Version kommt; in dringenden Fällen hängt ein Admin ein &17B an die Lade-URL.
    • markAdmins und dein Freund Cacycle operieren bereits so, wobei letzterer nur bei edit|submit erforderlich ist. Dein BKL-Check könnte auf die gleiche Weise für !NR%2 view|edit|submit aus deinem BNR eingebunden werden und den in Ehren ergrauten deprecateten ersetzen.
  • Bei den Altlasten sehe ich das anders.
    • Es ist niemand zu vermitteln, dass ein seit fünf Jahren funktionierendes Skript aus formalen Gründen abgeschaltet wird.
    • Solange das Dings weiterhin seine Aufgaben erfüllt, läuft es weiter.
    • Wenn es nur wegen Veränderung der Bibliotheksfunktionen nicht mehr geht, werden die wohl oder übel durch die Werkstatt unter minimalem Aufwand angepasst werden müssen.
    • Wenn es grundsätzlich nicht mehr funktioniert, weil die Aufgabenstellung sich gewandelt hat oder mit modernen Browsern nicht mehr kompatibel ist, dann funktioniert es halt nicht mehr, muss von betroffenen Benutzern ausgehakelt oder irgendwann aus der Definitionsliste ausgetragen werden.
    • Altlasten mit nicht mehr aktiven Entwicklern laufen eben solange weiter, wie sie funktionieren oder ein neuer Maintainer sie in seine Benutzerseite übernimmt und aufarbeitet.
  • Die Rubriken kann ich nachvollziehen; habe persönlich eine ähnliche Einteilung im Hinterkopf. Eine offizielle Klassifikation durch ein Board wird es aber nicht geben. Die guten kommen von den Board-Mitgliedern selbst, die bösen von Benutzern, die dann sehr böse werden, oder solchen, die schon seit Jahren nicht mehr aktiv sind und sich nicht wehren können.
  • Zu den Anmerkungen im Einzelnen:
    • Sicherheitslücken sind sofort zu beseitigen; auf Fehlfunktionen ist so zu reagieren, dass kein Schaden entsteht. Notfalls hat das Skript eine Situation, mit der es nicht klarkommt, im Vorfeld zu erkennen und wird dann nicht weiter aktiv. Wenn Schaden angerichtet wird und das nicht sehr zeitnah beseitigt wird, dann folgt die administrative Abschaltung. Wenn der Fehler darin besteht, dass keine Funktion erbracht wird, dann wird sie halt nicht erbracht.
    • Ein Review aller Änderungen ist nicht umsetzbar.
      • Personell gibt es schlicht null freie Kapazität, die das zeitnah leisten könnte. Ich nicht, du nicht im ersten Halbjahr 2014, und auch der Rest ist voll ausgelastet. Ein Pflichtreview jeder Änderung würde also entweder zu einem nicht hinnehmbaren Stau (eigentlich einer Blockade) führen oder die Beteiligten unter massiven Druck setzen, alle eigenen Pläne über den Haufen zu werfen und alle eigenen Prioritäten hintanzustellen.
      • Wenn die Grundversion solide ist, dann gibt es immer mal kleine Optimierungen, Abfangen unvorhergesehener Situationen, Tippfehler in Meldungen oder verständlichere Formulierungen usw. Das müsste auch alles durch den Review, was in professionellen Systemen und für die weltweite Wiki-Software auch so gehandhabt wird.
      • Ich finde mich nur mit Mühen vier Wochen später noch durch meinen eigenen Code durch; und das überhaupt nur durch intensive innere Dokumentation und weil ich seit Jahrzehnten nach gleichen Mustern programmiere. Ich habe weder Zeit noch Nerv, mich bei jeder Änderung von Neuem in die Gedankenwelt anderer Leute einzuarbeiten und verantwortlich die Auswirkungen einer Umprogrammierung abzuschätzen und dafür geradezustehen; erst recht nicht, wenn ich das Skript nie selbst eingesetzt habe und dessen gewünschte Funktion nie im Alltag beobachtet hatte. Zumal die obigen Anforderungen keine innere (Programmierer-) Doku vorsehen und auch deine Skripte in dieser Richtung ausbaufähig wären. Es ist auch kein Gemeinschaftswerk vieler Entwickler wie MW, sondern geht immer noch stark auf Einzelpersonen zurück.
      • Die Kernfunktionen stehen im BNR, für das schadenfreie Funktionieren ist der Benutzer verantwortlich und Bugs mit Folgeschäden sind zeitnah abzustellen, sonst kommt das Teil von der Liste. Den Rest müssen die tatsächlichen Anwender mit dem Maintainer abkaspern.
    • „erfordert keine zusätzliche Konfiguration durch den Benutzer“ – das gilt für die Basisversion oder wenn die Vorgabe konkreter Seiten oder Kategorien oder individuelle Filterbedingungen usw. nicht erforderlich ist.
      • Natürlich kann jedes bessere Skript über die für alle Anwender erstmal praktikablen Grundeinstellungen hinaus optional an besondere Ansprüche, erfahrene Benutzer, zusätzliche Meldungen und erweiterten Funktionsumfang angepasst werden.
Liebe Grüße --PerfektesChaos 11:16, 18. Jul. 2014 (CEST)
Die Benutzer werden nicht auf jeder Seite mit Hunderten kB belästigt, nur damit die Skripte feststellen, dass sie ja nur beim Editieren wirksam werden. – Der Code liegt nach einmaligem Laden im Cache, ob der nun immer eingebunden wird oder nur dann, wenn er gebraucht wird, spielt keine Rolle. Der einzige Vorteil, und damit auch der einzige Grund, warum ich selbst diesen Ansatz verfolge, ist es, beim Debuggen sich nicht erst durch eine kilometerlange Liste an eingebundenen Skripts kämpfen zu müssen, bis man gefunden hat, was man sucht. Das funktioniert aber nur, wenn es ein Ladeskript für alles gibt, wenn jedes Skript wie du vorschlägst seinen eigenen Lade-Code hat, macht es das nur noch schlimmer.
Nur beobachtbare WMF-Benutzerseiten sind erlaubt, bei denen jede Version nachvollzogen werden kann; so mal eben böswillig einen sysop edit token ausborgen. – Frommes, aber leider realitätsfernes Wunschdenken. Es weiß ja schon fast niemand, was wikEd alles an anderen Skripten nachlädt (dazu unten mehr), und es würde nicht auffallen, wenn da etwas Bösartiges dabeiwäre. Daran, dass man Administratoren vertrauen muss, dass sie keinen bösartigen Code einfügen, kann man nichts ändern. Aber Vertrauen vererbt sich nicht so leicht, und damit reicht es eben nicht aus, dass bei der Einrichtung des Gadgets ein Administrator einmalig dem Skriptautor das Vertrauen ausgesprochen hat, dass dieser keinen bösartigen Code einfügt. Das Edit-Token eines Administrators ist noch das Harmloseste, was ein Angreifer erlangen kann, die CU-Erweiterung stellt auch eine API zur Verfügung.
Bei den Altlasten sehe ich das anders: Es ist niemand zu vermitteln, dass ein seit fünf Jahren funktionierendes Skript aus formalen Gründen abgeschaltet wird. – Deshalb habe ich den hic sunt dracones-Abschnitt vorgeschlagen. Dass ein Skript wieder rausfliegt, wenn es nicht gepflegt wird, sollte nur für neue Gadgets gelten, bei denen die Anwender damit schon von vornherein gewarnt sind, dass dies passieren könnte.
Sicherheitslücken sind sofort zu beseitigen; […] administrative Abschaltung. – Wie oben angekündigt, ein kleiner Exkurs über die Skripte, die wikEd lädt:
  1. Wikipedia:WikEd: „Schnelles zeige Vorschau zeigt eine lokale Vorschau unter Verwendung von InstaView mit Ajax Technologie“ Soweit ich sehe, trifft das noch immer zu, auch wenn diese Vorschau direkt danach durch die des MW-Parsers ersetzt wird. Und es wird dafür Pilafs Originalskript verwendet.
  2. Wikipedia:Helferlein/Navigation-Popups: „Liefert eine Voransicht (Preview) des Artikeltextes (Dank an Pilaf für sein Live-Preview-Skript, das dies ermöglicht)“ Auch das trifft zu, wobei Navigations-Popups eine Kopie verwendet.
  3. https://en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-popups.js&action=history: „security fix“ (mehrfach), „another unsanitized table attribute“, „escape image filename“, „aggressively sanitize anything that looks like a tag“. Und dreimal darfst du raten welcher Teil des Codes da betroffen ist. Und nein, in Pilafs Original wurde nichts geändert. Ich denke, ich muss nicht erklären, was jeder Hacker, der lesen kann, aus diesen drei Punkten über wikEd erfährt.
Ein Review aller Änderungen ist nicht umsetzbar – Wenn sich jetzt keiner findet, der die Änderung reviewen kann oder will, dann findet sich in ein paar Jahren, wenn der ursprüngliche Autor nicht mehr aktiv ist oder sein Skript aufgegeben hat, niemand, der es weiterpflegt. Wenn ein Skript nicht zu einem Gadget wird, dann heißt das ja nicht, dass es niemand verwenden kann. Es heißt nur, dass man einen Eintrag in seiner common.js machen muss statt eines Häkchens in den Einstellungen, dass der potentielle Nutzer also aufmerkt: „Das ist keine offizielle, vollständig auf korrekte Funktion überprüfte Einstellung, du bist selbst verantwortlich in dem, was du mit diesem Skript tust.“ Natürlich wäre es wünschenswert, wenn sich Nutzer das auch bei einem Gadget sagen würden, aber das tun die meisten nun einmal nicht. Und wer einer Kopieranweisung für seine common.js nicht folgen kann, der hat offenbar nicht einmal die Lesekompetenz eines Grundschülers, mit sojemand habe ich kein Mitleid.
--Schnark 10:18, 19. Jul. 2014 (CEST)


  • Um mit deinen letzten Betrachtungen zu beginnen: Anwender machen sich keine Vorstellungen von der Kurzlebigkeit der Skripte.
    • Bereits nach einem Jahr ist eine turnusmäßige Generalpolitur angesagt.
    • Ist man zum screengrabbing gezwungen, kann das nur beim permanent aktiven Benutzer angeboten werden, weil von einer auf die andere Woche mit Anpassungen zu rechnen ist.
    • Sehr viele der gewünschten und beliebten Skripte arbeiten intensiv mit der Benutzeroberfläche, Browserfunktionen usw. zusammen.
    • Änderungen der Browser-Technologie, Mobiltechnik, neue Skins, Weiterentwicklung der MediaWiki-Software machen ein halbwegs komplexes Skript mit mehr als einem Dutzend Zeilen nach fünf Jahren zum Totalschaden.
    • Die Rahmenbedingungen ändern sich einfach.
    • Niemand von uns weiß, ob er in drei Jahren noch aktiv sein kann; und welche Personen dann aktiv und in der Lage sind, komplexe fremde Skripte zu durchschauen und weiterzuentwickeln und wenigstens funktional zu halten, weiß nur die random-Funktion.
    • Ein umfangreiches Skript als Werk einer Einzelperson ist immer mit dem Risko der Vergänglichkeit behaftet. Es soll gute Dienste tun; jetzt und solange der Erfinder präsent ist. Deshalb ist es auch ein prinzipiell begrüßenswerter Ansatz, dass auf Labs die Tools durch Tool-Arbeitsgruppen entwickelt und gepflegt werden sollten und nicht grundsätzlich als Personen-Accounts wie auf dem Toolserver.
    • Ein Review jeder Einzeländerung würde erfordern, dass täglich jeder Edit gegengezeichnet werden müsste. Also ggf. auch dies und das und sowas. Dazu müssten die Tools zu mehreren entwickelt und gepflegt werden, um die Auswirkungen abschätzen zu können; und die verantwortliche Übernahme dann durch einen Admin vorgenommen werden. Die Zahl der aktiven Admins mit verschärften JS-Kenntnissen kommt mit Mühen in den einstelligen Bereich.
  • Es müssen alle möglicherweise eingebundenen Ressourcen, insbesondere aber Skripte, in der Dokumentation aufgelistet sein.
    • Schon allein zur langjährigen Wartung und zum Verfolgen von Ausfällen ist das zwingend erforderlich, von der Sicherheitsüberprüfung aller Beteiligten mal abgesehen.
    • Man kann es nicht oft genug betonen: Die Doku ist genauso wichtig, eigentlich wichtiger als das Skript selbst.
    • Ich kenne da eine tausendfach kopierte Benutzeroberfläche, die nicht einmal eine Dokumentationsseite hat, sondern nur ein FAQ. Sie bindet etliche sonstige Skripte ein bzw. bietet sie zur Ausführung an, ohne dass irgendwo aufgelistet wäre, was das alles ist.
  • Alle CU sollten grundsätzlich einen Zweitaccount erhalten.
    • Nur dieser bekommt die erweiterten Rechte.
    • Der Alltags-Account wird für Artikelarbeit genutzt und alltägliche Verwaltungsangelegenheiten, und mag vor Helferlein überquellen.
    • Der Zweitaccount wird sehr spartanisch ausgestattet und lediglich für Abfragen genutzt; vielleicht auch mal einen kleinen Absatz auf eine Disku schreiben, ohne VE oder wikEd oder sonstwas.
    • Du hast einen guten Namen; kannst du ja mal auf WD:CU vorschlagen und nett von mir grüßen.
    • Während Admin-Aktionen auffallende Spuren hinterlassen und reversibel sind, kann sich CU auf Ausspähen beschränken. Wobei auch CU geloggt wird, aber das mag zwischen Hunderten von Einzelqueries untergehen.
    • OS sinngemäß; wobei die noch spurenloser agieren und noch lohnenderes Ziel wären.
    • Ich würde ja den Hexer angreifen; da sind so schön viele alte Skripte.
  • Es wird immer erst eine Reaktion und Konsequenzen geben, nachdem etwas passiert ist.
    • Solange alles eitel Sonnenschein ist, werden Blockierer und Bedenkenträger nur verspottet. Es funktioniert doch, was wollt ihr denn? Man soll nicht immer so negativ denken.
    • Eine Warnung vor Seeschlangen mag man ja überall drannageln; aber das würde nur abstumpfen, wenn dort sechs Jahre lang nie etwas passiert war, und hätte bei den Tausenden potentieller Nicht-Leser keine Konsequenz. Egal ob ich hier vor irgendwas gewarnt werde oder nicht; ich brauche dieses Werkzeug, und bei allen anderen funktioniert das ja auch ohne Probleme.
  • Wenn ich das richtig sehe, sind seit Jahren keine JS-Gadgets mit mehr als einer Mini-Aufgabe hinzugekommen.
    • Das ist auch ganz gut so; ich habe keine Ambitionen, daran etwas zu ändern.
    • Wenn, dann würde ich nach den Erfahrungen der letzten acht Jahre nur noch eine Importerleichterung aus der verantwortlichen Benutzerseite (markAdmins) hinzufügen; nicht aber komplexen Arbeitscode als Gemeinschaftsverantwortung.
    • Was einmal im Bestand ist, das ist da auf ewig. Ohne einen triftigen Grund bekommt man das auch nicht mehr weg. Insofern ist es auch müßig, über wikEd zu fluchen. Man kann aber aus derart komplexen Systemen lernen. Und vielleicht verbietet ja MediaWiki nächstes Jahr das Bearbeiten des Quelltextes völlig; dann hat sich diese Frage auch gelöst. (VE for use for every content edit.)
  • Was die Einbindung größerer JS-Codes betrifft:
    • O doch; es macht einen messbaren Unterschied. Auf mittelprächtigen Büro-PC konnte ich auch mit den Profilern deutliche Zeitunterschiede messen; insbesondere Opera wurde sehr zäh.
    • Meine Hausnummer liegt bei 100 kB, zu denen ich das selektive Laden routinemäßig vorsehen würde.
    • Bei VE und ULS, insbesondere in deren ersten Phasen der Zwangsaktivierung, kam es zur Verzögerung von mehreren Sekunden bei einem Mini-Artikel über einen deutschen Hügel, den es in keiner anderen WP gab.
    • Es hat schon seinen Grund, warum ich auf einer Spezialseite die 400 kB des komprimierten WSTM nicht einbinde.
  • „Das funktioniert aber nur, wenn es ein Ladeskript für alles gibt“
    • Das wäre ja mal eine nette Sache für das sagenumwobene Gadgets 2.0, nach dem wir schon seit Jahren dürsten: Nicht nur skins, rights und targets, sondern auch eine Liste von namespace-Nummern, kanonischen Spezialseiten oder Liste von action-Werten.
    • Nicht ohne Grund steht seit einiger Zeit am Ende jeder meiner Dokus eine einschlägige Tabelle.
Liebe Grüße, und nett von dir was zu sehen --PerfektesChaos 18:10, 19. Jul. 2014 (CEST) kl.erg 18:20, 19. Jul. 2014 (CEST)
Ein Review jeder Einzeländerung würde erfordern, dass täglich jeder Edit gegengezeichnet werden müsste. Also ggf. auch […] sowas. – Jeder Administrator, der kopieren kann, kann diesen Edit auch reviewen. Außerdem schlug ich vor: außer der betroffene Teil ist durch Softwaretests abgedeckt, die weiterhin bestanden werden. Wenn man das großzügig interpretiert, dann bräuchte es nur jemand außer mir, der Benutzer:Schnark/js/browsertest verwendet und bestätigt, dass der Test weiterhin bestanden wird.
Alle CU sollten grundsätzlich einen Zweitaccount erhalten. – Nicht umsetzbar, zumal das gleiche Problem ja auch für alle Stewards besteht.
Ich würde ja den Hexer angreifen; da sind so schön viele alte Skripte. – Und Steward-Rechte. Zusammen mit CORS sollte es möglich sein, auf jedem beliebigen WMF-Wiki CU- und OS-Rechte zu bekommen. Und überall Code in die common.js einzufügen, der mir E-Mail-Adressen und Beobachtungslisten der aktiven Benutzer zukommen lässt, das sollte eine ganze Menge Geld wert sein.
Bei VE und ULS, insbesondere in deren ersten Phasen der Zwangsaktivierung, kam es zur Verzögerung von mehreren Sekunden – Beim VE mag es tatsächlich an der Größe des Codes liegen, aber nicht an der Download-Zeit, sondern beim Parsen. Bei ULS war es zum einen bugzilla:56894, zum anderen die Tatsache, dass ein Skript, was rechenintensive Operationen mit allen Knoten des DOM-Baums ausführt eben langsam ist.
--Schnark 12:09, 21. Jul. 2014 (CEST)
  • Softwaretest (meint Modultest, für Mitleser) sind gut und schön, aber nicht alles.
    • Automatisierbare Modultests können Basisfunktionen und einfache Programmeinheiten überprüfen.
    • Ich setze vor jedem Speichern eines produktiven Lua-Moduls die Kategorie:Wikipedia:Lua/Modul/Testseite für einen letzten Routinetest ein.
    • Modultests können nur die Szenarien finden, die vorher als Konstellation erkannt und definiert wurden. Ein Fehler in URLutil blieb ein Dreivierteljahr unbemerkt, weil die arithmetische Konstellation bestimmter IP nicht abgedeckt war.
    • Modultests können gut Basisfunktionen checken, versagen aber bei komplexen interaktiven Abläufen oder wenn projektweit viele Seiten einbezogen sind. Hier können nicht alle Abfragen über externe Seiten mit manpulierten Resultaten simuliert werden, weil dieser Eingriff in die Programmlogik sebst fehleranfällig und gefährlich kompliziert wäre. Interaktive Abfolge wäre: Wenn der Benutzer Gadget X aktiviert hat und beim Bearbeiten eines Abschnitts in der Zusammenfassung auf Tab drückt, passiert im Browser Y seit Version Z dies und das, falls der Artikel noch nicht gesichtet war.
    • 2010 hatte ich noch Modultests in WSTM eingesetzt, das aber irgendwann aufgegeben, weil sie nie einen Fehler fanden. Das Problem stellte sich immer erst in realen Artikeln heraus, wenn in einem Einleitungsabschnitt (und nur dort) eine Bildlegende eine Vorlage enthielt, bei der nach dem Vorlagennamen ein Kommentar folgte, in dem ein nowiki-Tag enthalten war.
    • Ein automatischer Softwaretest auf einem System alle 24 Stunden ist eine tolle Sache. Unstimmigkeiten werden detektiert, und oft sind es Folgefehler von gravierenden Problemen an völlig anderer Stelle. Gerade auch bei nicht reproduzierbaren Fehlern ist die Protokollierung hilfreich.
  • Modultests sind grundsätzlich nicht geeignet, unbeabsichtigte Sicherheitslücken oder vorsätzliche unerwünschte Wirkungen aufzudecken. Die reguläre Funktion ist ja vorhanden.
    • Da hilft lediglich aufwändige Code-Lektüre durch absolute Experten, die nur sporadisch und nicht mit jedem Review erfolgen kann. Vermeidung gefahrenträchtiger Programmierkunststücke, jshint und gut lesbarer Quellcode nebst interner Dokumentation sind dabei wichtig. Die an Ort und Stelle unauffällige und harmlose Veränderung kann 1000 Zeilen weiter große Wirkung haben.
  • Komplexe Skripte mit hundert und mehr Programmzeilen können nur auf Beta erprobt und in realitätsnahen Situationen auf der simulierten WP durchgespielt werden, möglichst auch durch mehrere Anwender.
    • Bei einer komplexen Überarbeitung, die nicht nur ein paar Einzelzeilen betrifft, hilft auch ein diff nicht weiter.
  • ULS, VE, wikEd: Auch wenn ich die Dinger deaktiviert habe, dann parsen die nicht nur JS-Deklarationen, sondern machen eine umfängliche Initialisierung, um am Ende zu merken, dass sie in der Situation oder ob der Benutzereinstellung überhaupt nicht gebraucht werden. Wenn ich ULS abschalte, dann hat der keinen riesigen DOM-Baum an einer großen Seite zu flöhen, sondern nur ein kleines interaktives Fensterchen zum Wiedereinschalten vorzuhalten, und braucht auch nicht mehr Code auf jeder Seite.
LG --PerfektesChaos 20:13, 20. Aug. 2014 (CEST)
Natürlich können Tests nur die Existenz, nicht die Abwesenheit von Fehlern zeigen. Aber von ein paar Ausnahmen abgesehen trifft das auf ein Code-Review auch zu (und im Beispiel mit Gadget X, Tab in der Zusammenfassung mit Browser Y seit Version Z im ungesichteten Artikel wird auch ein Code-Review nichts helfen). Aber in einer Umgebung, in der niemand ein Review leisten kann oder will, können Tests eine praktikable Alternative darstellen.
Der normale Benutzer interessiert sich ohnehin nicht dafür, ob der Code in allen erdenklichen Zusammenhängen funktioniert, er soll nur im Normalfall funktionieren und auch nach einer Änderung weiterhin funktionieren, und das kann ein Test ja durchaus bestätigen.
Selbst wenn man den Code versteht, ist ein Test manchmal besser geeignet. Beispiel: Diese Änderung im Code wird von dieser Änderung im Test begleitet. Die Änderung am Code ist schwer zu verstehen: Wenn du dich nicht sehr konzentrierst, kannst du nicht sehen, ob lis nach steigenden oder fallenden Folgen sucht (in der ersten Version in meinem Testwiki war es nämlich genau falsch herum, obwohl ich den Code nochmals sorgfältig durchgelesen habe), und die Auswirkungen dieser Änderung auf tatsächliche Diffs sieht man im Code ohnehin nicht. Der Test dagegen zeigt, dass lis in den beiden Extrem- und zwei Standardfällen das richtige Ergebnis liefert, und die Auswirkung auf die Diffs nicht falsch und sogar eher positiv ist.
2010 hatte ich noch Modultests in WSTM eingesetzt, das aber irgendwann aufgegeben, weil sie nie einen Fehler fanden. – Dass Tests keine Fehler finden, ist doch eigentlich der erwünschte Fall, wenn du nach jeder Änderung am Code erst einmal wieder mehrere kaputte Tests reparieren müsstest, dann müsstest du an deinen Fähigkeiten als Programmierer zweifeln.
Modultests sind grundsätzlich nicht geeignet, unbeabsichtigte Sicherheitslücken […] aufzudecken. – In begrenztem Rahmen schon, nämlich dann, wenn im ersten Review alle Stellen identifiziert werden, die potentiell gefährlich sind und diese dann gezielt mit potentiell schädlichen Eingaben getestet werden. Benutzer:Schnark/js/templateEditor.js/test.js hat ein paar Tests nach diesem Prinzip, und falls ich mal beim Überarbeiten das Escapen verpfusche, würde dieser Test das feststellen. --Schnark 10:01, 22. Aug. 2014 (CEST)

Proposal Gadget-externalsearch.jsBearbeiten

Ich habe auf MediaWiki dieses schöne Standard-Gadget gesehen mw:MediaWiki:Gadget-externalsearch.js. Dies wäre eine sehr gute Verbesserung, da die interne Suche mehr schlecht als recht ist (nur ein Buchstabendreher und das Ergebnis ist nichts), und wir bekommen alle Vorteile der besten Suchmaschine der Welt(⁉ dessen Syntax auch gut bekannt ist …).User: Perhelion 13:02, 26. Jan. 2016 (CET)

Lies die Beschreibung genau, dann wirst du erkennen, warum es sinnlos ist, dieses Gadget hier anzubieten. --Schnark 10:31, 27. Jan. 2016 (CET)
Danke der Antwort, "die URLs" kann man ja natürlich anpassen. Auch wenn einiges evtl. nicht von Google abgedeckt sein sollte, finde ich es immer noch sehr nützlich. PS: Evtl. sollte ich erst mal ein paar praktische Beispiele liefern und die ganze Chose für mich testen.User: Perhelion 11:07, 27. Jan. 2016 (CET)
Ja, die URLs können angepasst werden. Aber nicht von "man", sondern von Serveradministratoren. --Schnark 11:20, 27. Jan. 2016 (CET)
Nun gibt es MediaWiki:Gadget-externalsearch.js. LG -- User: Perhelion 14:45, 18. Sep. 2018 (CEST)

related articlesBearbeiten

Es gibt die Funktion "related articles" (dt. "mehr erfahren"), durch die durch mw:Extension:RelatedArticles unter Artikeln mehr oder weniger ähnliche Artikel mit Link zum Lesen anbieten kann. Die dewiki-Community hat im Jahr 2016 per Wikipedia:Meinungsbilder/Mehr erfahren eine standardmäßige Einführung abgelehnt, weshalb die Erweiterung hier nicht geladen wird.

Die Funktion könnte trotzdem für viele Benutzer interessant sein, und sie kann mit Javascript nachgeladen werden. User:MisterSynergy/relatedArticles.js (Kopie aus ruwiki, damit das einfach beobachtbar bleibt) enthält dazu den entsprechenden Javascript-Code, der sicherstellt dass relevante HTML-Elemente vorhanden sind, und dann die Erweiterung lädt. Alles eher trivial, und das funktioniert nach meinen Beobachtungen auch in allen Skins.

Als interessierter Benutzer muss ich jetzt allerdings das Skript noch in meine common.js einbinden, und (zurzeit) in meiner common.css Regeln überschreiben, die die Funktion in der mobilen Ansicht wieder anschaltet, weil in MediaWiki:Mobile.css die Anzeige der entsprechenden HTML-Elemente unterdrückt wird. Die Nutzung ist deshalb zurzeit im Wesentlichen Javascript-vertrauten Benutzern vorbehalten, das sollte sie aber meines Erachtens nicht sein. Ich bitte darum, ein entsprechendes Gadget einzurichten, so dass das Setzen eines Hakens über Special:Preferences#mw-prefsection-gadgets reicht, um die Funktion an- bzw. abzuschalten.

Dokumentation und ggf. einige andere Sachen müssten noch erstellt werden, da kann ich gern mithelfen. Da ich bisher keine Gadgets eingerichtet habe, bitte ich um Rückmeldung, was wo im Einzelnen gebraucht wird. Danke und Viele Grüße, MisterSynergy (Diskussion) 15:20, 8. Aug. 2019 (CEST)

Ich bin für das Gadget. Soweit ich weiß wirken Gadgets aber in der mobilen Ansicht nicht. Das müsste jede(r) für sich mit minerva.js und minerva.css machen. Versionsimport halte ich für sinnvoll. Gruß --FriedhelmW (Diskussion) 20:34, 8. Aug. 2019 (CEST)
Wenn das Gebilde hier ein offizielles Gadget werden soll, dann würde die Community und deren Techies auf ewig die Verantwortung für ordnungsgemäße Funktion, sinnvolle Resultate, keine Sicherheitslücken und unverzügliche Beseitigung von Problemen übernehmen und dauerhaft die Pflege garantieren.
  • Das werden die Techies der Community voraussichtlich nicht mitmachen.
  • Schon allein deshalb nicht, weil die Community diese Funktionalität offiziell per MB abgelehnt hat. Wenn es eine auch aus inhaltlichen Gründen abgelehnte Funktion ist, ist schwer nachvollziehbar, warum es als offizielles Community-Gadget geadelt werden soll.
  • Auch die inhaltliche Qualität der durch einen dumpfen „Algorithmus“ gewonnenen Ergebnisse (gleiche Wörter in viel verlinkten Artikeln) wurde mehrfach in diversen aktuellen FZW-Stellungnahmen beanstandet, und die absurden Resultate scharf kritisiert.
  • Es steht dir frei, dies als Benutzerskript jedem anzubieten, zu dokumentieren, anschließend auf WP:HX zu verlinken und dauerhaft die Pflege und Verantwortung zu übernehmen. Die weitaus überwiegende Menge der Skripte hat den Status eines Benutzerskripts. Daraus resultiert auch sofort die Verantwortlichkeit: zwischen Doppelpunkt und Schrägstrich.
  • Neue Community-Gadgets zu neuen Funktionen für alle Benutzer haben wir schon seit einem Jahrzehnt nicht mehr eingeführt.
  • Wer das für sich persönlich für so weltbewegend hält, dass unbedingt diese Funktion benötigt würde, kann sich das anhand der gut geschriebenen Doku selbst installieren.
  • Wobei es nicht erforderlich ist, an irgendwelchen CSS-Seiten herumzumachen; das könnte ein wirklich gut geschriebenes Gadget (dieses hier ist aus mehrerlei Gründen auf Anfängerniveau) automatisch selbst erledigen. Wobei Anfängerbasteleien ohnehin kein Ausgangspunkt sind, den Techies der dewiki-Community die Verantwortung aufzuschwatzen.
  • Wobei es sowieso völlig rätselhaft ist, warum überhaupt noch ein separates Skript mit diesen Aktivitäten erforderlich ist. Wenn das Hand und Fuß hätte, dann wäre alles das in die globale Ressource bereits integriert, und es würde als Aufruf ausreichen:
            mw.loader.load( "ext.relatedArticles.readMore.bootstrap" );
  • Wobei mir die Funktion deines Codes suspekt ist; die dortige Funktion mw.loader.using() setzt voraus, dass irgendeine Nachfolgefunktion angegeben wird, die ausgeführt werden soll, nachdem eine Ressource geladen wurde. Dieser Pflichtparameter wurde nicht angegeben, und bereits das legt nahe, dass das keine robuste und stabile Programmierung wäre, sondern Anfänger-Pfusch, der früher oder später zu seltsamen Dysfunktionalitäten führen wird, und eigentlich jetzt schon Fehlermeldungen auslösen müsste.
VG --PerfektesChaos 23:05, 8. Aug. 2019 (CEST)

Ich halte es für höchst angemessen, dass die Community hier die Wartung übernimmt – gerade *weil* es das Meinungsbild mit dem bekannten Ergebnis gegeben hat. In dem Meinungsbild wurde die standardmäßige Aktivierung für alle Benutzer, angemeldet wie unangemeldet, abgelehnt; das Meinungsbild kann mir und anderen Benutzern aber nicht verbieten, die Erweitung trotzdem zu benutzen, und die Möglichkeit eines Gadgets wurde in dem Meinungsbild überhaupt nicht behandelt. Zurzeit erfordert die Aktivierung der Funktion allerdings erweiterte technische Fähigkeiten, und wenn "die Community" nun die Einrichtung eines Gadgets verweigert, zumal mit Verweis auf das Meinungsbild, das ist das im Grunde der Fuck-you-Mittelfinger für alle technisch weniger begabten Benutzer. Ich finde es daneben, wenn verfügbare technische Funktionen durch absichtlich erschwert gehaltene Zugänglichkeit einer kleinen Elite mit speziellen Fähigkeiten vorbehalten bliebe.

Nun kann und möchte ich niemanden zwingen, hier die Wartung eines Gadgets zu übernehmen. Wer es könnte, aber nicht möchte, darf für sich diese Aufgabe gern ablehnen oder das hier ignorieren. Dann aber bitte hier nicht im Weg rumstehen, danke …

Ob die Funktion gute Ergebnisse liefert, oder absurde Resultate, ist im Übrigen nicht relevant für die Einrichtung eines opt-in Gadgets. Es kann wohl jeder für sich selbst bewerten, was man da angeboten bekommt.

Wie Du selbst siehst und schreibst, ist "mein" Javascript-Code eher nicht von höchster Qualität, und das liegt daran dass ich praktisch keine Ahnung von Javascript, JQuery, und Mediawiki habe. Den Code habe ich angeboten bekommen, allerdings wurde er als schneller Hack zusammengeschustert. Ich verstehe was er macht, aber nicht warum das so (oder anders) zu tun ist und wenn was auseinanderfällt, kann ich es bestenfalls vielleicht und nur mit viel ausprobieren reparieren.

Ich habe nun noch ein bisschen weiter rumprobiert (!); tatsächlich scheint die Erweiterung auch zu funktionieren, wenn sie einfach mit mw.loader.load geladen wurde (keine Ahnung, warum im phab-Thread von zwei Benutzern mw.loader.using empfohlen wurde). Allerdings muss für die mobile Oberfläche das CSS weiterhin verändert werden, weil an entsprechender Klasse in dewiki über Mediawiki:Mobile.css projektweit rumgepfuscht wird. Alles in allem dürfte die Wartung eines solchen Gadgets für versierte Benutzer aber eher einfach sein, wenn es macht im Grunde nichts anderes als eine fertige und von WMF gut gepflegte Funktionalität nachzuladen. —MisterSynergy (Diskussion) 09:51, 10. Aug. 2019 (CEST)

Zur Frage ob load() oder using() siehe mw:ResourceLoader/Core modules und https://doc.wikimedia.org/mediawiki-core/master/js/#!/api/mw.loader. Ich meine es macht keinen Unterschied. Gruß --FriedhelmW (Diskussion) 13:22, 10. Aug. 2019 (CEST)

Abschaltung des Gadgets "Deepcat"Bearbeiten

Der hinter Deepcat stehende Service "Catgraph" wird zum Ende des Monats abgeschalten, das Gadget Deepcat wird dann wirkungslos. Deepcat wurde von WMDE entwickelt, wird jedoch nicht mehr maintained. Bereits jetzt funktioniert Deepcat oft nicht. Eine vergleichbare Funktion ist unter dem Namen "deepcategory" seit 2018 in die Suche eingebaut und kann über die Erweitere Suchoberfläche (Advanced Search) genutzt werden. Das Gadget sollte deshalb bereits jetzt aus der Liste entfernt werden. -- Michael Schönitzer (WMDE) (Diskussion) 13:59, 9. Jan. 2020 (CET)

Zurück zur Projektseite „Technik/Skin/Gadgets“.