Projectplan LispCMS
[ home ] [ svntree ]
Over het project
Dit zijn meer de doelen voor de
periode half feb. - eind mei
LispCMS moet een web development framework worden. Hiermee bedoel
ik dat je ermee gemakkelijk webapplicaties kunt maken, zoals wiki's,
online winkels. (N.B. deze voorbeelden zijn een klus op zich, maar met
LispCMS moet het makkelijker kunnen.)
Een voorbeeld van wat ik ongeveer bedoel is een mix van Uncommon Web en iets
als de basis van PostNuke. Zie
projectplan onder voor details op de korte termijn.
Bovenop dit web development framework wil ik een klein
weblog-systeempje bouwen. Dit geeft een voorbeeld van wat je er mee
kan, en het maakt het ook minder abstract. (Bovendien geeft dit de
naam meer betekenis.)
Doelgroep
De doelgroep van dit project is
webontwikkelaars. Het zou leuk zijn als webloggers het zouden
gebruiken, maar ontwikkelaars staan voorop.
Omdat ontwikkelaars de doelgroep zijn, besteed ik niet te veel tijd
aan de gebruikersvriendelijkheid aan de kant van bezoekers van een
applicatie, eerder aan een makkelijke 'API'. Ik probeer wel te zorgen
dat het er makkelijk overzichtelijk uit komt te zien.
Over de code en documentatie
Sinds kort is er documentatie. Verder zijn er vaak docstrings bij
functies en klassen, en documentatie over een bepaald onderwerp in het
bestand dat dat implementeert.
Er is geprobeerd de code zo abstract mogelijk te schrijven, voor
zover dat nuttig was en niet een heel stuk langer.
Het overgrote merendeel van de code is portable geschreven: het
gebruikt alleen wat er in de standaard beschreven staat. Bij het
sockets-gedeelte wordt nog wel een bepaalde implementatie (CMU CL)
vereist, maar dat is makkelijk te verhelpen: op de mod_lisp site staat
hoe het kan voor 5 implementaties. Verder is unportable een deel dat
niet gedocumenteerd is (CPS transformatie), en dat ook niet echt
gebruikt wordt, helaas (nog niet echt af, moeilijk te
debuggen). mod_lisp is voor zover ik weet portable, het gebruikt
immers de Apache libraries. Voor de rest is LispCMS+dependencies, voor
zover ik weet, portable.
Projectplan
Het volgende projectplan is een schatting, omstandigheden en
inschattingsfouten kunnen er natuurlijk voor zorgen dat alles wat
anders uitpakt.
- Half februari
- CPS transformatie (moet nog verbeterd worden, maar is
al gedeeltelijk functioneel):
je schrijft een applicatie in de vorm van functies. Deze functie
kan de gebruiker om input vragen door middel van functies en macro's,
alsof het tegen een console praat. Dit in tegenstelling tot wat
'normaal' is bij het web: je geeft een formulier terug die naar een
pagina verwijst die de input zal verwerken.
De 'back'-knop werkt hierbij als een
undo. Als hier problemen mee zijn (denk aan permanente dingen) kan een
speciale macro worden gebruikt, die dit blokkeert.
- Maart
- logs
- errors+warnings worden gelogd
- 'modules':
een cms-root instance kan opzoeken
welk pad bijv. het belangrijkste weblog heeft. Dit zorgt dat je paden
kunt veranderen en dat de links dan meeveranderen.
- admin interface
- April
- resources (paden van o.a. plaatjes worden centraal
opgeslagen, later automatisch gestyled)
- plaatjes in gebruik nemen voor
weblog
- icoontjes voor files
- admin interface voor
- logs bekijken
- gebruikers toevoegen/verwijderen/bewerken (beter)
- iedereen kan gebruikers aanmaken
- paden veranderen
- weblogs toevoegen
- begin Mei
- formulier-'interface':
functies om makkelijk een edit-pagina te maken,
zonder al het parsen en valideren te hoeven doen. (d.w.z. zo weinig mogelijk).
- 10 mei: jurybijeenkomst, presentatie
- debian packages en livecd script:
een shell script om een livecd te maken van de source.
Dit zorgt dat het geheel toegankelijker wordt. Ook is dit makkelijk om te presenteren.
- documentatie:
zowel zorgen dat nieuwe gebruikers makkelijk(er) hun weg vinden in LispCMS, als een reference.
- eind Mei, einde werkperiode
- toolbar:
voorbeeld: een admin ziet bij weblog-artikelen een rij dingen die hij ermee kan doen
(veranderen, verwijderen, enz.) Als verbetering van de rij icoontjes die er nu staat.
- blocks:
blokken tekst/interface aan de rand van de site.
(zie http://news.postnuke.com/ voor een voorbeeld)
- admin voor blocks
- menu-block
- login-block
- weblog verbeteren
- Compatible maken met
Allegro of
LispWorks,
zodat het ook op dat ene besturingssysteem loopt
dat de meerderheid gebruikt.
Als er tijd over is, kan het ook compatible worden gemaakt
met CL-HTTP of iets dergelijks, dat zou alles sneller maken:
volgens mij wordt (niet-interactieve) LispCMS voor een groot deel langzaam
door mod_lisp.
Ik denk dat dit door de livecd niet meer zo nodig is.
- Uitloop, ruimte voor dingen waar ik nu nog niet aan gedacht heb.
- CPS transformatie verbeteren, componenten invoeren
(zie Uncommon Web)
Nu is het nog veel te sloom en het neemt te veel
geheugen in. Ook moet er meer van Lisp worden ondersteund.
- vertaling-interface in gebruik nemen
- admin-interface voor vertalen
Wat ook nog moet:
- De weblog verbeteren wordt waarschijnlijk in stapjes gedaan, om de nieuwste
dingen te ondersteunen.
- Er moet nog documentatie komen, waarschijnlijk gebeurt dit ongeveer zodra
het onderwerp klaar en getest is.
Testen doe ik nadat een onderdeel klaar is, zodat er achteraf weinig testen nodig zijn.