25
12.12.2008 | MediaWiki | Johan Uhle Entwicklung in Open-Source- Projekten am Beispiel MediaWiki 12.12.2008 von Johan Uhle

Entwicklung in Open Source Projekten - MediaWiki

  • Upload
    johan

  • View
    1.223

  • Download
    0

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

Entwicklung in Open-Source-Projekten am Beispiel MediaWiki

12.12.2008 von Johan Uhle

Page 2: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

Entwicklung in Open-Source-Projekten am Beispiel MediaWiki

Geschichte und RelevanzOrganisationTechnischer ÜberblickCodestrukturMein PatchSkalierung und Caching

Page 3: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

3

MediaWiki

Page 4: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

4

Geschichte

■ Für die Wikipedia entwickelt

■ Einsatz in Wikipedia seit Januar 2002

■ „Richtiger“ Release 1.1. Dezember 2003

■ Neuster Release: 1.13.2 2.Oktober.2008

■ Im Sinne der Wikipedia offen und zur Mitarbeit einladend

■ Lizensierung: GNU GPL 2

Page 5: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

5

Relevanz

■ Alle Wikimedia-Projekte benutzen es:

□ Wikipedia

□ Wikibooks

□ Wiktionary

□ Wikinews

■ zusätzlich noch interner Einsatz in Unternehmen

■ populärste Software für Wiki-Einsatz

Page 6: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

6

Organisation 1/3

■ www.mediawiki.org

■ Drei Bereiche:

□ Endbenutzer / Systemadministrator / Entwickler

■ Entwicklertools:

□ Bugzilla

□ Subversion (Webansicht mit ViewVC)

□ Doxygen

□ Mailinglist Wikitech-l + lokale Gruppen

Page 7: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

7

Organisation 2/3

■ IRC Channel #mediawiki auf irc.freenode.de >150 Teilnehmer

■ Bot, der neue SVN-Commits und Aktionen in Bugzilla werden im Channel ausgegeben

■ 174 SVN-Commiter (gezählt!)

Page 8: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

8

Organisation 2/3

■ IRC Channel #mediawiki auf irc.freenode.de >150 Teilnehmern

■ Bot, der neue SVN-Commits und Aktionen in Bugzilla werden im Channel ausgegeben

■ 174 SVN-Commiter (gezählt!)

■ Auf Wikimediaprojekten läuft eine der letzten SVN-Versionen

■ Konstanter Code-Review der neusten Commits durch Communitymitglieder

Page 9: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

9

Organisation 3/3

■ Lee Daniel Crocker / Erste Versionen auf Basis von „UseMod Wiki“

■ Brion Vibber / CTO of the Wikimedia Foundation

■ Tim Starling „I'm employed by the Wikimedia Foundation as a developer and system administrator. I became a Wikipedia editor on October 11, 2002, and began volunteer development work about a year later“

■ Aaron Schulz „I do work in both adding functionality to core components as well as writing badly needed major extensions. I'll sometimes do cleanup/documentation if I am bored ;).“

Page 10: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

10

Technischer Überblick 1/2

■ Technische Vorraussetzungen

□ Webserver Apache oder IIS

□ PHP4 < 1.6 => PHP5

□ MySQL 4.0 oder PostgreSQL 8.1

■ Wichtigste Funktionen:

□ Es ist ein Wiki

□ Mediendateien (Bilder, Tondateien)

□ Internationalisierung / Lokalisierung

□ Skalierung

Page 11: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

11

Technischer Überblick 2/2

Page 12: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

12

Code 1/3

Page 13: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

13

Code 2/3

Page 14: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

14

Code 3/3

■ Objektorientiert Programmiert

■ Dateistruktur:

□ /include PHP-Bibliotheken

□ /language Sprachen

□ /maintenance Administrationsaufgaben sowie SQL-Dateien für das Datenbanklayout

□ /skins Oberflächen

□ /t und /tests Tests für die meisten Funktionialitäten

Page 15: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

15

Mein Patch 1/4

■ 5491 Colour-coding of items in page histories (165xx ist neu)

■ History eines Artikels. Jede Revision hat eigene Zeile.

■ Verbesserung: Je nach Status des User, der die Revision getätigt hat, wird die Hintergrundfarbe geändert.

Page 16: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

16

Mein Patch 2/4

Page 17: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

17

Mein Patch 3/4

Page 18: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

18

Mein Patch 4/4

Page 19: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

19

Skalierung 1/4

■ Skalierung sehr wichtig

Page 20: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

20

Skalierung 2/4

■ Load Balancing vor Squid

■Squid bedient 75 % des WP-Traffics (vor Allem Anfragen ohne eingeloggte User)

■MediaWiki enthält NotifyFunktionen, um bei Änderungen dem Squid-Server Bescheid zu geben.

■Source: /include/Article.php

■ doPurge() 1045

■ onArticleEdit() 3137

Page 21: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

21

Skalierung 3/4

■ Load Balancing vor Apache

■ PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC

■Caching auf Apache

■ Local Message Cache

■ Memcache

■ Datenbankanfrage

■Source: /incude/MessageCache.php

■ Line: 228

Page 22: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

22

Skalierung 4/4

■ Local Message Cache sind statische HTML-Seiten, die an IP-User gegeben werden

■ Memcache läuft auf jedem ApacheServer

■ Speichert Datenbankdaten lokal im Speicher. Löscht Daten nach Least Recent Used

Page 23: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

23

Quellen:

■ MediaWiki SVN 440xx

■ http://www.mediawiki.org

■ http://meta.wikimedia.org

■ http://en.wikipedia.org/wiki/MediaWiki_release_history

■ http://lists.wikimedia.org/pipermail/wikitech-l/

■ https://bugzilla.wikimedia.org

■ https://www.ohloh.net/p/mediawiki

■ #mediawiki auf irc.freenode.de

Stand: 10.12.08

Page 24: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

24

Ende

■ Geschichte und RelevanzOrganisationTechnischer ÜberblickCodestrukturMein PatchSkalierung und Caching

■ Fragen?

Page 25: Entwicklung in Open Source Projekten - MediaWiki

12.12.2008 | MediaWiki | Johan Uhle

25

Empfehlungen

■How to ask questions the smart way

■http://www.catb.org/~esr/faqs/smart-questions.html

■How to report bugs effectively

■http://www.chiark.greenend.org.uk/~sgtatham/bugs.html