104 lines
6.4 KiB
HTML
104 lines
6.4 KiB
HTML
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||
|
<html>
|
||
|
<head>
|
||
|
<title>Design Goals of Venice/Dynamo</title>
|
||
|
</head>
|
||
|
<body>
|
||
|
<h1>Design Goals of Venice/Dynamo</h1>
|
||
|
<em>Eric J. Bowersox, <<a href="mailto:erbo@silcom.com">erbo@silcom.com</a>> - May 2003</em>
|
||
|
<h2>Introduction - The Original Venice Goals</h2>
|
||
|
<p>As is well-known, the Venice Web Communities System was originally founded for the purpose of providing
|
||
|
code on which the new <a href="http://www.minds.nu">Electric Minds</a> server could be run. To this
|
||
|
end, it was designed along the lines of the CommunityWare platform, by Durand Communications, on which
|
||
|
Electric Minds was run for several years. (CommunityWare formed the nucleus of the WebbMe portal system
|
||
|
as well.) To that end, the original design goals of Venice looked like this:</p>
|
||
|
<ol>
|
||
|
<li>A replacement for the CommunityWare/WebbMe conferencing system</li>
|
||
|
<li>Java/JSP/servlets implementation running under Apache Tomcat, MySQL backend</li>
|
||
|
<li>Multiple communities hosted per server, each with multiple conferences
|
||
|
(and other features); users logged into one server can join multiple communities</li>
|
||
|
<li>Conferencing functionality similar to CW/WebbMe:
|
||
|
<ul>
|
||
|
<li>Linear topics composed of HTML messages</li>
|
||
|
<li>View topics by new messages/unread/all messages/hidden topics/archived topics</li>
|
||
|
<li>Topics can be deleted/archived/made read-only by the conference host</li>
|
||
|
<li>Topics can be hidden from a user's personal view</li>
|
||
|
<li>Individual posts can be "hidden" or "scribbled" by owner or conference host</li>
|
||
|
<li>Posts can be previewed, with spellchecking and HTML formatting</li>
|
||
|
<li>Files can be "attached" to posts (up to 1 Mb in size)</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li>Enhancements to existing conference features:
|
||
|
<ul>
|
||
|
<li>Full text search of posts within a conference</li>
|
||
|
<li>Conference-level "bozo filters"</li>
|
||
|
<li>Individual posts can be "nuked" without a trace by the conference host</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li>Later, replace other CW/WebbMe functions:
|
||
|
<ul>
|
||
|
<li>Activity logs</li>
|
||
|
<li>Instant messaging and chat (use Jabber)</li>
|
||
|
<li>Calendaring</li>
|
||
|
<li>Newsletters via e-mail</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li>Features from CW/WebbMe we <em>won't</em> do:
|
||
|
<ul>
|
||
|
<li>Web hosting</li>
|
||
|
<li>Web-based email</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
<li>Blue sky features:
|
||
|
<ul>
|
||
|
<li>Output uses XML and gets formatted into [X]HTML via XSLT; "themeable"/"skinnable" interface</li>
|
||
|
<li>Conferencing/other functionality available via XML-RPC or SOAP calls</li>
|
||
|
<li>News page creation (see Slash, Squishdot, Scoop)</li>
|
||
|
<li>Member trust metrics (see Slashdot "karma," Scoop "mojo," Advogato distributed trust metric)
|
||
|
<b><em>(Feature indefinitely shelved at the request of the EMinds community)</em></b></li>
|
||
|
<li>User diary pages (see Advogato, Kuro5hin)</li>
|
||
|
<li>Moderated discussions (see Slash, Scoop)</li>
|
||
|
<li>Collaborative database facility (see Wiki, Everything2)</li>
|
||
|
<li>Content management/distributed publishing</li>
|
||
|
</ul>
|
||
|
</li>
|
||
|
</ol>
|
||
|
<h2>Evolution of The Original Venice Code</h2>
|
||
|
<p>As time went on and the Venice code was put to use on Electric Minds and elsewhere, gradually, the enhanced
|
||
|
feature set described in "Enhancements," above, was implemented, as well as some additional enhancements (user
|
||
|
photos in posts, some limited customization capabilities). This was in response to the needs of Electric Minds
|
||
|
and other communities</p>
|
||
|
<p>Perhaps the biggest change, however, was a changeover from the original UI front end, which used a great many
|
||
|
"magic servlets," to a generalized system which employed a scripting engine built into Venice (actually, the
|
||
|
Bean Scripting Framework, which supports many different scripting languages), so that UI-level operations could
|
||
|
be written as scripts and executed directly by means of a single servlet. The JSP-based display front ends, too,
|
||
|
were updated, making heavy use of JSP tag libraries to minimize the amount of embedded code on a page.</p>
|
||
|
<p>A partial XML-RPC API was also implemented, and the "mailgate" program was written to take advantage of this,
|
||
|
providing a gateway from a mailing list to a Venice conferencing topic, with some success.</p>
|
||
|
<h2>Dynamo - The Next Leap Forward</h2>
|
||
|
<p>Currently, the Venice code is being rewritten to be even more modular than before, carrying the advantages
|
||
|
of the modularized, scriptable UI into other aspects of the code. As part of this effort, the lower-level
|
||
|
support elements of the application are being factored out into a code framework referred to as "Dynamo" (for
|
||
|
"DYNAMic Objects"). The goals of the new Dynamo-based Venice are as follows:</p>
|
||
|
<ol>
|
||
|
<li>Even greater modularity than the original Venice, including dynamically-loadable modules. One should
|
||
|
be able to add a new service to Venice simply by dropping a JAR file into a directory on the server and
|
||
|
performing an installation process from within Venice's administrative UI.</li>
|
||
|
<li>Replacement of the JSP front-ends, which involve a high degree of overhead as well as the need to employ
|
||
|
external access protection to prevent them from being invoked directly by an end-user. Instead, a solution
|
||
|
based on the Velocity template system will be employed.</li>
|
||
|
<li>Refactoring of database access, to eventually allow the use of databases other than MySQL, especially
|
||
|
ones which employ stored procedures.</li>
|
||
|
<li>Improved search capabilities for posts, possibly employing the Lucene full-text search engine.</li>
|
||
|
<li>Shifting of configuration information from XML configuration files to the database, where it can be
|
||
|
modified without bringing down the server. A new "property" storage system will be employed for much of
|
||
|
this information.</li>
|
||
|
<li>Replacement of the original Venice security model, which employed a somewhat-confusing system of "security
|
||
|
levels." Instead, a more modern ACL-based system will be employed, for greater granularity.</li>
|
||
|
<li>Replacement of the front-page publishing model to allow people other than administrators to "publish"
|
||
|
posts there. Instead, a system of "channels" will be created, with each channel having its own ACL
|
||
|
to permit other people to access it.</li>
|
||
|
</ol>
|
||
|
</body>
|
||
|
</html>
|