From Fedora Project Wiki

zk-Simon Sparks: We're very interested in giving you a hand if we can 11:55
Sparks zk-Simon: So I'd definitely like to document Zikula as much as possible so we can see if this is a good solution. 11:55
zk-Simon Sparks: I've always been a fan of Fedora too, so I would like to give something back. 11:55
* Sparks brings up his CMS Template 11:56
-!- stickster_afk is now known as stickster 11:57
* stickster puts Rahul's content in F11 Alpha release notes one-sheet page 11:57
zk-Simon Sparks: would you like me to go through each point in turn? 11:58
Sparks zk-Simon: Let me ask you a few questions, first, and if you have anything else that I miss to add please let me know. 11:58
zk-Simon Sparks: ok, shoot :) 11:59
Sparks stickster: I'm going to finish wiping those pages today. 11:59
stickster Sparks: That would be super, thanks for helping out with that! 11:59
Sparks stickster: Good golly... I renamed 48 pages last night. 12:00
Sparks stickster: That was insane! 12:00
stickster Awesome 12:00
* stickster wonders if ianweller ever get round to running the wikibot for renaming the stuff in wikirename.git 12:00
Sparks zk-Simon: Okay, can you give me a brief summary of your CMS, what it is designed to do and why it would be a good choice for Fedora? 12:00
zk-Simon Sparks: sure, give me a sec 12:01
Sparks zk-Simon: No problem. 12:01
Sparks stickster: We need to get ianweller a ticketing system. 12:01
Sparks :) 12:01
zk-Simon Sparks: I don't know how much you know about CMS history, but the Zikula project has been around in one form or another since 2001, 12:04
previously as PostNuke. Since the PostNuke days we've completely rewritten the core from the ground up, trying to keep a nice balance
between practicality, performance and good architecture design. There's a strong API, we've had templating for years so output is easily
modified by anyone who k
zk-Simon Sparks: Many of the things we initially had as a differentiating factor, i.e APIs (most PHP CMSs didn't even have this when PostNuke 12:06
started out), templating and so on are now in every CMS on the market. One thing we have maintained is the security focus, and I think we
have that still over competitors.
Sparks zk-Simon: Great. I think the first paragraph got cut off. ...modified by anyone who...? 12:07
zk-Simon Sparks: Now, the obvious competitors that come to mind like Joomla and Drupal will have more modules, we can't claim to have such a large 12:07
backing (though the community is big), but I can honestly say that I have never wanted for a module to build one of my sites - and I must
have built hundreds. We are lucky in that a few super-powerful modules are flexible enough to cover 90% of situations.
zk-Simon ... modified by anyone who knows a bit of HTML and CSS, and our biggest thing is enterprise level security 12:08
Sparks zk-Simon: Excellent! 12:09
stickster Sparks: Actually, having a fedora-wiki ticket system might not be a bad idea if there are going to be things only paritcular people can do 12:10
with the wiki.
Sparks stickster: Yeah. 12:11
Sparks zk-Simon: What is the project website for Zikula? 12:11
zk-Simon Sparks: For Fedora, I think the highlights are the security, our caching system (based on smarty), the fine grained permissions system, 12:12
custom authentication and of course we are modular. The long, 8 year history tells you we're not going to disappear on you, Zikula will be
around for a long time yet.
zk-Simon Sparks: - please excuse the slightly disorganised content, we recently refreshed our site and we're still in the process of 12:13
updating the content and navigation to our liking.
Sparks zk-Simon: No problem. Websites are fluid. 12:13
Sparks zk-Simon: What are the hardware requirements for Zikula? 12:14
zk-Simon Sparks: Apache/IIS (recommend Apache to get the best friendly URLs), PHP 5+ (though our 1.x series will work on PHP 4 I can't in good 12:15
conscience recommend using it) and MySQL 4 or 5 (preferably 5)
zk-Simon Sparks: That's it. Gettext for the upcoming 1.2 version as an extension to PHP 12:15
Sparks zk-Simon: Excellent. 12:16
Sparks zk-Simon: Now the fun part. These are feature questions that we had outlined as items that we need or want. 12:17
Sparks zk-Simon: Does Zikula have a good security record? 12:17
zk-Simon Sparks: Well, I can't point you to vulnerability stats for Zikula, we've never had a security flaw reported. PostNuke may have some 12:19
relevance, and we've had very few vulnerabilities there as well
Sparks zk-Simon: Yeah, I think someone brought that to my attention yesterday. 12:19
Sparks zk-Simon: How proactive is your developer community to fixing issues? 12:20
zk-Simon Sparks: The code has been reviewed by an automated scanning tool, output compares very favourably with e.g a comparable Joomla release. We 12:20
have an arrangement with a third party who reviews our code, and he's said it's clean though it is constantly under review
Sparks zk-Simon: Excellent 12:21
zk-Simon Sparks: Security issues are usually fixed and patched within 48 hours, often 24. If they come to us first through our contact forms then 12:21
we usually fix them before they get near the advisory sites.
Sparks zk-Simon: Our authentication system (FAS) utilizes a application called json as the interface. Can Zikula use this to authenticate? 12:22
zk-Simon Sparks: We have what we call Auth Modules, which allow us to authenticate against external sources. This can either take the details 12:24
entered on the site, and send them elsewhere for checking, or alternatively I have previously redirected people to an external page to
authenticate and the result of that is passed back to Zikula.
zk-Simon Sparks: I've personally implemented a system to authenticate against 'Raven' which is the authentication system used at the University of 12:25
Cambridge here in the UK, and we have an OpenID module too
Sparks zk-Simon: Okay, I'll put those notes down and I'll let the Infrastructure Team see if they can do that. 12:25
Sparks zk-Simon: OpenID might work as well. 12:25
Sparks zk-Simon: How about RSS feeds? 12:26
zk-Simon Sparks: Providing, or using? 12:26
Sparks providing, I think 12:27
zk-Simon Sparks: We have a special theme which outputs RSS headers, and then any module can provide RSS templates for their list output. If a 12:27
module doesn't have it, 20 minutes work adding templates gives you a feed.
Sparks zk-Simon: Okay, that works. 12:28
Sparks zk-Simon: We have a translator workforce. How would Zikula handle translations? 12:28
zk-Simon Sparks: This is the one I wanted to talk about. With 1.2 (in development), our core at least is translated through gettext. That would be 12:31
any strings inside the core, e.g status messages and the like
zk-Simon Sparks: Content is a bit different. We have on our roadmap a plan to provide a generic way of translating content, however it's not there 12:33
yet. So, translations are dependent on the module you use at the moment. I realise that might not be ideal, but presumably you would be
using one main module for most content, so we could code up a better translations interface for one or two modules if it turns out to be a
zk-Simon Sparks: how does your workflow for translations go at the moment? 12:34
Sparks zk-Simon: Well... There is a mixed answer because it really isn't standardized. 12:35
Sparks zk-Simon: Currently they are listed along with the other languages. 12:35
Sparks zk-Simon: I think what we would like is to be able to select the language the person wants to read and those would be the ones they are 12:36
presented to. stickster probably has a better idea, however.
Sparks zk-Simon: We can probably address this as a group to get ideas, though. 12:37
zk-Simon Sparks: That is the way the system works at the moment from a user perspective 12:37
Sparks zk-Simon: Cool. What about output for Transifex? 12:37
zk-Simon The language is selectable on registration and for unregistered users is stored for the duration of the session 12:37
zk-Simon Sparks: THis is a system I don't know much about - could you enlighten me a bit? 12:38
Sparks zk-Simon: Sorry, I can't. I'm not familiar with it, either. 12:39
Sparks zk-Simon: I'll just leave that one blank for now and we can come back to that later once I get a better explanation. 12:39
Sparks zk-Simon: Probably a big one is the ability to manage content workflow. 12:40
zk-Simon Sparks: Ok, well with some more info I'll be able to comment on our ability to support it 12:40
Sparks zk-Simon: What we would like to do is have writers write, then pass the document for an editor to look over, and then have the editor be able 12:40
to publish.
zk-Simon Sparks: Our main content modules are workflowed as you describe 12:40
Sparks zk-Simon: Excellent. Do you ahve an interal version control with rollback capability? 12:41
Sparks s/interal/internal 12:42
zk-Simon Sparks: Absolutely, in our most complex module a full revisions hisotry is kept 12:42
Sparks zk-Simon: How about content expiration. Can you set a date and time for a certain file to expire and be removed from pubic view? 12:43
zk-Simon Sparks: Yes, pages can have a 'go offline date', certainly 12:44
Sparks zk-Simon: How about the other way around? Can you have a go live date and time? 12:44
zk-Simon Sparks: I believe so, though that's a feature I've not used. If not, can be added in a few minutes 12:45
Sparks zk-Simon: Okay, it wasn't on my list but it just hit me as something that might be useful. 12:45
Sparks zk-Simon: Going back to the content workflow, can you set multiple roles (writer, editor, etc) to a single user? 12:46
zk-Simon Sparks: We have a group/permissions system, and any user can be a member of multiple groups. The default would be comment access, allowing 12:47
someone to submit pages for approval, rising to edit/moderate access for editors, and delete access for those who are permitted to delete
things. Full admin access would be restricted to those with a real need to access everything.
Sparks zk-Simon: Excellent. 12:48
Sparks zk-Simon: Can you categorize or tag content for organization? 12:48
zk-Simon Sparks: We have two systems, a site wide cateogries system (not yet supported by all modules, but by quite a few), where any content from 12:49
any module can be categorised in a category tree, or alternatively a tagging system with your standard tag cloud etc.
Sparks zk-Simon: Excellent. I only have five more quick questions for you. 12:50
Sparks zk-Simon: How well does your search work? 12:50
zk-Simon Sparks: Two systems, the old system is database-based and IMO does not work that well. We have a new system from the GSOC to replace it 12:52
based on Zend Search Lucene which is a proper indexer and very nice. Needs some further development but is in a basically working state.
Sparks zk-Simon: I'm guessing that Zikula was a CMS from the beginning? 12:53
-!- stickster is now known as stickster_food 12:55
* quaid pops his head in 12:55
quaid woah,that's some buffer to read ... 12:55
quaid Sparks, zk-Simon : I 12:55
quaid 'll read the buffer, but let me know if there are any standing questions ... 12:55
Sparks quaid: Maybe you could comment on the tranlation portion of how we want the CMS to work. 12:56
Sparks quaid: (All of this is going into the wiki. 12:56
zk-Simon Sparks: Yes, we were orignally a CMS/portal, now we're an application framework and do lots of different things, but we still have very 12:57
strong content management in the background
zk-Simon quaid: Sorry, I can be a bit verbose at times 12:57
-!- abadger1999 [n=abadger1@] has quit [Read error: 60 (Operation timed out)] 12:57
Sparks zk-Simon: Okay. How is the data stored? Is the data protable to another CMS? 12:57
-!- biertie [] has joined #fedora-docs 12:58
zk-Simon Sparks: It's just in MySQL tables. We'll have, in 2.0 a generic import/export XML framework, but there's no 'export this to x' 12:59
functionality (I don't know of any system with this sort of thing). Data structures are as you'd expect, so with some effort you could
port it all.
Sparks zk-Simon: That's true. As long as it isn't encrypted in some manner... :) 12:59
zk-Simon Sparks: As it's just a MySQL database you wouldn't have trouble extracting the data, it's a long way from a proprietary flat file or 13:00
something weird like that. Something I could have mentioned earlier is that we support mutliple databases (e.g. Postgres), however I would
recommend MySQL as that gets the most extensive testing by some distance.
Sparks zk-Simon: Can Zikula make certain pages or content areas static/non-database driven? 13:01
* quaid almost caught up, 1 more min. 13:01
quaid ok! 13:03
quaid working backwards quickly ... 13:03
zk-Simon Sparks: Not completely, no. The caching system either allows full page or page-element caching. Full page caching will reduce SQL queries 13:03
to 3 or 4, element caching depends on the module. If you were using a particular Short-URL system we could make the pages completely
static without breaking anything
quaid I think the plan from Fedora Infrastructure is to let the CMS team have a slightly stand-alone area 13:03
quaid so having e.g. MySQL is fine; it doesn't to be in the main Infra dbase. 13:03
Sparks quaid: I was told by Infra that MySQL or PostgreSQL was fine. 13:04
quaid Sparks: I forget if the static stuff is MUST or SHOULD, but we've largely eliminated the need for MUST with proxy caching. 13:04
quaid Sparks: cool 13:04
Sparks quaid: It is in the "must" list. 13:04
quaid zk-Simon: so let me explain the l10n a bit more ... 13:04
quaid zk-Simon: the deal is, we author in DocBook XML with the source in an SCM (git mainly, some svn) 13:04
quaid translators grab the POT file via (Transifex runs there) 13:05
zk-Simon Sparks: Depending on your infrastructure, with full page caching on Zikula could handle a lot. 13:05
quaid and they submit back through the same interface to the SCM. 13:05
quaid when we build docs, our toolchain uses xml2po to interleave the translated strings from the PO files with the XML 13:05
quaid and we get translated HTML and PDF 13:05
quaid so the basic idea with a CMS is to treat those as language-specific blobs 13:06
quaid we just pull them in and publish them so that Apache can serve the proper one by browser lang setting. 13:06
zk-Simon quaid: Right, how does this work along with the revisions control etc that you wanted? 13:07
quaid a Ultimate Grail solution would be a CMS that could use the XML and PO/POT files to build itself, so it could present DocBook built PDFs but 13:07
not have to deal with the same HTML (or something).
Sparks quaid: Thanks... I didn't remember that. 13:07
quaid zk-Simon: well, we've always just had it manually 13:07
quaid 13:07
quaid when we do an update, we'll push all that down and mark it as original content (10.0.0) and put the latest at the top (10.0.1 for example.) 13:08
quaid we don't update this content _that_ often ... maybe once or twice a release. 13:08
quaid but we could do it more if it were easier; in that case, we'd want it obvious which version was what. 13:08
zk-Simon quaid: We'd be talking a custom built interface for something like that then, I can't think of any generic frameworks for such a process. 13:09
quaid zk-Simon: fwiw, we are totally flexible in the what and how; maybe we're not looking at the problem the right way due to having done it the 13:09
hard way for so long :)
quaid maybe we don't want to expose older versions, for example -- why install buggy software? why use buggy documents? 13:10
quaid zk-Simon: how does Zikula handle document blogs? I.e., I've got an document I want to publish in this CMS, etc. 13:11
zk-Simon It's a difficult one actually, I'd have to have a think. 13:11
quaid ok 13:11
quaid it may be that we want to just use the native gettext, if we can figure out what to do with the XML 13:11
zk-Simon quaid: Depends how you want it to work, we have a standard WYSIWYG editor with the usual copy and paste functions, but there's also a 13:12
module called 'MediaAttach' which allows uploading of e.g. PDFs and provides inline reading/previewing.
quaid still, we've been looking forward to having downloadable PDFs for a while; people also like tar/zip archives of the HTML. 13:12
quaid does MediaAttach have a way to associate it with a workflow? 13:13
quaid that is, can a MediaAttach(ed) item be put in a workflow like a regular chunk of content? 13:13
-!- abadger1999 [n=abadger1@nat/redhat/x-8f64f9c0a0b4d61c] has joined #fedora-docs 13:13
zk-Simon quaid: Yes, absolutely. Through the WYSIWYG you can click a button, browse through available media and insert a tag - this then pulls in 13:13
the media attach item when displaying the page
zk-Simon Bad example, but the only one that springs to mind would be: - the video and pcitures are 13:15
inserted into the cotent from mediaattach using a visual editor. That was authored by some school teachers after a couple of hours
-!- LinuxCode [n=Titan@fedora/LinuxCode] has joined #fedora-docs 13:16
quaid so we might be looking at customizing or making a new module to deal with HTML as blobs. 13:18
zk-Simon quaid: I wouldn't necessarily start completely from scratch, because we already have a module that does >90% of what you need with 13:18
revisions and so on. How we'd integrate the translations system to that would be the key.
quaid zk-Simon: the main site under is going to need a CMS; we're doing a sort-of proving grounds with; so 13:19
far it seems clear Zikula could do all that needs, it's a much more classic example of a website built with a CMS.
* quaid was just thinking outloud :) 13:19
zk-Simon I've built websites with complex translation flows before - but sadly it seems there is no holy grail, everyone needs a solution that works 13:20
slightly differently
quaid aye 13:20
quaid still, one thing about our need ... 13:20
quaid Transifex is gaining wider usage and acceptance 13:20
quaid and our workflow is built from how we translate packages 13:20
quaid so it's possible that work here will actually be useful to other e.g. open source projects :) 13:20
zk-Simon quaid: We have been looking at our translations system for a while, so a bit of experience on best-practice will be helpful for sorting it 13:21
quaid Transifex is mainly an interface in front of N version control systems, which can be hosted anywhere; the SCM admin just adds a 'transif' user 13:21
that has permissions to add/edit PO files and the LINGUAS file.
quaid so for example, Zikula could extract strings to a POT file and put it in git, then Transifex would handle all the translations, and you'd use 13:22
gettext to build the translated pages with the PO files from git.
quaid (we could use an SCM at so that could be external and specific to the project, to make it a more reusable hack) 13:23
zk-Simon Your best case workflow? Write in English docbook, commit to SVN, export to HTML/PDF, upload to website? Translators use transiflex to 13:23
translate English, export and this is automatically associated with the English content on the website?
zk-Simon I'd need to be clear on exactly how it should work before I could think about the solution to the problem :) 13:24
zk-Simon I'll be back in 5 minutes, apparently I'm wanted 13:25
quaid zk-Simon: I think you have that best case correct, although I think there is some flexibility in the end points -- the association with a 13:26
source version.
quaid that is, English isn't always going to be the original language. 13:26
quaid the automatic association is more with a specific content area (RElease Notes, installation guide, user guide, etc.) 13:26
quaid i.e., is the container for release notes 13:27
quaid release-notes/f11 is the container for Fedora 11 released notes 13:27
quaid within that final container is N language-specific versions of the release notes 13:27
quaid ... and they could get updated with fresh content individually, so we could have an updated english and spanish, with the others having the 13:28
previous version of content.
* quaid has to do some stuff, will check back in a few too 13:28
-!- stickster_food is now known as stickster 13:28
Sparks quaid: Do you have any other questions? 13:28
Sparks quaid: I think I'm out. 13:28
zk-Simon Back. Ok, I'll consider on that and see if I can figure a solution 13:30
Sparks zk-Simon: Is there a good way we can contact you (email?) that I can put on the wiki? 13:31
zk-Simon is best for Zikula-related stuff. I can drop into IRC whenever if you'd like me to answer questions in real time again. 13:32
Sparks zk-Simon: That would be great. We have our Docs Project meeting on Wednesdays at 1900 UTC. 13:32
Sparks zk-Simon: Those meeting are held in #fedora-meeting. 13:32
Sparks You'll see the post I'm going to make on the listserv. 13:33
zk-Simon Ok, I'm happy to drop in if you feel it's helpful 13:33
Sparks zk-Simon: I appreciate you taking time to talk with quaid and I today. 13:33