Wat is Who's Who?
De website bestaat uit een aantal onderdelen, zoals Boekweb, Publisher en Bugweb. Maar het belangrijkste deel is natuurlijk de pagina's over commissies, activiteiten, leden en alle onderlingen verbanden daartussen zoals planners, I-Owe-U etc. Het systeem dat die pagina's aan elkaar knoopt, de data weergeeft en opslaat is Who's Who.
In de volksmond wordt gesproken over WSW3 als de voorgangen van WSW4. Helaas is "3" als versieaanduiding misleidend; men zou beter kunnen zeggen dat op dit moment WSW1 + WSW2 gebruiken. In de huidige WSW zit bijvoorbeeld nog legacy code vanuit de vorige eeuw en er zijn in 2004 al functies gemaakt om met "legacy content" om te kunnen gaan. Ook is een deel van de code geschreven op het moment dat object-georienteerd programmeren erg hip, nieuw en nog nergens standaard was. Aldoende zit er in een groot deel van de code een custom made object oriented model dat afwijkt van hoe PHP tegenwoordig werkt met objecten.
Als resultaat begon WSW3 ondertussen erg uit de hand te lopen: formulierverwerking was ellende, verscheidene hacks vormden een integraal onderdeel van de website en het was door de spaghetticode voor de WebCie moeilijk geworden om snel bugs te fixen, nieuwe functionaliteit toe te voegen. Bovendien was het voor nieuwe leden bijna onmogelijk om binnen redelijke tijd te leren hoe het systeem in elkaar stak.
WsW4 is vrijwel van de grond af aan herschreven, in een modulaire en correct object-geörienteerde manier. En dat werkt heel prettig! In principe is alle functionaliteit hetzelfde gebleven, maar een pagina kan er wel eens een beetje anders uitzien.
ER-Diagrammen
Plaatjes (klikbaar!) zeggen meestal meer dan woorden, dus bij deze twee mooie diagrammen om de voor en na situatie te bekijken. In het plaatje kun je zien wat de relatie tussen verschillende entiteiten binnen Who's Who is.
Dit plaatje van WSW4 is inmiddels achterhaald. Door de jaren heen zijn er steeds meer klassen aan het diagram toegevoegd.
WSW3>
WSW4
In het ER diagram van WSW4 missen de overervingspijlen van alle objecten naar entiteit, omdat dit voor elk object hetzelfde is. Een bonusvoordeel van WSW4 is dat er vanuit het ER-diagram veel code automatisch wordt gegenereerd waardoor er minder met de hand moet worden geschreven en validiteit beter kan worden gegarandeerd.
Met het nieuwe systeem kunnen we sneller bugs oplossen en functionaliteit toevoegen. Dat is voor iedereen in het voordeel! Ook kunnen nieuwe WebCie-leden hopelijk sneller aan de slag.
Veel zaken zijn daarnaast verbeterd: Formulieren zijn uniformer, duidelijker en communicatiever. De veiligheid is verbeterd. Het is nu mogelijk om een willekeurig aantal adressen, studies en mentorgroepjes aan een lid toe te voegen. Activiteiten kunnen door meer dan één commissie georganiseerd worden. Planners kunnen door willekeurige groepen leden aangemaakt worden. Het iDEAL-systeem kan gekoppeld worden aan activiteiten. De lid-zoekopties zijn verbeterd. Herhalende activiteiten werken beter. Computerreserveringen werken nu wel. Het bijhouden van de contactenadministratie door het bestuur uitgebreid. Etc.
Goede vraag! In 2004 was het idee er al, en in 2008 is er een beginnetje mee gemaakt. Er zijn een aantal redenen dat het zo lang geduurd heeft. Ten eerste was het een gigantische klus omdat Who's Who enorm veel functionaliteit heeft: een normaal lid gebruikt z'n 10 tot 20% van de functionaliteit van de website, actieve leden 50% en een willekeurig bestuurslid 80%. (Wist je dat er ooit zelfs een bedrijf is geweest dat graag ons systeem wou kopen omdat het zo veel functies had?) Daarnaast was de WebCie niet altijd even actief en even goed gevuld. Ook zijn er in de loop der tijd natuurlijk wijzigingen geweest in de plannen.
Een snelle word count (bij revisie 17390) leert ons het volgende: (dit zegt natuurlijk niet alles, ook hier geldt de
80/20-regel natuurlijk)
- 18.911 regels code voor de Controllers
- 13.946 regels code voor de Objecten
- 27.633 regels code voor de Views
- 146.406 regels automatisch gegenereerde code
- 4.795 regels code voor het programma dat code genereert
- 3.798 regels code aan HTML-objecten
- 44.263 regels javascript
- Dan ligt er waarschijnlijk nog zo'n 20.000 regels code verspreid door het systeem (automatische checks, WsW3-conversie scripts, iDEAL)
Hierbij is de WsW3 legacy code natuurlijk niet meegeteld. Ook het immense Boekweb en publisher/benamite tellen niet mee.
Op dit moment zijn we alleen nog bezig om een nieuw Boekweb te bouwen Boekweb2. Heb jij nog ideeën, laat het ons weten of ga zelf in de WebCie, we zijn altijd op zoek naar nieuwe leden!