<?xml version="1.0"?>
<rss version="2.0">
<channel>
<link>http://dev.helma.org/</link>
<title>helma.org</title>
<description>Updates for helma.org</description>
<item>
<link>http://dev.helma.org/ng/Persistence+API/</link>
<title>Persistence API</title>
<description>&lt;div class=&apos;toc&apos;&gt;&lt;h3&gt;Contents &lt;span class=&apos;editlink&apos;&gt;[&lt;a  href=&apos;#&apos; onclick=&quot;toggleElement(&apos;toclist&apos;, this, &apos;show&apos;, &apos;hide&apos;); return false;&quot;&gt;hide&lt;/a&gt;]&lt;/span&gt;&lt;/h3&gt;&lt;ul id=&apos;toclist&apos;&gt;&lt;li&gt;&lt;a href=&apos;#Currentefforts&apos;&gt;Current efforts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#QueryAPIdesign&apos;&gt;Query API design&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&apos;#PriorArt&apos;&gt;Prior Art&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;h3&gt;Current efforts&lt;a name=&apos;Currentefforts&apos; href=&apos;http://dev.helma.org/ng/Persistence+API/#Currentefforts&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://github.com/robi42/dbstore/tree/master&quot; class=&quot;externalLink&quot;&gt;Hibernate wrapper for Helma NG&lt;/a&gt; and &lt;a href=&quot;http://github.com/robi42/blog-ng/tree/master&quot; class=&quot;externalLink&quot;&gt;demo app&lt;/a&gt; by Robert Thurnher&lt;/li&gt;&lt;li&gt;Helma NG &lt;a href=&quot;http://dev.helma.org/ng/helma.filestore/&quot; class=&quot;wikiLink&quot;&gt;filestore module&lt;/a&gt; and &lt;a href=&quot;http://github.com/hns/helma-ng/tree/2ee6966a4ca6f27437c197cf769bf926a528eafc/apps/storage&quot; class=&quot;externalLink&quot;&gt;demo app&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Google App Engine &lt;a href=&quot;http://github.com/hns/helma-ng/blob/e102a1982e25069489c5efcd14fb829fb66fa0c9/modules/helma/googlestore.js&quot; class=&quot;externalLink&quot;&gt;datastore module&lt;/a&gt; and &lt;a href=&quot;http://github.com/hns/helma-ng/tree/35d42b5ca2f008fc00e2529d7fedea286acb1323/apps/googlestore&quot; class=&quot;externalLink&quot;&gt;demo app&lt;/a&gt; (&lt;a href=&quot;http://helma-storage.appspot.com/&quot; class=&quot;externalLink&quot;&gt;running on App Engine&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://github.com/leobm/padded-ng/tree/master&quot; class=&quot;externalLink&quot;&gt;padded-ng&lt;/a&gt; is a CouchDB client by Jan-Felix Wittmann.&lt;/li&gt;&lt;li&gt;Liam Staskawicz is working on a &lt;a href=&quot;http://bitbucket.org/liamstask/mongolovehelma/&quot; class=&quot;externalLink&quot;&gt;Helma NG module&lt;/a&gt; for &lt;a href=&quot;http://www.mongodb.org/&quot; class=&quot;externalLink&quot;&gt;MongoDB&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Query API design&lt;a name=&apos;QueryAPIdesign&apos; href=&apos;http://dev.helma.org/ng/Persistence+API/#QueryAPIdesign&apos;&gt; &lt;/a&gt;&lt;/h3&gt;
Collecting links of prior art and to collect more ideas on this.
&lt;h4&gt;Prior Art&lt;a name=&apos;PriorArt&apos; href=&apos;http://dev.helma.org/ng/Persistence+API/#PriorArt&apos;&gt; &lt;/a&gt;&lt;/h4&gt;
&lt;ul&gt;&lt;li&gt;MongoDB&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.mongodb.org/display/DOCS/Advanced+Queries&quot; class=&quot;externalLink&quot;&gt;A Developer&apos;s Tour - Advanced Queries &lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://www.mongodb.org/display/DOCS/Searching+and+Retrieving&quot; class=&quot;externalLink&quot;&gt;Developers&apos; Guide - Searching and Retrieving &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;App Engine Datastore &lt;a href=&quot;http://code.google.com/intl/en/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Query.html&quot; class=&quot;externalLink&quot;&gt;Low-level API - Query &lt;/a&gt;&lt;/li&gt;&lt;li&gt;DataMapper - &lt;a href=&quot;http://datamapper.org/doku.php?id=docs&quot;&gt;http://datamapper.org/doku.php?id=docs&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Ruby-based ORM that provides nice modules that a variety of backends (rdbms and others) can mix in to provide common features like validation, lazy/eager loading, in addition to a nice query api&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;Mozilla ServerJS &lt;a href=&quot;https://wiki.mozilla.org/ServerJS/RDBMS&quot; class=&quot;externalLink&quot;&gt;Relational Database Interface &lt;/a&gt;&lt;/li&gt;&lt;li&gt;Persevere &lt;a href=&quot;http://docs.persvr.org/documentation/jsonquery&quot; class=&quot;externalLink&quot;&gt;JSONQuery &lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
</description>
</item>
<item>
<link>http://dev.helma.org/ng/Middleware/</link>
<title>Middleware</title>
<description>&lt;p&gt;Middleware is feature of the Helma NG webapp framework that provides a simple interface to inject additional code between the web server and the web application. Middleware uses the same calling conventions as web app actions: a function that takes a Request object as argument and returns a Response object. &lt;/p&gt;

&lt;p&gt;Since middleware wraps the web application (and any middlware stacked upon it), it is in full control of how the request is processed. &lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Inspect and modify the request object before processing it further&lt;/li&gt;&lt;li&gt;Decide not to pass the request on, returning its own response instead&lt;/li&gt;&lt;li&gt;Inspect and modify the response obtained from the application&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Middleware is configured in an exported Array called &lt;code&gt;middleware&lt;/code&gt; in the app&apos;s &lt;code&gt;config&lt;/code&gt; module. By convention, the webapp looks for a function called &lt;code&gt;handleRequest&lt;/code&gt; in middleware modules. &lt;/p&gt;

&lt;p&gt;The &lt;code&gt;request&lt;/code&gt; argument contains a &lt;code&gt;process&lt;/code&gt; method that is used to pass the request on in the middleware chain. Thus, a middleware implementation that just passes on the request might look like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  exports.handleRequest(req) {
    return req.process();
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Have a look at the &lt;a href=&quot;http://github.com/hns/helma-ng/tree/master/modules/helma/middleware&quot; class=&quot;externalLink&quot;&gt;modules/helma/middlware&lt;/a&gt; directory for the standard middleware currently shipping with Helma NG.&lt;/p&gt;

</description>
</item>
<item>
<link>http://dev.helma.org/docs/Documentation/OverviewProposal/</link>
<title>OverviewProposal</title>
<description>&lt;div class=&apos;toc&apos;&gt;&lt;h3&gt;Contents &lt;span class=&apos;editlink&apos;&gt;[&lt;a  href=&apos;#&apos; onclick=&quot;toggleElement(&apos;toclist&apos;, this, &apos;show&apos;, &apos;hide&apos;); return false;&quot;&gt;hide&lt;/a&gt;]&lt;/span&gt;&lt;/h3&gt;&lt;ul id=&apos;toclist&apos;&gt;&lt;li&gt;&lt;a href=&apos;#Tutorials&apos;&gt;Tutorials&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Documentation&apos;&gt;Documentation&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&apos;#SkinsMacros&apos;&gt;Skins &amp;amp; Macros&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#ModelsORM&apos;&gt;Models, ORM&lt;/a&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&apos;#AdvancedTopics&apos;&gt;Advanced Topics&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;a href=&apos;#RequestResponseSession&apos;&gt;Request, Response, Session&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#UrlMapping&apos;&gt;Url Mapping&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Deployment&apos;&gt;Deployment&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Other&apos;&gt;Other&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;h2&gt;Tutorials&lt;a name=&apos;Tutorials&apos; href=&apos;http://dev.helma.org/docs/Documentation/OverviewProposal/#Tutorials&apos;&gt; &lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/docs/Object-Relational+Mapping+Tutorial/&quot; class=&quot;externalLink&quot;&gt;The tutorial&lt;/a&gt; walks you through setting up helma and creating your first application.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/docs/Request-Response-Cycle/&quot; class=&quot;externalLink&quot;&gt;Overview&lt;/a&gt;, if you already know another web framework and only need a highlevel overview.&lt;/p&gt;

&lt;p&gt;If you only know the JavaScript browsers throw at you, you might want a &lt;a href=&quot;https://developer.mozilla.org/en/a_re-introduction_to_javascript&quot; class=&quot;externalLink&quot;&gt;Re-Introduction&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Documentation&lt;a name=&apos;Documentation&apos; href=&apos;http://dev.helma.org/docs/Documentation/OverviewProposal/#Documentation&apos;&gt; &lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://helma.server-side-javascript.org/reference/&quot; class=&quot;externalLink&quot;&gt;Detailed Reference&lt;/a&gt; of prototypes, properties and methods available in Helma. Keep this under your pillow.&lt;/p&gt;

&lt;h3&gt;Skins &amp;amp; Macros&lt;a name=&apos;SkinsMacros&apos; href=&apos;http://dev.helma.org/docs/Documentation/OverviewProposal/#SkinsMacros&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://helma.server-side-javascript.org/reference/HopObject.html#HopObject.renderSkin&quot; class=&quot;externalLink&quot;&gt;Skin Rendering&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://helma.server-side-javascript.org/reference/MacroFilters.html&quot; class=&quot;externalLink&quot;&gt;Predefined Macros&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/docs/Object-Relational+Mapping+Tutorial/#CustomMacros&quot; class=&quot;externalLink&quot;&gt;Writing custom Macros&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/wiki/New+Skin+Features+in+Helma+1.6/&quot; class=&quot;externalLink&quot;&gt;Advanced Skin Features&lt;/a&gt; - Subskins, Filters, Nested Macros, etc.&lt;/p&gt;

&lt;h3&gt;Models, ORM&lt;a name=&apos;ModelsORM&apos; href=&apos;http://dev.helma.org/docs/Documentation/OverviewProposal/#ModelsORM&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/docs/Object-Relational+Mapping/&quot; class=&quot;externalLink&quot;&gt;Object Mappings&lt;/a&gt; - short enough to be used as a reference&lt;br /&gt;
&lt;a href=&quot;http://dev.helma.org/docs/Properties+Files/db.properties/&quot; class=&quot;externalLink&quot;&gt;Database Settings&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://helma.org/docs/howtos/mysql/&quot; class=&quot;externalLink&quot;&gt;Connecting to Mysql&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;FIXME reference for type.properties?&lt;/p&gt;

&lt;h4&gt;Advanced Topics&lt;a name=&apos;AdvancedTopics&apos; href=&apos;http://dev.helma.org/docs/Documentation/OverviewProposal/#AdvancedTopics&apos;&gt; &lt;/a&gt;&lt;/h4&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/wiki/Many-to-many+Relationships/&quot; class=&quot;externalLink&quot;&gt;Many-To-Many-Relations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/wiki/Creating+collections+programmatically/&quot; class=&quot;externalLink&quot;&gt;Programmatic Collections&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Request, Response, Session&lt;a name=&apos;RequestResponseSession&apos; href=&apos;http://dev.helma.org/docs/Documentation/OverviewProposal/#RequestResponseSession&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://helma.zumbrunn.com/reference/res.html&quot; class=&quot;externalLink&quot;&gt;Response&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://helma.zumbrunn.com/reference/req.html&quot; class=&quot;externalLink&quot;&gt;Request&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://helma.zumbrunn.com/reference/session.html&quot; class=&quot;externalLink&quot;&gt;Session&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Url Mapping&lt;a name=&apos;UrlMapping&apos; href=&apos;http://dev.helma.org/docs/Documentation/OverviewProposal/#UrlMapping&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;FIXME paragraph that quickly describes how this work in helma. self-explanatory if you already know models/orm&lt;/p&gt;

&lt;h3&gt;Deployment&lt;a name=&apos;Deployment&apos; href=&apos;http://dev.helma.org/docs/Documentation/OverviewProposal/#Deployment&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/docs/Server+and+Application+Properties/&quot; class=&quot;externalLink&quot;&gt;Server &amp;amp; Application settings&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://helma.org/docs/howtos/mod_jk/&quot; class=&quot;externalLink&quot;&gt;Apache1 and mod_jk&lt;/a&gt; mostly applies to apache2 as well&lt;br /&gt;
&lt;a href=&quot;http://dev.helma.org/wiki/Workspace/maks/HelmaWithApache2/&quot; class=&quot;externalLink&quot;&gt;Apache2 and mod_jk&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/wiki/Setting+Up+A+Web+Application+With+Jetty+And+Helma+1.x/&quot; class=&quot;externalLink&quot;&gt;Jetty&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://dev.helma.org/wiki/URL+Rewriting+With+Jetty+And+Helma+1.x/&quot; class=&quot;externalLink&quot;&gt;Jetty Url Rewrite&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Other&lt;a name=&apos;Other&apos; href=&apos;http://dev.helma.org/docs/Documentation/OverviewProposal/#Other&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;http://helma.server-side-javascript.org/tools/about_manage&quot; class=&quot;externalLink&quot;&gt;Manage app&lt;/a&gt; manage your helma apps&lt;br /&gt;
&lt;a href=&quot;http://dev.helma.org/wiki/Caching/&quot; class=&quot;externalLink&quot;&gt;Caching&lt;/a&gt; about the builtin object cache&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://dev.helma.org/docs/Helma+Documentation+in+DocBook+format/&quot; class=&quot;externalLink&quot;&gt;Helma Book&lt;/a&gt; work in progress&lt;/p&gt;</description>
</item>
<item>
<link>http://dev.helma.org/docs/Using+the+Source+Code+Repositories/</link>
<title>Using the Source Code Repositories</title>
<description>&lt;p&gt;Our SVN repositories are the place to get the latest source code of Helma 1.x, additional JS libraries and other Helma applications.&lt;/p&gt;

&lt;p&gt;You can &lt;a href=&quot;https://dev.helma.org/trac/helma/browser/&quot;&gt;browse the SVN repository&lt;/a&gt; via WWW interface, where you will find sections for the &lt;a href=&quot;https://dev.helma.org/trac/helma/browser/helma/helma/trunk&quot;&gt;Helma 1.x source code&lt;/a&gt; and &lt;a href=&quot;https://dev.helma.org/trac/helma/browser/apps/modules/trunk&quot;&gt;various Helma applications and modules&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The latest source code of Helma NG, on the other hand, is &lt;a href=&quot;http://github.com/hns/helma-ng/tree/master&quot;&gt;available at Github&lt;/a&gt;.&lt;/p&gt;

&lt;div class=&apos;toc&apos;&gt;&lt;h3&gt;Contents &lt;span class=&apos;editlink&apos;&gt;[&lt;a  href=&apos;#&apos; onclick=&quot;toggleElement(&apos;toclist&apos;, this, &apos;show&apos;, &apos;hide&apos;); return false;&quot;&gt;hide&lt;/a&gt;]&lt;/span&gt;&lt;/h3&gt;&lt;ul id=&apos;toclist&apos;&gt;&lt;li&gt;&lt;a href=&apos;#AnonymouscheckoutfromSVN&apos;&gt;Anonymous check-out from SVN&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#CheckingoutanappormodulefromSVN&apos;&gt;Checking-out an app or module from SVN&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#BuildingHelma1xfromSVN&apos;&gt;Building Helma 1.x from SVN&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#BuildingHelmaNGfromGit&apos;&gt;Building Helma NG from Git&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;h3&gt;Anonymous check-out from SVN&lt;a name=&apos;AnonymouscheckoutfromSVN&apos; href=&apos;http://dev.helma.org/docs/Using+the+Source+Code+Repositories/#AnonymouscheckoutfromSVN&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;URL: &lt;a href=&quot;https://dev.helma.org/svn/helma/helma/trunk/&quot;&gt;https://dev.helma.org/svn/helma/helma/trunk/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Checking-out an app or module from SVN&lt;a name=&apos;CheckingoutanappormodulefromSVN&apos; href=&apos;http://dev.helma.org/docs/Using+the+Source+Code+Repositories/#CheckingoutanappormodulefromSVN&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;tt&gt;svn checkout &lt;a href=&quot;https://dev.helma.org/svn/helma/helma/trunk/&quot;&gt;https://dev.helma.org/svn/helma/helma/trunk/&lt;/a&gt; helma&lt;/tt&gt;&lt;/p&gt;

&lt;h3&gt;Building Helma 1.x from SVN&lt;a name=&apos;BuildingHelma1xfromSVN&apos; href=&apos;http://dev.helma.org/docs/Using+the+Source+Code+Repositories/#BuildingHelma1xfromSVN&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;&lt;tt&gt;svn checkout &lt;a href=&quot;https://dev.helma.org/svn/helma/helma/trunk/&quot;&gt;https://dev.helma.org/svn/helma/helma/trunk/&lt;/a&gt; helma&lt;br /&gt;
cd helma&lt;br /&gt;
ant package&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;Now you should have current Helma packages in helma/dist/ as follows:&lt;br /&gt;
&lt;tt&gt;&lt;br /&gt;
helma/dist/helma-1.6.x-src.tar.gz&lt;br /&gt;
helma/dist/helma-1.6.x-src.zip&lt;br /&gt;
helma/dist/helma-1.6.x.tar.gz&lt;br /&gt;
helma/dist/helma-1.6.x.zip&lt;br /&gt;
&lt;/tt&gt;&lt;/p&gt;

&lt;h3&gt;Building Helma NG from Git&lt;a name=&apos;BuildingHelmaNGfromGit&apos; href=&apos;http://dev.helma.org/docs/Using+the+Source+Code+Repositories/#BuildingHelmaNGfromGit&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Please see &lt;a href=&quot;http://dev.helma.org/ng/Getting+Started/&quot; class=&quot;wikiLink&quot;&gt;Helma NG&apos;s &quot;Getting Started&quot;&lt;/a&gt; for details.&lt;/p&gt;</description>
</item>
<item>
<link>http://dev.helma.org/ng/Getting+Started/</link>
<title>Getting Started</title>
<description>&lt;p&gt;This is a very short tutorial on how to install and start using Helma NG.&lt;/p&gt;

&lt;div class=&apos;toc&apos;&gt;&lt;h3&gt;Contents &lt;span class=&apos;editlink&apos;&gt;[&lt;a  href=&apos;#&apos; onclick=&quot;toggleElement(&apos;toclist&apos;, this, &apos;show&apos;, &apos;hide&apos;); return false;&quot;&gt;hide&lt;/a&gt;]&lt;/span&gt;&lt;/h3&gt;&lt;ul id=&apos;toclist&apos;&gt;&lt;li&gt;&lt;a href=&apos;#Installation&apos;&gt;Installation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Usingtheshell&apos;&gt;Using the shell&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Runningthedemoapp&apos;&gt;Running the demo app&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Startingyourownapplication&apos;&gt;Starting your own application&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;h3&gt;Installation&lt;a name=&apos;Installation&apos; href=&apos;http://dev.helma.org/ng/Getting+Started/#Installation&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Helma requires Java 1.5 to run and uses &lt;a href=&quot;http://ant.apache.org/&quot; class=&quot;externalLink&quot;&gt;Apache Ant&lt;/a&gt; as its build tool. &lt;/p&gt;

&lt;p&gt;To get started with Helma NG either &lt;a href=&quot;http://github.com/hns/helma-ng/downloads&quot; class=&quot;externalLink&quot;&gt;download the latest release&lt;/a&gt; or get the current snapshot &lt;a href=&quot;http://github.com/hns/helma-ng/tree/master&quot; class=&quot;externalLink&quot;&gt;from Github&lt;/a&gt;, either by clicking the download button or using the following git command: &lt;/p&gt;

&lt;p&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;git clone git://github.com/hns/helma-ng.git&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;Change to the helma-ng directory you just checked out and run ant it with the &quot;jar&quot; target:&lt;/p&gt;

&lt;p&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;ant jar&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;If this worked then you should now have a file called lib/helma.jar. &lt;/p&gt;

&lt;h3&gt;Using the shell&lt;a name=&apos;Usingtheshell&apos; href=&apos;http://dev.helma.org/ng/Getting+Started/#Usingtheshell&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Once you have built the jar files you should be able to start the &lt;a href=&quot;http://dev.helma.org/ng/Shell/&quot; class=&quot;wikiLink&quot;&gt;Helma NG shell&lt;/a&gt;. Just run the helma script in the bin directory without arguments:&lt;/p&gt;

&lt;p&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;/bin/helma&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;This should start a shell session with a &lt;tt&gt;helma&amp;gt;&lt;/tt&gt; prompt. You can enter and evaluate any JavaScript expression. You can scroll through your session history using the &amp;lt;Up&amp;gt; and &amp;lt;Down&amp;gt; keys, hitting &amp;lt;Tab&amp;gt; will try to auto-complete your current input. Use the &lt;tt&gt;include&lt;/tt&gt;, &lt;tt&gt;require&lt;/tt&gt;, or &lt;tt&gt;import&lt;/tt&gt; functions to load any Helma NG modules:&lt;/p&gt;

&lt;p&gt;&lt;tt&gt;helma&amp;gt; include(&apos;helma/file&apos;);&lt;br /&gt;
helma&amp;gt; var file = new File(&apos;README.txt&apos;);&lt;br /&gt;
helma&amp;gt; file.open();&lt;br /&gt;
true&lt;br /&gt;
helma&amp;gt; file.readln();&lt;br /&gt;
Helma NG&lt;br /&gt;
helma&amp;gt; file.close();&lt;br /&gt;
true&lt;/tt&gt;&lt;/p&gt;

&lt;h3&gt;Running the demo app&lt;a name=&apos;Runningthedemoapp&apos; href=&apos;http://dev.helma.org/ng/Getting+Started/#Runningthedemoapp&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;To run an actual web application simply pass the main file of the app to the helma command:&lt;/p&gt;

&lt;p&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;/bin/helma apps/demo/main.js&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;This will start the &lt;a href=&quot;http://helma-ng.appspot.com/&quot; class=&quot;externalLink&quot;&gt;Helma NG demo app&lt;/a&gt; on port 8080. Enter the following URL in your browser to access the app:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://localhost:8080/&quot;&gt;http://localhost:8080/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also run an application and the shell at the same time by adding the -i or --interactive option before the application name:  &lt;/p&gt;

&lt;p&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;/bin/helma -i apps/demo/main.js&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;Use the -h or --help flag for more information on available options.&lt;/p&gt;

&lt;h3&gt;Starting your own application&lt;a name=&apos;Startingyourownapplication&apos; href=&apos;http://dev.helma.org/ng/Getting+Started/#Startingyourownapplication&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;To start hacking on your own Helma application, use the admin/create script to create a new app:&lt;/p&gt;

&lt;p&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;/bin/helma admin/create [app directory]&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;If you don&apos;t pass the app directory on the command line the script will prompt you for it. Once the application has been created you can start it by running its main.js script:&lt;/p&gt;

&lt;p&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;/bin/helma appname/main.js&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;If you like Helma NG drop a note on the &lt;a href=&quot;http://groups.google.com/group/helma-ng&quot; class=&quot;externalLink&quot;&gt;mailing list&lt;/a&gt; or the &lt;a href=&quot;http://helma.server-side-javascript.org/hopbot/&quot; class=&quot;externalLink&quot;&gt;#helma channel on irc.freenode.net&lt;/a&gt;!&lt;/p&gt;</description>
</item>
<item>
<link>http://dev.helma.org/ng/Running+Rhino+and+Helma+NG+on+Google+App+Engine/</link>
<title>Running Rhino and Helma NG on Google App Engine</title>
<description>&lt;p&gt;With Google&apos;s &lt;a href=&quot;http://googleappengine.blogspot.com/2009/04/seriously-this-time-new-language-on-app.html&quot; class=&quot;externalLink&quot;&gt;announcement&lt;/a&gt; of &lt;a href=&quot;http://code.google.com/appengine/docs/java/overview.html&quot; class=&quot;externalLink&quot;&gt;Java support&lt;/a&gt; for App Engine there is all of a sudden a very attractive new option for hosting Java based web applications. Of course my first impulse was to check if it would run &lt;a href=&quot;http://www.mozilla.org/rhino/&quot; class=&quot;externalLink&quot;&gt;Rhino&lt;/a&gt; and Helma NG (I had little hopes for Helma 1 as it runs a lot of background threads and relies heavily on relational or file based database backends, both of which are not available on App Engine).&lt;/p&gt;

&lt;p&gt;To my surprise, Rhino works perfectly out of the box, and I only had to make a few changes to Helma NG to get the demo app &lt;a href=&quot;http://helma-ng.appspot.com/&quot; class=&quot;externalLink&quot;&gt;running on App Engine&lt;/a&gt;. This is somewhat in contradiction with what &lt;a href=&quot;http://olabini.com/blog/tag/gae/&quot; class=&quot;externalLink&quot;&gt;others have found&lt;/a&gt;, and I discovered only later that I was partly lucky for not stomping on any SecurityExceptions, but on the other hand it&apos;s by virtue of Rhino not doing a lot of tricks under the hood, and Helma NG doing all its file reading through a unified &lt;a href=&quot;http://github.com/hns/helma-ng/tree/10f5c896b0e9d9e2193ee24174d084965400520f/src/org/helma/repository&quot; class=&quot;externalLink&quot;&gt;resource framework&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;This article covers two options, one using the Helma NG webapp framework, and one using the &lt;a href=&quot;http://github.com/tlrobinson/jack/tree/master&quot; class=&quot;externalLink&quot;&gt;Jack&lt;/a&gt; interface for JavaScript web applications. &lt;/p&gt;

&lt;div class=&apos;toc&apos;&gt;&lt;h3&gt;Contents &lt;span class=&apos;editlink&apos;&gt;[&lt;a  href=&apos;#&apos; onclick=&quot;toggleElement(&apos;toclist&apos;, this, &apos;show&apos;, &apos;hide&apos;); return false;&quot;&gt;hide&lt;/a&gt;]&lt;/span&gt;&lt;/h3&gt;&lt;ul id=&apos;toclist&apos;&gt;&lt;li&gt;&lt;a href=&apos;#PrerequisitesInstallingAppEngineSDKandHelmaNG&apos;&gt;Prerequisites: Installing App Engine SDK and Helma NG&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#CreatinganewWebAppprojectwiththeEclipseplugin&apos;&gt;Creating a new Web App project with the Eclipse plugin&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#CreatinganewWebAppprojectfromthecommandline&apos;&gt;Creating a new Web App project from the command line&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#RunningHelmaNGapps&apos;&gt;Running Helma NG apps&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#RunningJackapps&apos;&gt;Running Jack apps&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Attachments&apos;&gt;Attachments&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;h3&gt;Prerequisites: Installing App Engine SDK and Helma NG&lt;a name=&apos;PrerequisitesInstallingAppEngineSDKandHelmaNG&apos; href=&apos;http://dev.helma.org/ng/Running+Rhino+and+Helma+NG+on+Google+App+Engine/#PrerequisitesInstallingAppEngineSDKandHelmaNG&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;First, install the App Engine SDK for Java as described on the &lt;a href=&quot;http://code.google.com/appengine/docs/java/gettingstarted/installing.html&quot; class=&quot;externalLink&quot;&gt;Google pages&lt;/a&gt;. Whether you use the Eclipse plugin or the command line SDK shouldn&apos;t make a difference. I&apos;m using Eclipse, but things should work in a similar fashion with the command line SDK.&lt;/p&gt;

&lt;p&gt;Next, you need Helma NG, which is effectively Rhino with a thin layer of server-related functionality on top. Helma NG currently comes with its own copy of Rhino as we are using some experimental JS 1.8 features, but this may change as soon as these features are included in a Rhino release.&lt;/p&gt;

&lt;p&gt;You can &lt;a href=&quot;http://github.com/hns/helma-ng/downloads&quot; class=&quot;externalLink&quot;&gt;download the latest release&lt;/a&gt; or get the current snapshot &lt;a href=&quot;http://github.com/hns/helma-ng/tree/master&quot; class=&quot;externalLink&quot;&gt;from Github&lt;/a&gt;, either by clicking the download button or using the following git command: &lt;/p&gt;

&lt;p&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;git clone git://github.com/hns/helma-ng.git&lt;/tt&gt;&lt;/p&gt;

&lt;p&gt;You need &lt;a href=&quot;http://ant.apache.org/&quot; class=&quot;externalLink&quot;&gt;Apache Ant&lt;/a&gt; to build Helma NG. Change to the helma-ng directory you just checked out and run ant it with the &quot;jar&quot; target:&lt;/p&gt;

&lt;p&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;ant jar&lt;/tt&gt;&lt;br /&gt;
t&lt;br /&gt;
If this worked then you should now have a file called lib/helma.jar. &lt;/p&gt;

&lt;h3&gt;Creating a new Web App project with the Eclipse plugin&lt;a name=&apos;CreatinganewWebAppprojectwiththeEclipseplugin&apos; href=&apos;http://dev.helma.org/ng/Running+Rhino+and+Helma+NG+on+Google+App+Engine/#CreatinganewWebAppprojectwiththeEclipseplugin&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Once you have everything in place, create a new, empty App Engine application. Use the new project wizard and select &quot;Web Application Project&quot; in the Google category. This will ask you for a project name and a package name. The package name doesn&apos;t matter unless you plan to write Java code, but it is required so just enter anything.&lt;/p&gt;

&lt;p&gt;The new project should have two subdirectories, &quot;src&quot; and &quot;war&quot;. Again, the src dir is only relevant for Java code, as we&apos;ll put our JavaScript code directly in war/WEB-INF and our jar files in war/WEB-INF/lib.&lt;/p&gt;

&lt;p&gt;Next, copy over some jar files from the Helma NG lib directory to the war/WEB-INF/lib of your project. You&apos;ll probably need the following:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;lib/js.jar&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;lib/helma.jar&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;lib/log4j-1.2.15.jar&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;App Engine has its own web server of course, so you don&apos;t need the jetty or servlet jar files. &lt;/p&gt;

&lt;p&gt;From here, you have two options: Run an app using the Helma NG webapp framework, or one using the &lt;a href=&quot;http://github.com/tlrobinson/jack/tree/master&quot; class=&quot;externalLink&quot;&gt;Jack&lt;/a&gt; interface. &lt;/p&gt;

&lt;h3&gt;Creating a new Web App project from the command line&lt;a name=&apos;CreatinganewWebAppprojectfromthecommandline&apos; href=&apos;http://dev.helma.org/ng/Running+Rhino+and+Helma+NG+on+Google+App+Engine/#CreatinganewWebAppprojectfromthecommandline&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;From the SDK directory, copy demos/new_project_template and rename it to your application&apos;s name (say &quot;Demo&quot;). &lt;/p&gt;

&lt;p&gt;Open Demo/build.xml, locate the property appengine.sdk and modify it so that it points to the path of the SDK root directory on your machine.&lt;/p&gt;

&lt;p&gt;Also add the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  &amp;lt;target name=&quot;copyjars&quot;
          description=&quot;Copies the App Engine JARs to the WAR.&quot;&amp;gt;
    &amp;lt;copy todir=&quot;${war.dir}/WEB-INF/lib&quot;
          flatten=&quot;true&quot;&amp;gt;
      &amp;lt;fileset dir=&quot;${appengine.sdk}/lib/user&quot;&amp;gt;
        &amp;lt;include name=&quot;*&amp;lt;a href=&quot;http://dev.helma.org/&quot; class=&quot;wikiLink&quot;&amp;gt;/&amp;lt;/a&amp;gt;.jar&quot; /&amp;gt;
      &amp;lt;/fileset&amp;gt;
    &amp;lt;/copy&amp;gt;
  &amp;lt;/target&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Again in build.xml locate the &quot;war&quot; target and add a dependency on the &quot;copyjars&quot; target so that it looks like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  &amp;lt;target name=&quot;war&quot; depends=&quot;enhance,copyjars&quot;
          description=&quot;Assemble the application directory&quot;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Run &quot;ant&quot; in the same directory as &quot;build.xml&quot; so that the WEB-INF directory will be created.&lt;/p&gt;

&lt;p&gt;Next, copy over some jar files from the Helma NG lib directory to the www/WEB-INF/lib of your project. You&apos;ll probably need the following:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;lib/js.jar&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;lib/helma.jar&lt;/tt&gt;&lt;/li&gt;&lt;li&gt;&lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;lib/log4j-1.2.15.jar&lt;/tt&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;App Engine has its own web server of course, so you don&apos;t need the jetty or servlet jar files. &lt;/p&gt;

&lt;p&gt;From here, you have two options: Run an app using the Helma NG webapp framework, or one using the &lt;a href=&quot;http://github.com/tlrobinson/jack/tree/master&quot; class=&quot;externalLink&quot;&gt;Jack&lt;/a&gt; interface. &lt;/p&gt;

&lt;h3&gt;Running Helma NG apps&lt;a name=&apos;RunningHelmaNGapps&apos; href=&apos;http://dev.helma.org/ng/Running+Rhino+and+Helma+NG+on+Google+App+Engine/#RunningHelmaNGapps&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;To run the Helma NG &lt;a href=&quot;http://helma-ng.appspot.com/&quot; class=&quot;externalLink&quot;&gt;demo application&lt;/a&gt; follow these steps: &lt;/p&gt;

&lt;ol&gt;&lt;li&gt;Copy the modules directory from the Helma NG directory to war/WEB-INF so that the resulting directory is called &lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;WEB-INF/modules&lt;/tt&gt;.&lt;/li&gt;&lt;li&gt;Copy the demo app from apps/demo to war/WEB-INF so that the resulting directory is called &lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;WEB-INF/demo&lt;/tt&gt;. Note that the demo app contains a symbolic link, which is not supported by Google App Engine. Copying files with &lt;tt style=&quot;font-weight:bold&quot;&gt;cp -rL&lt;/tt&gt; will take care of dereferncing the link.&lt;/li&gt;&lt;li&gt;Copy or move the static directory from within the demo app two levels up to the war directory (war/static).&lt;/li&gt;&lt;li&gt;Edit &lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;WEB-INF/web.xml&lt;/tt&gt; to look &lt;a href=&quot;http://dev.helma.org/static/files/3318/web.xml&quot; class=&quot;externalLink&quot;&gt;like the attached file&lt;/a&gt;, or just download and overwrite the file.&lt;/li&gt;&lt;/ol&gt;
&lt;p&gt;That&apos;s it - save all your changes and click on the green Run button in Eclipse or run the dev_appserver.sh script to start the development server. If everything worked as planned you should be able to access the &lt;a href=&quot;http://helma-ng.appspot.com/&quot; class=&quot;externalLink&quot;&gt;demo app&lt;/a&gt; on &lt;a href=&quot;http://localhost:8080/&quot;&gt;http://localhost:8080/&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;Running Jack apps&lt;a name=&apos;RunningJackapps&apos; href=&apos;http://dev.helma.org/ng/Running+Rhino+and+Helma+NG+on+Google+App+Engine/#RunningJackapps&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Helma NG uses &lt;a href=&quot;http://github.com/tlrobinson/jack/tree/master&quot; class=&quot;externalLink&quot;&gt;Jack&lt;/a&gt; to as web application connector, so you are not bound to use the Helma webapp infrastructure. If you prefer, you can use Helma NG as a container for Jack applications fully compatible with the &lt;a href=&quot;https://wiki.mozilla.org/ServerJS/Modules/SecurableModules&quot; class=&quot;externalLink&quot;&gt;ServerJS Securable Modules proposal&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;The setup is much the same as with the Helma NG demo application, only that you point the JackServlet to your own Jack web appliction in &lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;WEB-INF/web.xml&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;For example, assuming you have the following simple Jack application in &lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;app/main.js&lt;/tt&gt;: &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  function handler(env) {
    return [200, {&quot;Content-Type&quot;: &quot;text/plain&quot;}, [&quot;Hello World!&quot;]];
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You would then set the &lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;modulePath&lt;/tt&gt; servlet init-parameter in &lt;a href=&quot;http://dev.helma.org/static/files/3318/web.xml&quot; class=&quot;externalLink&quot;&gt;web.xml&lt;/a&gt; to &lt;tt style=&quot;font-weight:bold;&quot;&gt;app&lt;/tt&gt;, &lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;moduleName&lt;/tt&gt; to &lt;tt style=&quot;font-weight:bold;&quot;&gt;main&lt;/tt&gt;, and &lt;tt style=&quot;font-weight:bold;color:#d33;&quot;&gt;functionName&lt;/tt&gt; to &lt;tt style=&quot;font-weight:bold;&quot;&gt;handler&lt;/tt&gt;.&lt;/p&gt;

&lt;p&gt;After starting the development server you should be able to access your Jack app at &lt;a href=&quot;http://localhost:8080/&quot;&gt;http://localhost:8080/&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;Attachments&lt;a name=&apos;Attachments&apos; href=&apos;http://dev.helma.org/ng/Running+Rhino+and+Helma+NG+on+Google+App+Engine/#Attachments&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;list&quot; border=&quot;0&quot;&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td class=&quot;caption&quot;&gt;name&lt;/td&gt;&lt;td class=&quot;caption&quot;&gt;type&lt;/td&gt;&lt;td class=&quot;caption&quot;&gt;size&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/static/files/3318/web.xml&quot;&gt;web.xml&lt;/a&gt;&lt;/td&gt;&lt;td&gt;text/xml&lt;/td&gt;&lt;td&gt;1130 bytes&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

</description>
</item>
<item>
<link>http://dev.helma.org/ng/</link>
<title>ng</title>
<description>&lt;p&gt;This is a wiki space dedicated to Helma NG. Feel free to create new pages or edit existing ones. Helma NG consists of several components that can be used together or alone:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;&lt;p&gt;A compact &lt;a href=&quot;http://dev.helma.org/ng/JavaScript+Runtime/&quot; class=&quot;wikiLink&quot;&gt;JavaScript runtime&lt;/a&gt; environment based on Mozilla Rhino. It adds to Rhino a reloading module system that is compatible to the &lt;a href=&quot;https://wiki.mozilla.org/ServerJS&quot; class=&quot;externalLink&quot;&gt;ServerJS&lt;/a&gt; Securable Module proposal.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;An interactive &lt;a href=&quot;http://dev.helma.org/ng/Shell/&quot; class=&quot;wikiLink&quot;&gt;shell&lt;/a&gt; with support for autocompletion and history.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;A &lt;a href=&quot;http://dev.helma.org/ng/modules/&quot; class=&quot;wikiLink&quot;&gt;module&lt;/a&gt; library implemented in JavaScript, covering basic functionality such as extensions to the built-in objects, file I/O, logging, persistence, unit testing, client and server side HTTP support and &lt;a href=&quot;http://dev.helma.org/ng/Web+Framework/&quot; class=&quot;wikiLink&quot;&gt;web framework&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class=&apos;toc&apos;&gt;&lt;h3&gt;Contents &lt;span class=&apos;editlink&apos;&gt;[&lt;a  href=&apos;#&apos; onclick=&quot;toggleElement(&apos;toclist&apos;, this, &apos;show&apos;, &apos;hide&apos;); return false;&quot;&gt;hide&lt;/a&gt;]&lt;/span&gt;&lt;/h3&gt;&lt;ul id=&apos;toclist&apos;&gt;&lt;li&gt;&lt;a href=&apos;#Overview&apos;&gt;Overview&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Resources&apos;&gt;Resources&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Recentlyeditedpages&apos;&gt;Recently edited pages&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;h3&gt;Overview&lt;a name=&apos;Overview&apos; href=&apos;http://dev.helma.org/ng/#Overview&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://dev.helma.org/trac/helma/browser/helma-ng/trunk/README.txt&quot; class=&quot;externalLink&quot;&gt;README&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dev.helma.org/ng/Getting+Started/&quot; class=&quot;wikiLink&quot;&gt;Getting Started&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dev.helma.org/ng/Demo+apps/&quot; class=&quot;wikiLink&quot;&gt;Demo apps&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dev.helma.org/ng/JavaScript+Runtime/&quot; class=&quot;wikiLink&quot;&gt;JavaScript Runtime&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dev.helma.org/ng/modules/&quot; class=&quot;wikiLink&quot;&gt;Modules&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dev.helma.org/ng/Web+Framework/&quot; class=&quot;wikiLink&quot;&gt;Web Framework&lt;/a&gt; and &lt;a href=&quot;http://dev.helma.org/ng/Middleware/&quot; class=&quot;wikiLink&quot;&gt;Middleware&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dev.helma.org/ng/Persistence+API/&quot; class=&quot;wikiLink&quot;&gt;Persistence API&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Resources&lt;a name=&apos;Resources&apos; href=&apos;http://dev.helma.org/ng/#Resources&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://groups.google.com/group/helma-ng&quot; class=&quot;externalLink&quot;&gt;Mailing list&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://github.com/hns/helma-ng/downloads&quot; class=&quot;externalLink&quot;&gt;Download&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dev.helma.org/ng/Roadmap/&quot; class=&quot;wikiLink&quot;&gt;Roadmap&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://dev.helma.org/trac/helma/report&quot; class=&quot;externalLink&quot;&gt;Issues&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://github.com/hns/helma-ng/tree/master&quot; class=&quot;externalLink&quot;&gt;Source Code (Github)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;IRC: &lt;a href=&quot;http://helma.server-side-javascript.org/hopbot/&quot; class=&quot;externalLink&quot;&gt;#helma on irc.freenode.net&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Recently edited pages&lt;a name=&apos;Recentlyeditedpages&apos; href=&apos;http://dev.helma.org/ng/#Recentlyeditedpages&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;table cellspacing=&quot;0&quot; cellpadding=&quot;0&quot; class=&quot;list&quot; border=&quot;0&quot;&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td class=&quot;caption&quot;&gt;&lt;a href=&quot;?sort=name&quot; style=&quot;text-decoration:none&quot;&gt;name&lt;/a&gt;&lt;/td&gt;&lt;td class=&quot;caption&quot;&gt;&lt;a href=&quot;?sort=modifier&quot; style=&quot;text-decoration:none&quot;&gt;modified by&lt;/a&gt;&lt;/td&gt;&lt;td class=&quot;caption&quot;&gt;last modified&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Persistence+API/&quot;&gt;Persistence API&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/sleepnova/&quot;&gt;sleepnova&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/06/25 19:20&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Middleware/&quot;&gt;Middleware&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/06/18 20:20&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Getting+Started/&quot;&gt;Getting Started&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/06/16 10:22&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Running+Rhino+and+Helma+NG+on+Google+App+Engine/&quot;&gt;Running Rhino and Helma NG on Google App Engine&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/06/16 10:20&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Roadmap/&quot;&gt;Roadmap&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/06/15 13:46&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Tools/&quot;&gt;Tools&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/05/20 00:59&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Demo+apps/&quot;&gt;Demo apps&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/05/19 15:34&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Shell/&quot;&gt;Shell&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/05/19 14:11&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Modules+and+Scopes/&quot;&gt;Modules and Scopes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/05/13 12:53&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/jsdoc-toolkit_for_ng/&quot;&gt;jsdoc-toolkit_for_ng&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/marius/&quot;&gt;marius&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/05/08 14:57&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/modules/&quot;&gt;modules&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/04/30 15:21&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/helma.skin/&quot;&gt;helma.skin&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/04/30 15:20&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Modules+Discussion/&quot;&gt;Modules Discussion&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/04/30 11:34&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Sandboxes/&quot;&gt;Sandboxes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/04/03 18:19&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/helma.system/&quot;&gt;helma.system&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/04/03 18:19&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/helma.filestore/&quot;&gt;helma.filestore&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/02/20 23:00&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Web+Framework/&quot;&gt;Web Framework&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/02/20 20:26&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/JavaScript+Runtime/&quot;&gt;JavaScript Runtime&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2009/02/06 11:12&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;odd&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/Metamethods/&quot;&gt;Metamethods&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2008/10/15 00:41&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;even&quot;&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/ng/New+Regexp+based+URL+dispatching/&quot;&gt;New Regexp based URL dispatching&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href=&quot;http://dev.helma.org/config/users/hannes/&quot;&gt;hannes&lt;/a&gt;&lt;/td&gt;&lt;td&gt;2008/09/26 22:46&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

</description>
</item>
<item>
<link>http://dev.helma.org/ng/Roadmap/</link>
<title>Roadmap</title>
<description>&lt;p&gt;For a task-oriented view of the Helma NG roadmap see the &lt;a href=&quot;https://dev.helma.org/trac/helma/roadmap&quot; class=&quot;externalLink&quot;&gt;trac roadmap page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The next Helma NG release is &lt;a href=&quot;https://dev.helma.org/trac/helma/milestone/Helma%20NG%200.4&quot; class=&quot;externalLink&quot;&gt;0.4&lt;/a&gt;. No release date has been set so far. We should probably look for a release date in July. &lt;/p&gt;

&lt;p&gt;Some high-level goals for the 0.4 release:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Support for more future ServerJS APIs and modules such as system, file, binary.&lt;/li&gt;&lt;li&gt;Make Narwhal run on Helma NG (again)&lt;/li&gt;&lt;li&gt;JSDoc generated API documentation for modules and apps&lt;/li&gt;&lt;li&gt;Ability to run Helma NG as service &lt;/li&gt;&lt;li&gt;Ability to run untrusted code in Helma NG&lt;/li&gt;&lt;/ul&gt;</description>
</item>
<item>
<link>http://dev.helma.org/wiki/marius/</link>
<title>marius</title>
<description>&lt;p&gt;is a helma developer working in vienna&lt;/p&gt;</description>
</item>
<item>
<link>http://dev.helma.org/wiki/Modules+and+Scopes+in+Helma+NG/</link>
<title>Modules and Scopes in Helma NG</title>
<description>&lt;p&gt;The javascript import features in &lt;a href=&quot;http://dev.helma.org/wiki/Helma+NG/&quot; class=&quot;wikiLink&quot;&gt;Helma NG&lt;/a&gt; try to loosely imitate the &lt;a href=&quot;http://www.effbot.org/zone/import-confusion.htm&quot; class=&quot;externalLink&quot;&gt;semantics of python&apos;s import statement&lt;/a&gt; in order to allow applications to be written in a truly modular way. The magic of python&apos;s import statement is that a script never has to do anything special in order to avoid name clashes with other scripts, because every script lives in its one top level scope by default. &lt;/p&gt;

&lt;p&gt;To sum it up:&lt;/p&gt;

&lt;ol&gt;&lt;li&gt;You don&apos;t have to use any special Javascript syntax to denote a namespace. Every script is by its nature a separate scope, assigned to a namespace by the script that imported it.&lt;/li&gt;&lt;li&gt;It&apos;s virtually impossible to produce a name collision, as each script lives in its own scope.&lt;/li&gt;&lt;li&gt;Since scripts live in their own scope, imported scripts are only visible to the scripts that imported them.&lt;/li&gt;&lt;/ol&gt;
&lt;div class=&apos;toc&apos;&gt;&lt;h3&gt;Contents &lt;span class=&apos;editlink&apos;&gt;[&lt;a  href=&apos;#&apos; onclick=&quot;toggleElement(&apos;toclist&apos;, this, &apos;show&apos;, &apos;hide&apos;); return false;&quot;&gt;hide&lt;/a&gt;]&lt;/span&gt;&lt;/h3&gt;&lt;ul id=&apos;toclist&apos;&gt;&lt;li&gt;&lt;a href=&apos;#Implementation&apos;&gt;Implementation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#Example&apos;&gt;Example&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&apos;#FurtherReading&apos;&gt;Further Reading&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;h3&gt;Implementation&lt;a name=&apos;Implementation&apos; href=&apos;http://dev.helma.org/wiki/Modules+and+Scopes+in+Helma+NG/#Implementation&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Helma NG implements this by using a &lt;a href=&quot;http://www.mozilla.org/rhino/scopes.html#sharingscopes&quot;&gt;separate top-level scope&lt;/a&gt; for each loaded script file, using a shared top-level scope as prototype. A simplistic implementation of most of the behaviour described above in the Rhino shell may look like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  // set reference to global object
  var __global__ = __global__ || this;
  
  function include(script, as) {
    var scope = new Object();
    scope.__parent__ = null;
    scope.__proto__ = __global__;
    // scope is now a top level scope that inherits 
    // from the global, shared top level scope
    scope.load(script);
    this[as] = scope;
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Of course, Helma NG also takes care of script reloading and stuff, and the shared module scope is really a per-thread scope that uses a really-shared scope for the really-shared stuff.&lt;/p&gt;

&lt;h3&gt;Example&lt;a name=&apos;Example&apos; href=&apos;http://dev.helma.org/wiki/Modules+and+Scopes+in+Helma+NG/#Example&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;Suppose there is a Javascript file called &lt;code&gt;helma/database.js&lt;/code&gt; with the following content:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;  function getConnection(...) {
      ....
  }
  
  function Connection(...) {
      ...
  }
  
  function Query(...) {
      ...
  }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Then consider the following statements in another script file:&lt;/p&gt;

&lt;dl&gt;
&lt;dt&gt;&lt;b&gt;import(&quot;helma/database&quot;)&lt;/b&gt;&lt;/dt&gt;
&lt;dd&gt;This makes the functions defined in helma/database.js available in the current scope as 
&lt;pre&gt;&lt;code&gt;  helma.database.getConnection()
  helma.database.Connection()
  helma.database.Query()
&lt;/code&gt;&lt;/pre&gt;
&lt;/dd&gt;
&lt;dt&gt;&lt;b&gt;var db = require(&quot;helma/database&quot;)&lt;/b&gt;&lt;/dt&gt;
&lt;dd&gt;This makes the functions defined in helma/database.js available in the current scope as 
&lt;pre&gt;&lt;code&gt;  db.getConnection()
  db.Connection()
  db.Query()
&lt;/code&gt;&lt;/pre&gt;
&lt;/dd&gt;
&lt;dt&gt;&lt;b&gt;include(&quot;helma.database&quot;)&lt;/b&gt;&lt;/dt&gt;
&lt;dd&gt;This makes the functions defined in helma/database.js available in the current scope as 
&lt;pre&gt;&lt;code&gt;  getConnection()
  Query()
&lt;/code&gt;&lt;/pre&gt;
&lt;/dd&gt;
&lt;/dl&gt;

&lt;p&gt;Note that the functions in helma/database.js do not care in which namespace they are loaded. They only see what is defined in their local file, and in the global scope shared by all modules. The scope that loaded the module is absolutely invisible to the loaded module! Also note that the getConnection() function in the last example can still access the Connection() constructor although it&apos;s not included in the importFromModule(). That&apos;s the power of closures!&lt;/p&gt;

&lt;h3&gt;Further Reading&lt;a name=&apos;FurtherReading&apos; href=&apos;http://dev.helma.org/wiki/Modules+and+Scopes+in+Helma+NG/#FurtherReading&apos;&gt; &lt;/a&gt;&lt;/h3&gt;

&lt;p&gt;There is a newer article about the &lt;a href=&quot;http://dev.helma.org/ng/Background+and+History/&quot; class=&quot;wikiLink&quot;&gt;background and history&lt;/a&gt; of the Helma NG module system as well as a more up-to-date &lt;a href=&quot;http://dev.helma.org/ng/Modules+and+Scopes/&quot; class=&quot;wikiLink&quot;&gt;technical article&lt;/a&gt;.&lt;/p&gt;
</description>
</item>
</channel>
</rss>
