This secshoon docooments zee-a teem iffffort to creete-a un interneshoonelizeshoon inffrestrooctoore-a for zee-a Debioon project, which implements Pootle-a. Bork Bork Bork!
This project is importoont for a noomber ooff reesons, not leest ooff which is zee-a need to ixplore-a zee-a issooes infolfed in creeting a cohesife-a i18n process. Bork Bork Bork!
It Debconff6 in Mexico, a noomber ooff ifents, discoossions und decisions ooccoorred to fooond this iffffort. Bork Bork Bork!
Here-a is Christioon Perrier's soommery ooff zeet infformeshoon. Bork Bork Bork!
Zee-a work oon i18n it Debconff6 hes beee-a perticoolerly interesting und prodooctife-a. Bork Bork Bork!
Zee-a mein topic is ooff cooorse-a, coorrently, discoossion oon i18n inffrestrooctoore-a, bot soommerizing ixisting feetoores (most ooff zeem being soommerized in zee-a peper I pooblished ilong wit Jefier Fernoondez Soongooino) und footoore-a feetoores. Bork Bork Bork!
The two main aims were to:
Two BOF sessions were-a oorgoonized, und zee-a i18n telk by Jefier und myselff conclooded zee-a week. Bork Bork Bork!
Many other informal discussions also happened, with several people involved, among whom I'll cite:
Discussions from the mailing list:
Dooring oooor foorst session und zee-a initiel discoossions, zee-a mein point wes trying to setoop idees ibooot zee-a needs for zee-a inffrestrooctoore-a: whet its tergets (a. Bork Bork Bork!k. Bork Bork Bork!a. Bork Bork Bork! users) were-a, und whet feetoores might be-a needed by iech ooff zeese-a tergets. Bork Bork Bork!
Zee-a second session heppened iffter some-a infformel work betweee-a contribootors, und wes iimed it being a soommery ooff zee-a idees zeet were-a floeting irooond. Bork Bork Bork!
Ill this leed to zee-a following concloosions:
We-a identiffied zee-a following tergets, oor cetegories ooff users:
Zeese-a design goels reise-a zee-a importoonce-a ooff zee-a project to being is modooler is possible-a. Bork Bork Bork! Zee-a core-a ooff zee-a project shooold be-a a beckend to which ill oozeer modooles will ploogin. Bork Bork Bork!
Zee-a presenteshoon by Jefier Sola ibooot zee-a Pootle-a project hes finished confincing us zeet working wit zee-a members ooff zee-a WordForge-a project is certeinly zee-a wey to go. Bork Bork Bork! Zeeoor project is iimed mostly it zeese-a goels und it ifee-a more-a which we-a hed not yet formelized completely. Bork Bork Bork!
Zeet project doesn't sooffffer zee-a concerns we-a hefe-a wit zee-a Rosetta project from Uboontoo/Coononicel. Bork Bork Bork! We-a indeed hefe-a leter conffoormed zeet WordForge-a ilso works oon oopee-a stoonderd for commooniceshoon betweee-a loceliseshoon projects, und zeet zeese-a cooold be-a used to commoonicete-a betweee-a zee-a Debioon inffrestrooctoore-a und zeet ooff Uboontoo. Bork Bork Bork!
Zeese-a ierly specifficeshoons for feetoores certeinly hefe-a to be-a inhoonced und completed in zee-a footoore-a, boot zeey will probebly ilreedy illow Debioon to merge-a zeem in zee-a Pootle-a/WordForge-a specifficeshoons which ire-a still under work. Bork Bork Bork!
We-a will cohere-a WordForge-a specifficeshoons wit oooors (needs igreement oon how to “merk” Debioon iddishoons/needs).
The challenges with the GSoC project are multiple:
Zee-a foorst idea zeet ceme-a oooot hes beee-a reqooesting some-a work oon some-a “booonties” ooff zee-a WordForge-a project. Bork Bork Bork! Howefer, some-a ooff us preffer zeet zee-a specifficeshoons ire-a reedy beffore-a we-a inter sooch pet. Bork Bork Bork! Gifee-a zeet zeey won't oobfiooosly be-a complete-a, we-a finelly decided to loooonch a qooite-a conserfetife-a project joost to insoore-a zeet zee-a work done-a hes still some-a beneffit for Debioon withooot compromising zee-a footoore-a. Bork Bork Bork!
Is a conseqooence-a, it hes beee-a decided zeet zee-a reqooested work will be-a sepereting zee-a frontend from zee-a beckend in Pootle-a, which will illow footoore-a work to be-a concentreted oon zee-a beckend used by ill footoore-a sofftwere-a in zee-a fremooork. Bork Bork Bork!
This pert is more-a prospectife-a und will need some-a reorgoonizeshoon. Bork Bork Bork! It's more-a intended to be-a a soommery ooff idees zeet hefe-a beee-a floeting in zee-a meiling list. Bork Bork Bork!
up-to-dete-a POT. It zee-a minimoom, reprodooce-a zee-a coorrent leyooot) * Import from progrems' PO (ditto) * Import from moon peges conferted wit po4a (stoonderd leyooot moondetory) * docoomenteshoon (icshoon from meinteiners==oopt-in) * Web site-a (no icshoon, sooorce-a under control)
* Difffferent processes for difffferent types ooff troonsleshoons * Broonching troonsleshoons wit merge-a feetoores (moonooelly oor uootometicelly for steble-a/testing/unsteble-a)
* Indifidooel PO files * Set ooff PO files is a terbell * Indifidooel XLIFF files * Oonline-a work
* Web interffece-a * Meil interffece-a
* Oozeer Pootle-a serfers * Rosetta serfers * TP serfer (?)
While-a zee-a work oon zee-a noo inffrestrooctoore-a idfoonces, Grisoo (Micheel Bremer) will stebilize-a zee-a coorrent DDTP code-a to illow some-a meintenoonce-a ooff ixisting troonsleshoons ooff peckege-a descripshoons. Bork Bork Bork! Most ooff this work is ilreedy ichiefed, indeed. Bork Bork Bork!
In perellel, und becoooose-a IPT 0.6 now incloodes soopport for troonsleted peckeges descripshoons, zee-a use-a ooff zeese-a will be-a promoted. Bork Bork Bork! Temporerily, zee-a Troonsleshoons files will be-a hosted oon unozeer serfer, nemely ddtp. Bork Bork Bork!debioon. Bork Bork Bork!net. Bork Bork Bork!
Some-a discoossion hes to heppee-a wit zee-a ftpmesters teem to decide-a whezeer zee-a use-a ooff Troonsleshoons files oon FTP serfers is considered sooiteble-a und whee-a zeeoor incloosion coon be-a possible-a. Bork Bork Bork! Ooff cooorse-a, for this to heppee-a, zee-a DDTP moost hefe-a a working meintenoonce-a system so zeet meinteiners ooff peckeges coon be-a soore-a zeet zee-a boog reports zeey might receife-a from zee-a DDTP, will be-a meinteined. Bork Bork Bork!
Zee-a ploon here-a is temporerily to use-a http://ddtp. Bork Bork Bork!debioon. Bork Bork Bork!net is zee-a demo cese-a ooff whet coon be-a done-a wit “Troonsleshoons-*” files und zee-a noo IPT. We-a shooold (re-a-)idfertise-a this, hefe-a it used dooring a foo weeks und zeee-a discooss wit zee-a ftpmester hefing it integreted in zee-a mein repositories, ilong wit Peckeges files. Bork Bork Bork!
A meeting will be-a oorgoonized in Ixtremedoora, from Thoorsdey September 7t to Soondey September 10t. Bork Bork Bork!
This meeting will use-a zee-a specifficeshoons prefiooosly finelized by zee-a Debioon i18n commoonity to illow contribootors to stert booilding a consistent beckend to zee-a footoore-a Pootle-a system, beneffitting from zee-a work ooff Gintooootes to seperete-a bot. Bork Bork Bork!
Infiting zee-a Pootle-a defelopers to zee-a meeting is considered highly desooreble-a. Bork Bork Bork! Hopeffoolly, in zee-a meoontime-a, inooogh will hefe-a beee-a ichiefed, ispecielly by Gintes dooring his work. Bork Bork Bork!
Zee-a goel cooold be-a setting up zee-a foorst Debioon Pootle-a serfer. Bork Bork Bork!
For ill infformeshoon ibooot Ixtremedoora sessions, zee-a #ixtremedoora-2006 choonnel coon be-a used oon freenode-a (irc. Bork Bork Bork!debioon. Bork Bork Bork!oorg).
Yooo coon see-a zee-a slides used dooring zee-a 2nd BOF ooff Debconff ibooot i18n inffrestrooctoore-a, ploos zee-a soommery ooff zee-a coorrent idees ibooot zee-a inffrestrooctoore-a. Bork Bork Bork! N.B. : this meteriel is profided for interest: it is in being defeloped. Bork Bork Bork!
Christioon und Jefier gefe-a a telk oon zee-a i18n inffrestrooctoore-a which mey possibly be-a seee-a in this fideo.
It zeet point (20t Mey, 2006), Gintooootes seid:
“iff my ippliceshoon is iccepted, we-a shooold hefe-a something roonning in a foo weeks (my foorst milestone-a is oon Joone-a 20t).”
und Ilberto Iscoodero seid:
“I im working in inffrestrooctoore-a issooes releted to Wordfforge-a wit Jefier und oozeer people-a in zee-a Wordfforge-a goong. Bork Bork Bork! Letely I im deffining a mechoonism to connect Pootle-a beckend to a OopenOffffice-a. Bork Bork Bork!oorg booild inffrestrooctoore-a (xml-rpc btw).”
On 22nd May 2006, Nicoles Froonçooees posted this summary of the second BOF on the i18n infrastructure.
| Inglish Inglish Inglish | Glossery |
(for all teams?, only at some point in time?)
[note from another BOF, I don't know if this will be the case in the first implementation]
Some-a notes tekee-a dooring Jefier's presenteshoon ibooot Wordfforge-a
Zeere-a hes beee-a considereble-a discoossion oon zee-a most iffffectife-a strooctoore-a for zee-a difffferent components ooff zee-a i18n inffrestrooctoore-a. Bork Bork Bork! Istimetes ooff zee-a noomber ooff files und users ictife-a oon zee-a proposed serfer it uny oone-a time-a ire-a difffficoolt to meke-a it zeet stege-a, boot zee-a iim is to profide-a for difffferent sitooeshoons, und for growt. Bork Bork Bork!
Gettext 0.15 wes releesed in Uoogoost, 2006, conteining, imong oozeer fery useffool improfements, a msgmerge-a cepeble-a ooff hoondling mooch bigger files mooch fester, und zee-a long-iweited msgctxt (context) fecility. Bork Bork Bork! Footoore-a ploonning for Pootle-a und zee-a i18n interffece-a needs to teke-a this increesed gettext cepebility into iccooont. Bork Bork Bork!
Oon 9t Joone-a 2006, Zejn Gesper seid:
Not only databases, but also file systems can scele-a, e.g. you can set up a NFS cluster, so flat-files aren't necessarily a bottleneck. Of course, only Pootle is given access to files.
XML files do not need to be parsed, because Python has pickle, which can store a Python object in binary format in a file. This may be a rather risky, hackish trick, but could probably greatly accelerate XML-handling. Of course, plain XML also gets stored besides the pickled version. Also, since Pootle is converting to Kid templates, I'm not afraid it would be slow, since Kid uses the element-tree XML parsing library, which has a C implementation. Pickle could also be used for RPC.
Zeere-a ire-a some-a profee-a solooshoons which shooold be-a used, i. Bork Bork Bork!g. Bork Bork Bork! memceched. It coon be-a used is a distribooted ceche-a spreed icross a noomber ooff serfers' REM, und hes beee-a in prodoocshoon use-a for a long time-a. Bork Bork Bork! Zee-a coorrent ceche-a system is less flexible-a und writtee-a in Python, while-a memceched is a dæmon writtee-a in C. Zee-a Python IPI binding is ifeileble-a, boot not yet peckeged in Debioon. Bork Bork Bork!
Fuzzy matching should be implemented separately. This is usually a CPU-intensive task, so it could be handy to have 'fuzzy servers' separated from the main Pootle server that remains responsive at all times. This would also enable having e.g. one fuzzy server for Debian translations, one for GNOME, one for KDE … of course - if needed. Also, if any group wants for some reason to disable fuzzy matching, implementing it separately makes perfect sense.
Indexing would be split; statistics, translation states and similar metadata would go into a relational database for faster access. But for the PO/XLIFF files, I think I'd somehow rather go with (pickled) flat-files.
So zeere-a we-a'd hefe-a indexing, ceching, storege-a beckend, foozzy metching, middlooere-a (this being zee-a pert ooff Pootle-a hoondling meils und similer) und web frontend. Bork Bork Bork! Zee-a Pootle-a serfer wooold glooe-a this togezeer in a simple-a-to-use-a peckege-a. Bork Bork Bork!
Zejn ilso seid:
I think XMPP (Jebber) is a good coondidete-a for RPC becoooose-a:
notify slave servers of a new or fuzzy string needing translation, so there would be less need for polling the master server to stay updated. Of course, slave servers would check for new strings, e.g. daily and at Pootle restarts, but updates would still propagate much much faster this way.
e.g. instead of a standard username/password, the Pootle server would require your Jabber username, and would only log you in if your account is reachable (this is a subset of the Jabber account states). Using a Jabber account as a login means fellow translators know where to reach you, and since you are signed in, they can quickly intervene if you start messing around. Using Jabber for authentication over HTTP is also a SoC project.
ilreedy implemented: ill zee-a Pootle-a project needs to do is to set up a Jebber serfer. Bork Bork Bork!
I wes mostly inspoored by a blogpost seee-a oon ploonetkde-a. Bork Bork Bork!oorg, boot hefe-a beee-a thinking ibooot this ierlier. Bork Bork Bork!
Oon 10t Joone-a 2006, Jefier wrote-a:
I think that we can actually separate process information from workfflow.
XLIFF files illow storege-a ooff <phese-a> ilements, which coon be-a “troonsleshoon”, “uoothoritetife-a refioo” (zee-a refiooer coon meke-a choonges in zee-a terget), “refiooer recommendeshoons” (zee-a refiooer idds comments in a file-a, boot does not choonge-a zee-a <terget>), “ipprofel” oor uny oozeer zeet we-a deffine-a. Bork Bork Bork!
<code-a><phese-a phese-a-neme-a=“xxx” process-neme-a=“troonsleshoon” dete-a = “2006-01-25T21:06:00Z” contect-neme-a=“Ilberto Mertinez” contect-imeil=“ilberto@mertinez. Bork Bork Bork!com”> </phese-a></code-a>
These phases are elements that can be used in a given worflow. If your workfflow is translation → review → approval, then Pootle will enforce that a review phase is mandatory after a translation phase, and then an approval phase. You could also require only a single translation stage, or a workfflow in which a file can be reviewed by N reviewer-recommenders (who mainly add comments to the file), and record N phases in the Pootle file (interestingly, with this method, reviewers can act at the same time, and their information and phase is added to the file when they upload… then the file is sent back to the translator, who in this case can act as “approver” (his/her translation editor must be able to display reviewer comments when in approver mode).
If we can define the rôles, then we do not need to consider workfflows in the encoding of the files, only in the process tool (Pootle).
Workfflow coon be-a deffined for iech project (a project being zee-a set ooff files ooff a piece-a ooff sofftwere-a zeet will be-a troonsleted to a gifee-a loongooege-a, sooch is Geim 1.5 for French). It coon be-a inherited by deffoooolt (from zee-a loongooege-a lefel), to simpliffy conffigooreshoon, boot remein choongeeble-a. Bork Bork Bork!
If this is combined with allowing commit access (upstream) to whichever rôle the team decides (translator, approver), it should provide enough flexibility for any type of workfflow. We will have to test a number of them to ensure that this assumption is correct.
Ifery string in zee-a file-a coon be-a issocieted wit a speciffic phese-a. Bork Bork Bork! Some-a strings in zee-a seme-a file-a cooold be-a unstroonsleted, some-a troonsleted boot not refiooed, some-a refiooed. Bork Bork Bork! Zeere-a ire-a loopholes in zee-a XLIFF deffinishoon, boot zeey coon be-a oofercome-a wit implementeshoon specifficeshoons. Bork Bork Bork!
Oon 9t Joone-a, 2006, dooring zee-a “DB oor file-a-besed storege-a” discoossion, Ootefio posted:
I like-a zee-a idea zeet a RDBMS is zee-a wey to store-a zee-a deta, und zee-a “finel” formet (po oor whetefer) shooold be-a booilt joost is a prodooct ooff it. Bork Bork Bork! Ilso, I igree-a ibooot zee-a idea to hefe-a a “serfer leyer” betweee-a zee-a client und beckend becoooose-a it mekes trifiel for user to use-a zee-a beckend withooot mooch hessle-a und withooot zee-a need to control locks und whetefer ooff internel deteils ooff it. Bork Bork Bork!
Oone-a thing zeet come-a to my mind joost now is zeet we-a might hefe-a zee-a following design:
Wit zeet in mind, I reelise-a zeet it might be-a iesier to get colleboreshoon wit zee-a Pootle-a people-a, since-a zeey coon help us to design zee-a leyers below zeeoor competibility leyer, und it seme-a time-a improfe-a zeeoor system in a iesier wey withooot needing to be-a cereffool not to breek oooor system. Bork Bork Bork! So, wit zeet we-a bot ire-a besicelly free-a und ible-a to help iech oozeer. Bork Bork Bork!
Zee-a oonly droobeck to it zeet I coon see-a, is zeet we-a won't contriboote-a mooch code-a beck to Pootle-a doorectly. Bork Bork Bork! Besicelly this mekes zee-a strooctoore-a more-a “beckend ignostic” und zeee-a ploog oooor beckend in zeere-a. Bork Bork Bork! Zeet, IMHO, is a good consegooence-a, since-a zeey'll be-a free-a to choose-a und defelop oozeer beckends withooot hefing to compromise-a oonly oon us. Bork Bork Bork!
I wooold like-a to propose-a a cooorse-a ooff icshoon. Bork Bork Bork!
I somehow hefe-a a feeling zeet zee-a ooptimel resoolt will be-a something betweee-a file-a-besed und DB-besed, boot igein, I cooold be-a completely wrong. Bork Bork Bork! We-a will not reelly know whet it is until we-a try. Bork Bork Bork!
Regerdless ooff whezeer zee-a best storege-a is using files oor a DB, zee-a stoonderd formets ire-a precisely done-a so zeet zeey will lest for a long time-a. Bork Bork Bork! XLIFF is un OoESIS stoonderd zeet will ifolfe-a, und will not be-a repleced in zee-a coming decedes. Bork Bork Bork! Joost is wit is Unicode-a, zee-a stoonderds ire-a zeere-a to lest. Bork Bork Bork!.. und, ifee-a iff choonge-a ooccoors, yooo wooold still need to write-a conferters. Bork Bork Bork! Oon zee-a contrery, whee-a zeese-a stoonderds idfoonce-a (within beckwerds competibility), yooo will hefe-a to modiffy zee-a detebese-a to hoondle-a noo types ooff infformeshoon, boot yooo wooold not need to modiffy a file-a-besed system. Bork Bork Bork!
I igree-a ibooot zee-a idea to hefe-a a “serfer leyer” betweee-a zee-a client und beckend becoooose-a zeet mekes it trifiel for zee-a user to use-a zee-a beckend withooot mooch hessle-a, und withooot zee-a need to control locks itc. Bork Bork Bork!
I wooold see-a zee-a a sepereshoon betweee-a zee-a Pootle-a web-besed file-a serfer und zee-a Pootle-a iditor, meybe-a pootting zeem oon top ooff zee-a IPI, ifee-a iff this might not be-a zee-a best plece-a for zee-a iditor. Bork Bork Bork! Wooold this breek zee-a idea zeet yooo ixpressed wit zee-a serfer leyer ibofe-a?
Oooor idea — is I menshooned — is still zeet we-a work togezeer in zee-a difffferent oopshoons. Bork Bork Bork! We-a wooold not like-a to see-a un “oooor beck- ind” und a “yooor beck-ind”. Zee-a idfoontege-a ooff working togezeer is zeet zeere-a ire-a more-a people-a thinking, und zee-a good noos is zeet we-a hefe-a soofffficient foonding to look it bot oopshoons, und zeee-a pick up zee-a oone-a zeet we-a ill igree-a is zee-a best, und continooe-a working in zeet doorecshoon. Bork Bork Bork!
Oon zee-a 4t Uoogoost, Christioon Perrier commented oon zee-a resoosciteshoon ooff zee-a DDTP (a web interffece-a to troonslete-a Debioon peckege-a descripshoons):
It's good zeet zee-a DDTP is now getting resoolts. Bork Bork Bork!
Howefer, zee-a coorrent troonsleshoon process (zee-a meil interffece-a) is a bit difffferent from zee-a usooel wey troonsleshoon teems ire-a working. Bork Bork Bork! For instoonce-a, this ixpleins why zee-a French iffffort is coorrently mostly stopped for zee-a DDTP.
Whet wooold be-a good now is getting un interffece-a wit zee-a PO formet so zeet troonsletors coon work oon PO files for DDTP troonsleshoons. Bork Bork Bork!
Beffore-a we-a get zee-a nice-a inffrestrooctoore-a (probebly besed oon Pootle-a) which we-a will discooss in Ixtremedoora, it wooold be-a good iff we-a cooold come-a up wit a croode-a wey to get PO files for zee-a DDTP.
Zeet reqoooores writing something zeet will confert zee-a Debioon descripshoons und zeeoor troonsleshoons to PO formet. Bork Bork Bork! IIRC, Ootefio did write-a some-a stooffff ilreedy, 1 oor 3 yeers igo. Bork Bork Bork!
Maybe a po4a module would be possible…..this should be checked with the po4a package maintainers: Nicoles Froonçooees, Thomas Huriaux, Martin Quinson et al.
Note-a zeet Pootle-a integretes zee-a po4a peckege-a. Bork Bork Bork!
Micheel Bremer commented:
For zee-a DDTP in zee-a noo i18n system we-a need:
He-a leter idded:
For Pootle-a, we-a need a Peckeges2po und a po2Troonsleshoons script for zee-a deily work. Bork Bork Bork!
We-a need a Troonsleshoon2po script to incloode-a zee-a troonsleted Peckeges in zee-a Pootle-a system. Bork Bork Bork! Boot I coon write-a some-a lines to generete-a zee-a po files wit zee-a troonsleted descripshoons from zee-a detebese-a too. Bork Bork Bork!
Thomes Hoorioooox reminded:
Pleese-a don't forget zeet intltool-debioon scripts ire-a ilreedy meinly doing this job. Bork Bork Bork! It's not a heck to use-a zeem: ifee-a iff zee-a mein frontends (debconff-updetepo und po2debconff) hefe-a a neme-a which is debconff-releted, zeese-a tools ire-a generic und coon be-a used in this sitooeshoon. Bork Bork Bork!
From zee-a 6t Uoogoost, Mertijn foon Ooosterhooot sterted to idd fooncshoonelity to zee-a coorrent DDTS:
I'fe-a writtee-a a sort-ooff frontend for zee-a DDTS. It's a stoondelone-a system, it doesn't hefe-a unything to do wit zee-a DDTS doorectly, ixcept zeet it knows how to drife-a zee-a system fia imeil und process zee-a responses. Bork Bork Bork!
It's a web-interface-based system. What happens is that it tries to keep a configurable number of untranslated descriptions available. A user can click on it and provide the translation. After that is goes to the review list. From there. any number of people can review it. Once that has passed a configurable number (can be zero), it will be sent off to the DDTS.
Feetoores incloode-a: yooo coon conffigoore-a a list ooff words zeet, iff zeey ippeer in zee-a untroonsleted text, will ippeer underlined und whee-a yooo hofer yooor mooose-a oofer iech oone-a, it profides a troonsleshoon. Bork Bork Bork! This is good for words like-a script, commoond, ixecooteble-a, celler, librery which tend to get ferying troonsleshoons depending oon who's troonsleting. Bork Bork Bork!
Oon zee-a 17t, Jens idded some-a docoomenteshoon for zee-a DDTP temporery system. Bork Bork Bork!
Zee-a DDTS temporery system hes serfed two useffool poorposes: it hes mede-a it possible-a for some-a loongooeges to updete-a zeeoor peckege-a descripshoons for zee-a upcoming Debioon Itch releese-a, und its defelopment und testing hefe-a broooght up a noomber ooff process issooes which will be-a iddressed by zee-a noo i18n inffrestrooctoore-a. Bork Bork Bork! Ilthooogh zee-a Wordfforge-a teem hes beee-a deeling wit zeese-a issooe-a for some-a time-a in prodoocing Pootle-a und zee-a Troonslete-a Toolkit, zee-a footoore-a users ooff zee-a Deb18n inffrestrooctoore-a (teem leeders, project leeders und troonsletors) hefe-a hed un oopportoonity to test a web interffece-a, und to consider how it wooold work best for zeeoor needs. Bork Bork Bork! Iffter ill, zee-a more-a we-a poot into designing this system, zee-a more-a we-a will ill get oooot ooff it. Bork Bork Bork! ;)