incubator-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Gruno <>
Subject Assistance appreciated:
Date Thu, 12 Jul 2012 09:42:44 GMT
Hello everyone,

I've been put in charge of building, a new
commenting system that projects can use for adding comments to any page
they want to. If you haven't heard about this yet, or need an
introduction to it before reading on, please take a look at

So far, so good, it's up and running, but a second set of eyes wouldn't
hurt, so I'm asking if there's anyone interested in either reviewing the
code or just helping out managing the site.

Some information about the system:
It's built in Lua ( ) and runs via an Apache HTTPd
module called mod_pLua ( )
which integrates Lua with the HTTPd server's functions. It currently
runs on Lua 5.1, but should it be necessary, we'll upgrade to either
LuaJIT 2 or Lua 5.2 - the scripts are compatible with all versions. The
database backend is MySQL (currently using MyISAM for the comments db),
managed via HTTPd's mod_dbd. Current internal response times indicate
that we can handle a lot of projects (up to 50 million page visits per
day), but as the number of comments go up, this figure will very likely
drop as 90% of what's going on is pure database interaction, and some
optimizations on the database will have to be made. Any suggestions
towards this would be greatly appreciated, as I don't know a whole lot
about database optimizations apart from "moar RAM!". The current
configuration is whatever is default for a freshly built MySQL server on
FreeBSD (i.e. I don't know).

The source code for this project is available at
and probably requires some introductory knowledge of mod_pLua if you're
going to review it, but it's written in a very simple way, so even
people with php, perl, python etc skills should be able to understand
what's going on. For those with Lua knowledge, the added
functions/tables in mod_pLua can be found at
(except for the string.md5 function which isn't documented yet)

If you want to help out managing the site, you can reply here or on IRC
or wherever infra allows, and we'll see if we can hash out something.
Note that since this is an infra-managed project, it's completely up to
infra to decide who gets to manage the site, not me :). Managing the
site will mean administrative access to the control panel, which will
include duties such as checking logs for irregularities, setting up
sites for people who don't know how, enabling/disabling features (or
shutting down a comment site), promoting/demoting/deleting users and so on.

If you're interested in reviewing the code, the following scripts could
use a checkup:

- common.lua: The general, all-purpose function library and initializer
for all scripts

- add_comments.lua: The script for adding new comments to the db

- moderate.lua: The script for on-the-fly moderation of comments (this
is the one activated when you moderate a comment on the sites that have
comments enabled)

- panel.lua: The control panel of the site. This script is perhaps a bit
cluttered, and some cleaning up would be nice.

- portal.lua: Manages logins for regular users as well as user
registration and email validation. It has a few known kinks that,
although they pose no threat at all, will need to be ironed out in time
for the sake of neatness.

- show_comments.lua: This is the script that sends the array of comments
available to the JavaScript library, builder.js, which displays comments
on the page. It makes (sort of) use of a caching function in
comments_cache.lua, which is currently disabled since it's silly, but
should at some point be made to work. Any suggestions on how to properly
cache comments without ending up with new comments not showing for 10-20
seconds would be greatly appreciated.

So, that's about it for now. Lastly, if you're more interested in
actually _using_ this system for your project, don't hesitate to either
send an email to infra or file a JIRA ticket and you'll get set up as
soon as possible.

With regards,

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message