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

Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

Apr 23, 2019

Download

Documents

lamliem
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

12.12.2008 | MediaWiki | Johan Uhle

3

MediaWiki

Page 4: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

12.12.2008 | MediaWiki | Johan Uhle

11

Technischer Überblick 2/2

Page 12: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

12.12.2008 | MediaWiki | Johan Uhle

12

Code 1/3

Page 13: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

12.12.2008 | MediaWiki | Johan Uhle

13

Code 2/3

Page 14: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

12.12.2008 | MediaWiki | Johan Uhle

16

Mein Patch 2/4

Page 17: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

12.12.2008 | MediaWiki | Johan Uhle

17

Mein Patch 3/4

Page 18: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

12.12.2008 | MediaWiki | Johan Uhle

18

Mein Patch 4/4

Page 19: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

12.12.2008 | MediaWiki | Johan Uhle

19

Skalierung 1/4

■ Skalierung sehr wichtig

Page 20: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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 am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

12.12.2008 | MediaWiki | Johan Uhle

24

Ende

■ Geschichte und RelevanzOrganisationTechnischer ÜberblickCodestrukturMein PatchSkalierung und Caching

■ Fragen?

Page 25: Entwicklung in Open-Source- Projekten am Beispiel MediaWiki · Load Balancing vor Apache PHP Bytecode Caching mit vielen Frameworks. Empfohlen APC Caching auf Apache Local Message

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