<?xml version="1.0" encoding="iso-8859-15" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://purl.org/rss/1.0/" xmlns:dc="http://purl.org/dc/elements/1.1/" >
 <channel rdf:about="http://blog.wikiring.com/Blog/WebRss">
  <title>WikiRing Blog</title>
  <link>http://blog.wikiring.com/Blog</link>
  <description>Get on the scene</description>
<image rdf:resource="" />
  <dc:language>en-us</dc:language>
  <dc:rights>Copyright &#169; 2010 WikiRing Partnership</dc:rights>
  <dc:publisher>WikiRing Administrator [webmaster@michaeldaumconsulting.com]</dc:publisher>
  <dc:creator>WikiRing Administrator [webmaster@michaeldaumconsulting.com]</dc:creator>
  <dc:source>WikiRing</dc:source>
  <items>
    <rdf:Seq>   <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry36" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry35" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry34" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogPage1" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry33" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry32" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry31" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry30" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry29" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry28" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry25" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry24" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry23" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry22" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry21" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry20" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry18" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry19" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry16" />
  <rdf:li rdf:resource="http://blog.wikiring.com/Blog/BlogEntry15" /> </rdf:Seq>
  </items>
</channel>
<image rdf:about="">
  <title>TWiki/NatSkin</title>
  <link>http://blog.wikiring.com/Blog</link>
  <url></url>
</image> <item rdf:about="http://blog.wikiring.com/Blog/BlogEntry36">
 <title> Development of Foswiki and TWiki &#8211; get the facts (Part 1) </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry36</link>
 <dc:creator>AndreUlrich</dc:creator>
 <dc:date>2009-11-17T09:55:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/AndreUlrich">
 <rdf:value>AndreUlrich</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> It is often claimed that only a few developers moved from TWiki to Foswiki, therefore the first article will look at who are/were active core developers of both projects.&#60;p /&#62;&#60;style&#62; .oldmember{ color:#ccc; } .DISheadline{ background-color:#ddd; font-weight:bold; text-align:center; } .memberaction{ width:100px; text-align:center; } &#60;/style&#62; &#60;h2&#62;&#60;a name&#61;&#34;Number&#95;of&#95;core&#95;developers&#34;&#62;&#60;/a&#62; Number of core developers &#60;/h2&#62; The analysis focus on core development of both projects, as this is a major indicator for the health of a software project. This is because you need a lot more knowledge and background for developing the core product than for writing an extension with a clearly defined API. &#60;p /&#62; &#60;h3&#62;&#60;a name&#61;&#34;Claim&#34;&#62;&#60;/a&#62; Claim &#60;/h3&#62; &#60;p /&#62; &#60;blockquote&#62;&#60;i&#62;&#34;We have healthy downloads, an active user community, and a very active support community. However, we are a smaller developer community than we used to be.&#34;&#60;/i&#62; &#60;br&#62;Source: Blog post by Peter Thoeny (Twiki.net) &#8211; 11 Nov 2009&#60;/blockquote&#62; &#60;p /&#62; &#60;h3&#62;&#60;a name&#61;&#34;Fact&#34;&#62;&#60;/a&#62; Fact &#60;/h3&#62; &#60;p /&#62; &#60;table class&#61;&#34;twikiTable&#34; &#62; &#60;tr&#62;&#60;th class&#61;&#34;headline&#34; colspan&#61;&#34;3&#34;&#62;Developers of TWiki and Foswiki&#60;/th&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td align&#61;&#34;center&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/twiki-icon.png&#34;&#62;&#60;/td&#62;&#60;td&#62;&#60;/td&#62;&#60;td align&#61;&#34;center&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/foswiki-icon.png&#34;&#62;&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;th class&#61;&#34;headline&#34; colspan&#61;&#34;3&#34;&#62;Core contributers&#60;/th&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;PeterThoeny&#60;/td&#62;&#60;td&#62;&#60;/td&#62;&#60;td&#62;&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;SopanShewale&#60;/td&#62;&#60;td&#62;&#60;/td&#62;&#60;td&#62;&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;CrawfordCurrie&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;CrawfordCurrie&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;KoenMartens&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;KoenMartens&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;MichaelDaum&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;MichaelDaum&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;RafaelAlvarez&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;RafaelAlvarez&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;AndreUlrich&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;AndreUlrich&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;TravisBarker&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;TravisBarker&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;ArthurClemens&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;ArthurClemens&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;GilmarSantosJr&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;GilmarSantosJr&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;LynnwoodBrown&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;LynnwoodBrown&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;OliverKrueger&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;OliverKrueger&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;ColasNahaboo&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;ColasNahaboo&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;KennethLavrsen&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;KennethLavrsen&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;MarkusUeberall&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;MarkusUeberall&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;SvenDowideit&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;SvenDowideit&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;AntonioTerceiro&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;AntonioTerceiro&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;WillNorris&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;WillNorris&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;MartinCleaver&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;MartinCleaver&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;th class&#61;&#34;headline&#34; colspan&#61;&#34;3&#34;&#62;New to core development&#60;/th&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;SebastianKlus&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;SebastianKlus&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;OlivierRaginel&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;OlivierRaginel&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;EugenMayer&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;EugenMayer&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;LarsEik&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;LarsEik&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;IsaacLin&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;IsaacLin&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;GeorgeClark&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;GeorgeClark&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;oldmember&#34;&#62;AndrewJones&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/arrow.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;AndrewJones&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;th class&#61;&#34;headline&#34; colspan&#61;&#34;3&#34;&#62;New developers&#60;/th&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/new.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;SeanMcCarthy&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/new.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;RobManson&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/new.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;BenBeijer&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/new.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;RaulFRodriguez&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/new.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;MarkSchumann&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/new.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;MichaelTempest&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/new.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;AndrewPantyukhin&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/new.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;DrakeDiedrich&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td&#62;&#60;/td&#62;&#60;td class&#61;&#34;memberaction&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry36/new.gif&#34;&#62;&#60;/td&#62;&#60;td&#62;PaulHarvey&#60;/td&#62;&#60;/tr&#62; &#60;tr&#62;&#60;td class&#61;&#34;headline&#34;&#62;2 Core Contributers&#60;/td&#62;&#60;td class&#61;&#34;headline&#34;&#62;&#60;/td&#62;&#60;td class&#61;&#34;headline&#34;&#62;32 Core Contributers&#60;/td&#62;&#60;/tr&#62; &#60;/table&#62; &#60;p /&#62; &#60;h3&#62;&#60;a name&#61;&#34;Statement&#34;&#62;&#60;/a&#62; Statement &#60;/h3&#62; &#60;h4&#62;&#60;a name&#61;&#34;Developer&#95;community&#34;&#62;&#60;/a&#62;&#60;a name&#61;&#34;Developer&#95;community&#95;&#34;&#62;&#60;/a&#62; Developer community: &#60;/h4&#62; Look at the list of developers contributed to the core of both projects since the commercial takeover of Twiki.net. The TWiki.org development community has dropped to almost nothing &#8211; only Peter and his employee Sopan is left. Whereby all other TWiki.org core developers moved to Foswiki.org. Together with new developers, Foswiki has almost doubled its core contributors!  &#60;p /&#62; &#60;div &#62; &#60;table cellspacing&#61;&#34;0&#34; id&#61;&#34;table1&#34; cellpadding&#61;&#34;0&#34; class&#61;&#34;twikiTable&#34; rules&#61;&#34;rows&#34; border&#61;&#34;1&#34;&#62; &#9;&#60;tbody&#62; &#9;&#9;&#60;tr class&#61;&#34;twikiTableOdd twikiTableRowdataBgSorted0 twikiTableRowdataBg0&#34;&#62; &#9;&#9;&#9;&#60;td bgcolor&#61;&#34;#ffffff&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol0 twikiFirstCol&#34;&#62; &#38;nbsp; &#60;/td&#62; &#9;&#9;&#9;&#60;th bgcolor&#61;&#34;#687684&#34; colspan&#61;&#34;2&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol1&#34;&#62; &#60;font color&#61;&#34;#ffffff&#34;&#62;Number of core contributors&#60;/font&#62; &#60;/th&#62; &#9;&#9;&#60;/tr&#62; &#9;&#9;&#60;tr class&#61;&#34;twikiTableEven twikiTableRowdataBgSorted1 twikiTableRowdataBg1&#34;&#62; &#9;&#9;&#9;&#60;td bgcolor&#61;&#34;#edf4f9&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol0 twikiFirstCol&#34;&#62; &#38;nbsp; &#60;/td&#62; &#9;&#9;&#9;&#60;th bgcolor&#61;&#34;#687684&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol1&#34;&#62; &#60;font color&#61;&#34;#ffffff&#34;&#62;before commercial takeover&#60;br&#62;of TWiki.org (2008-10-27)&#60;/font&#62; &#60;/th&#62; &#9;&#9;&#9;&#60;th bgcolor&#61;&#34;#687684&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol2 twikiLastCol&#34;&#62; &#60;font color&#61;&#34;#ffffff&#34;&#62;one year later (2009-10-27)&#60;/font&#62; &#60;/th&#62; &#9;&#9;&#60;/tr&#62; &#9;&#9;&#60;tr class&#61;&#34;twikiTableOdd twikiTableRowdataBgSorted0 twikiTableRowdataBg0&#34;&#62; &#9;&#9;&#9;&#60;th bgcolor&#61;&#34;#687684&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol0 twikiFirstCol&#34;&#62; &#60;font color&#61;&#34;#ffffff&#34;&#62;TWiki.org&#60;/font&#62; &#60;/th&#62; &#9;&#9;&#9;&#60;td bgcolor&#61;&#34;#ffffff&#34; align&#61;&#34;center&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol1&#34;&#62; &#60;b&#62;18&#60;/b&#62; &#60;/td&#62; &#9;&#9;&#9;&#60;td bgcolor&#61;&#34;#ffffff&#34; align&#61;&#34;center&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol2 twikiLastCol&#34;&#62; &#60;b&#62;2&#60;/b&#62; &#60;/td&#62; &#9;&#9;&#60;/tr&#62; &#9;&#9;&#60;tr class&#61;&#34;twikiTableEven twikiTableRowdataBgSorted1 twikiTableRowdataBg1&#34;&#62; &#9;&#9;&#9;&#60;th bgcolor&#61;&#34;#687684&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol0 twikiFirstCol twikiLast&#34;&#62; &#60;font color&#61;&#34;#ffffff&#34;&#62;Foswiki.org&#60;/font&#62; &#60;/th&#62; &#9;&#9;&#9;&#60;td bgcolor&#61;&#34;#edf4f9&#34; align&#61;&#34;center&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol1 twikiLast&#34;&#62; &#60;b&#62;n/a&#60;/b&#62; &#60;/td&#62; &#9;&#9;&#9;&#60;td bgcolor&#61;&#34;#edf4f9&#34; align&#61;&#34;center&#34; valign&#61;&#34;top&#34; class&#61;&#34;twikiTableCol2 twikiLastCol twikiLast&#34;&#62; &#60;b&#62;32&#60;/b&#62; &#60;/td&#62; &#9;&#9;&#60;/tr&#62; &#9;&#60;/tbody&#62;&#60;/table&#62; &#60;/div&#62; &#60;p /&#62; &#60;h3&#62;&#60;a name&#61;&#34;Healthy&#95;Downloads&#34;&#62;&#60;/a&#62;&#60;a name&#61;&#34;Healthy&#95;Downloads&#95;&#34;&#62;&#60;/a&#62; Healthy Downloads: &#60;/h3&#62; Yes, lots of users still download the old TWiki code as they don&#38;#180;t know about Foswiki and its progress. Our marketing was very bad as we are better in concentrating on improvements than in talk about it. Sadly even most of our old TWiki user community don&#38;#180;t know about Foswiki and may wonder why there is no progress on TWiki.org. &#60;p /&#62; &#60;h3&#62;&#60;a name&#61;&#34;Sources&#34;&#62;&#60;/a&#62; Sources &#60;/h3&#62; &#60;p /&#62; As the analysis is based on open source, you can easily check the correctness of the data by yourself. For the first analyzation I used the following sources: &#60;ul&#62; &#60;li&#62; &#60;a href&#61;&#34;http://svn.twiki.org/svn/twiki/trunk/core/&#34;&#62;TWiki.org SVN trunk/core&#60;/a&#62; &#60;/li&#62; &#60;li&#62; &#60;a href&#61;&#34;http://svn.foswiki.org/trunk/core/&#34;&#62;Foswiki.org SVN trunk/core&#60;/a&#62; &#60;/li&#62;&#60;/ul&#62;  &#60;p /&#62; Don&#39;t miss the rest of the series:  &#60;ul&#62; &#60;li&#62; &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogEntry35&#34; class&#61;&#34;twikiLink&#34;&#62;Introduction&#60;/a&#62; &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;community&#34; rel&#61;&#34;tag&#34;&#62;community&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;foswiki&#34; rel&#61;&#34;tag&#34;&#62;foswiki&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;opensource&#34; rel&#61;&#34;tag&#34;&#62;opensource&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;twiki&#34; rel&#61;&#34;tag&#34;&#62;twiki&#60;/a&#62;  &#60;/li&#62;&#60;/ul&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry35">
 <title> Development of Foswiki and TWiki &#8211; get the facts (Intro) </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry35</link>
 <dc:creator>AndreUlrich</dc:creator>
 <dc:date>2009-11-14T16:57:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> One year after the commercial take over of TWiki.org its time look how TWiki and its successor Foswiki performed. A small blog series will cover facts and give you insight into the development status of both projects.&#60;p /&#62; &#60;h2&#62;&#60;a name&#61;&#34;Intro&#34;&#62;&#60;/a&#62; Intro &#60;/h2&#62; &#60;p /&#62; As a Wiki consultancy we regulary got asked about different projects and how good they are. In case of TWiki.org and &#60;a href&#61;&#34;http://www.foswiki.org&#34; target&#61;&#34;&#95;top&#34;&#62;Foswiki.org&#60;/a&#62; customers are very irritated and cannot see the difference. The fact that Foswiki is based on TWiki, but got developed much further within the last year is not obvious to most users. Contrary to the fact that Foswiki is the superior product, TWiki still has the better recognition marketing wise. &#60;p /&#62; In order to help our customers getting an insight into the development of both projects I will do an analysis and compile the results in an understandable way. The results will be published in a small series of articles. &#60;p /&#62; The first analysis will be based on core development of both projects, as this is a major indicator for the health of a software project. This is because you need a lot more knowledge and background for developing the core product than for writing an extension with a clearly defined API. &#60;p /&#62; As the analysis will be based on open source, you can easily check the correctness of the data by yourself. For the first analyzation I will use the following sources: &#60;ul&#62; &#60;li&#62; &#60;a href&#61;&#34;http://svn.twiki.org/svn/twiki/trunk/core/&#34;&#62;TWiki.org SVN trunk/core&#60;/a&#62; &#60;/li&#62; &#60;li&#62; &#60;a href&#61;&#34;http://svn.foswiki.org/trunk/core/&#34;&#62;Foswiki.org SVN trunk/core&#60;/a&#62; &#60;/li&#62;&#60;/ul&#62;  &#60;p /&#62; Stay tuned and see how Foswiki and TWiki developed over the past year. &#60;p /&#62; Continue reading at: &#60;ul&#62; &#60;li&#62; &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogEntry36&#34; class&#61;&#34;twikiLink&#34;&#62;Development of Foswiki and TWiki &#8211; get the facts (Part 1)&#60;/a&#62; &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;community&#34; rel&#61;&#34;tag&#34;&#62;community&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;fork&#34; rel&#61;&#34;tag&#34;&#62;fork&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;foswiki&#34; rel&#61;&#34;tag&#34;&#62;foswiki&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;opensource&#34; rel&#61;&#34;tag&#34;&#62;opensource&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;twiki&#34; rel&#61;&#34;tag&#34;&#62;twiki&#60;/a&#62;  &#60;/li&#62;&#60;/ul&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry34">
 <title> Foswiki-1.0.7 released </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry34</link>
 <dc:creator>MichaelDaum</dc:creator>
 <dc:date>2009-09-21T10:25:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> The amount of improvements is impressive. The bug fixing carousel passed another lap and pace increases noticeably as new high potential contributors have joined the Foswiki core team. This is easily the best release we ever had.  &#60;p /&#62; &#60;div id&#61;&#34;&#34; class&#61;&#34;imageFloat imageFloat&#95;right &#34; &#62;&#60;a href&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/virgo-300.gif&#34; class&#61;&#34;imageHref&#34; title&#61;&#34;Foswiki 1o7, a Virgo&#34;&#62;&#60;img border&#61;&#34;0&#34; src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/virgo-300.gif&#34; alt&#61;&#34;virgo-300.gif&#34; width&#61;&#34;300&#34; height&#61;&#34;171&#34; longdesc&#61;&#34;Foswiki 1o7, a Virgo&#34;  /&#62;&#60;/a&#62;&#60;/div&#62;&#60;p /&#62;And this is not all. The Fosswiki Association e.V. has &#60;a href&#61;&#34;http://blog.foswiki.org/2009/09/foswiki-association-was-founded-on-20090909/&#34; target&#61;&#34;&#95;top&#34;&#62;just recently been founded&#60;/a&#62; formally. The first constitutive general assembly will take place within the next two months to ratify its articles, vote for the board and convert &#60;a href&#61;&#34;http://foswiki.org/Community/VirtualBeer&#34; target&#61;&#34;&#95;top&#34;&#62;virtual beers&#60;/a&#62; into physical ones. Maybe it will take place around Nov 20. This would be a great date as we could celebrate Foswiki&#39;s first anniversary having decided on the new project&#39;s name one year before. &#60;p /&#62; &#60;br clear&#61;&#34;all&#34; /&#62; Read the &#60;a href&#61;&#34;http://n2.nabble.com/ANNOUNCE-Release-of-Foswiki-version-1-0-7-td3682089.html&#34; target&#61;&#34;&#95;top&#34;&#62;full release notes&#60;/a&#62; and &#60;a href&#61;&#34;http://foswiki.org/Download&#34; target&#61;&#34;&#95;top&#34;&#62;go grab it here&#60;/a&#62;. &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;community&#34; rel&#61;&#34;tag&#34;&#62;community&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;foswiki&#34; rel&#61;&#34;tag&#34;&#62;foswiki&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;opensource&#34; rel&#61;&#34;tag&#34;&#62;opensource&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;release&#34; rel&#61;&#34;tag&#34;&#62;release&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogPage1">
 <title> Foswiki and TWiki reviews on Sourceforge </title>
 <link>http://blog.wikiring.com/Blog/BlogPage1</link>
 <dc:creator>MichaelDaum</dc:creator>
 <dc:date>2009-09-21T00:00:00Z</dc:date>
 <dc:subject></dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> &#60;p /&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry33">
 <title> Foswiki.org running on a new server </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry33</link>
 <dc:creator>MichaelDaum</dc:creator>
 <dc:date>2009-08-24T09:43:00Z</dc:date>
 <dc:subject>WikiRing, Sponsorship</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> &#60;div id&#61;&#34;&#34; class&#61;&#34;imageFloat imageFloat&#95;right &#34; &#62;&#60;a href&#61;&#34;http://www.sonologic.nl&#34; class&#61;&#34;imageHref&#34; title&#61;&#34;sonologic-logo.png&#34;&#62;&#60;img border&#61;&#34;0&#34; src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/sonologic-logo.png&#34; alt&#61;&#34;sonologic-logo.png&#34; width&#61;&#34;146&#34; height&#61;&#34;55&#34; longdesc&#61;&#34;sonologic-logo.png&#34;  /&#62;&#60;/a&#62;&#60;/div&#62;  We are all quite excited about the recent and upcoming changes on the &#60;a href&#61;&#34;http://foswiki.org&#34; target&#61;&#34;&#95;top&#34;&#62;Foswiki project&#60;/a&#62;. Now &#60;a href&#61;&#34;http://blog.wikiring.com/Public/KoenMartens&#34; class&#61;&#34;twikiLink&#34;&#62;Koen Martens&#60;/a&#62; has set up a new hardware for the Foswiki main server and migrated the site. Big big thanks to Koen  and his company &#60;a href&#61;&#34;http://www.sonologic.nl&#34; target&#61;&#34;&#95;top&#34;&#62;Sonologic&#60;/a&#62; hosting it and all people that donated money to buy the new iron. &#60;p /&#62;Here are some pictures: &#60;p /&#62; &#60;div class&#61;&#34;igp&#34;&#62;&#60;a name&#61;&#34;igp1&#34;&#62;&#60;/a&#62;&#60;div class&#61;&#34;igpThumbNails&#34;&#62;&#60;table class&#61;&#34;igpThumbNailsTable&#34;&#62;&#60;tr&#62; &#60;td width&#61;&#34;50&#37;&#34; class&#61;&#34;igpThumbNail&#34;&#62;&#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogEntry33?id&#61;1&#38;amp;filename&#61;1250942581310.jpg#igp1&#34;&#62;&#60;img src&#61;&#34;/pub/images/Blog/BlogEntry33/1/thumb&#95;1250942581310.jpg&#34; title&#61;&#34;1250942581310&#34; alt&#61;&#34;1250942581310.jpg&#34;/&#62;&#60;/a&#62;&#60;/td&#62; &#60;td width&#61;&#34;50&#37;&#34; class&#61;&#34;igpThumbNail&#34;&#62;&#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogEntry33?id&#61;1&#38;amp;filename&#61;1250942758547.jpg#igp1&#34;&#62;&#60;img src&#61;&#34;/pub/images/Blog/BlogEntry33/1/thumb&#95;1250942758547.jpg&#34; title&#61;&#34;1250942758547&#34; alt&#61;&#34;1250942758547.jpg&#34;/&#62;&#60;/a&#62;&#60;/td&#62; &#60;/tr&#62; &#60;td width&#61;&#34;50&#37;&#34; class&#61;&#34;igpThumbNail&#34;&#62;&#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogEntry33?id&#61;1&#38;amp;filename&#61;1250970501191.jpg#igp1&#34;&#62;&#60;img src&#61;&#34;/pub/images/Blog/BlogEntry33/1/thumb&#95;1250970501191.jpg&#34; title&#61;&#34;1250970501191&#34; alt&#61;&#34;1250970501191.jpg&#34;/&#62;&#60;/a&#62;&#60;/td&#62; &#60;td width&#61;&#34;50&#37;&#34; class&#61;&#34;igpThumbNail&#34;&#62;&#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogEntry33?id&#61;1&#38;amp;filename&#61;1250970545822.jpg#igp1&#34;&#62;&#60;img src&#61;&#34;/pub/images/Blog/BlogEntry33/1/thumb&#95;1250970545822.jpg&#34; title&#61;&#34;1250970545822&#34; alt&#61;&#34;1250970545822.jpg&#34;/&#62;&#60;/a&#62;&#60;/td&#62; &#60;/tr&#62; &#60;/tr&#62; &#60;/table&#62;&#60;/div&#62; &#60;/div&#62;  &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;community&#34; rel&#61;&#34;tag&#34;&#62;community&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;foswiki&#34; rel&#61;&#34;tag&#34;&#62;foswiki&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;hardware&#34; rel&#61;&#34;tag&#34;&#62;hardware&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;server&#34; rel&#61;&#34;tag&#34;&#62;server&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry32">
 <title> ClearQuest interface for Foswiki (and TWiki) </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry32</link>
 <dc:creator>CrawfordCurrie</dc:creator>
 <dc:date>2009-06-04T11:14:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> Is there any interest in such an interface?&#60;p /&#62;For the last couple of years, C-dot Consultants has been working with a client to develop a plugin that interfaces to the well known (and quite excellent) &#60;a href&#61;&#34;http://www-01.ibm.com/software/awdtools/clearquest/&#34; target&#61;&#34;&#95;top&#34;&#62;IBM ClearQuest&#60;/a&#62; bug tracking and workflow management system. This interface allows Wiki users to make queries into the ClearQuest database, and present the results of those queries in tabular and graphical form. The interface was developed for the client&#39;s internal use, and has been heavily used by a large number of people for quite some time. It has proven to be very reliable. It occurred to us that it might be of some use to other enterprises who use ClearQuest. If you are interested, please contact me. &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;clearquest&#34; rel&#61;&#34;tag&#34;&#62;clearquest&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;foswiki&#34; rel&#61;&#34;tag&#34;&#62;foswiki&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;ibm&#34; rel&#61;&#34;tag&#34;&#62;ibm&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;integration&#34; rel&#61;&#34;tag&#34;&#62;integration&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;plugin&#34; rel&#61;&#34;tag&#34;&#62;plugin&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;tracking&#34; rel&#61;&#34;tag&#34;&#62;tracking&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;wikiapps&#34; rel&#61;&#34;tag&#34;&#62;wikiapps&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry31">
 <title> New WebDAV plugin for Foswiki (and TWiki) </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry31</link>
 <dc:creator>CrawfordCurrie, AndreUlrich</dc:creator>
 <dc:date>2009-05-08T11:04:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> The new WebDAV plugin provides direct access to files stored within the Wiki for desktop applications such as Word, Excel and PowerPoint. &#60;p /&#62;&#60;a href&#61;&#34;http://www.webdav.org&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry31/webdav-logo.jpg&#34; &#62;&#60;/a&#62;&#60;a href&#61;&#34;http://www.kontextwork.de&#34; target&#61;&#34;&#95;top&#34;&#62;KontextWork&#60;/a&#62; and &#60;a href&#61;&#34;http://c-dot.co.uk&#34; target&#61;&#34;&#95;top&#34;&#62;C-Dot Consultants&#60;/a&#62; have worked together to create the WebDAVContrib, a brand new Web DAV implementation for &#60;a href&#61;&#34;http://www.foswiki.org&#34; target&#61;&#34;&#95;top&#34;&#62;Foswiki&#60;/a&#62; and Apache 2. &#60;p /&#62; &#60;a href&#61;&#34;http://www.webdav.org/&#34; target&#61;&#34;&#95;top&#34;&#62;Web DAV&#60;/a&#62; (Web-based Distributed Authoring and Versioning) is a set of extensions to the Hypertext Transfer Protocol (HTTP) that allows users to edit and manage files collaboratively on remote World Wide Web servers. &#60;p /&#62; The new Web DAV module maps Foswiki content &#8211; webs, topics and attachments &#8211; to a directory structure, and exports it using the Web DAV protocol. It allows users to work with Foswiki content using the tools they are most familiar with, without compromising on Foswiki features. For example attachments can be opened, manipulated and saved right within desktop applications such as Microsoft Office, Open Office, Adobe Photoshop (and many more). Wiki webs can be opened in file browsers such as Windows Explorer, and wiki topics can be edited using many different text editors. &#60;p /&#62; The new plugin is a completely new Perl implementation of Web DAV, written specifically for Apache 2, and has been extensively tested using the standard &#60;a href&#61;&#34;http://www.webdav.org/neon/litmus/&#34; target&#61;&#34;&#95;top&#34;&#62;litmus tests&#60;/a&#62;. It works over HTTP and secure HTTPS, fully respects Foswiki permissions, and can be used with all standard Apache authentication methods. A version for TWiki is also available. &#60;p /&#62; The WebDAVContrib is currently undergoing final pre-release testing. Contact &#60;a href&#61;&#34;http://blog.wikiring.com/Public/AndreUlrich&#34; class&#61;&#34;twikiLink&#34;&#62;Andre Ulrich&#60;/a&#62; for availability and pricing. &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;documentmanagement&#34; rel&#61;&#34;tag&#34;&#62;documentmanagement&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;foswiki&#34; rel&#61;&#34;tag&#34;&#62;foswiki&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;integration&#34; rel&#61;&#34;tag&#34;&#62;integration&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;webdav&#34; rel&#61;&#34;tag&#34;&#62;webdav&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry30">
 <title> Improve PublishContrib </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry30</link>
 <dc:creator>CrawfordCurrie</dc:creator>
 <dc:date>2009-05-08T09:22:00Z</dc:date>
 <dc:subject>WikiRing, Sponsorship</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> I&#39;ve been thinking about doing some more work on the PublishContrib, to make it more useful for people who want controlled publishing processes, for example those who publish process manuals.&#60;p /&#62;Here are some of the requirements I&#39;ve been thinking about:    &#60;ol&#62; &#60;li&#62; More flexible specification of publish sets, including publishing groups of webs &#60;/li&#62; &#60;li&#62; Record keeping (who published what, when, and what they published)  &#60;/li&#62;&#60;/ol&#62;  &#60;p /&#62; &#60;a href&#61;&#34;http://blog.wikiring.com/Main/MichaelDaum&#34; class&#61;&#34;twikiLink&#34;&#62;Michael Daum&#60;/a&#62; has related, but slightly different requirements.  Michael publishes by copying content to a static web where it is picked up by a different CMS. So he has a common requirement to specify publish sets, but has additional requirements such as unpublishing, and automation of approval processes. Anyway, the upshot of the conversation was that we should have some common way of specifying &#34;publish sets&#34;. The current method &#8211; regexes in the publish topic &#8211; is so crude as to be laughable. The obvious approach to specifying publish sets would be to use WebNotify, but as Michael points out that&#39;s far too geeky. Another approach would be to think about &#34;specification&#34; and focus on the UI, perhaps build on the &#60;a href&#61;&#34;http://foswiki.org/Extensions/SubscribePlugin&#34; target&#61;&#34;&#95;top&#34;&#62;SubScribePlugin&#60;/a&#62;. Another approach would be to use a wiki app to gather published content into one place, similar to the genwebnotify.pl approach taken to generate the notification mails from the &#60;a href&#61;&#34;http://foswiki.org&#34; target&#61;&#34;&#95;top&#34;&#62;Foswiki:Tasks web&#60;/a&#62;. Record keeping means maintaining unforgeable records of a publishing event. That means stamping the published docs with publishing information, including the history in the published data, and publishing to publish-event specific targets (e.g. directories named by the current date).  &#60;p /&#62; It would be interesting to hear what other ideas people have had. &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;automation&#34; rel&#61;&#34;tag&#34;&#62;automation&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;cms&#34; rel&#61;&#34;tag&#34;&#62;cms&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;content&#34; rel&#61;&#34;tag&#34;&#62;content&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;foswiki&#34; rel&#61;&#34;tag&#34;&#62;foswiki&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;plugin&#34; rel&#61;&#34;tag&#34;&#62;plugin&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;publishing&#34; rel&#61;&#34;tag&#34;&#62;publishing&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;wikiapps&#34; rel&#61;&#34;tag&#34;&#62;wikiapps&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;workflow&#34; rel&#61;&#34;tag&#34;&#62;workflow&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry29">
 <title> Birthday Nr. 0 for Foswiki, the Free and Open Source Wiki </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry29</link>
 <dc:creator>MichaelDaum</dc:creator>
 <dc:date>2008-11-19T10:34:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> The community formerly known as TWiki.org has entered the home stretch to strip off its burdens of the past.&#60;p /&#62;On November 18th, the community has voted for a new name for the project that recently forked off TWiki.org and which hit the front pages recently under the working title NextWiki. So welcome the new old player. &#60;p /&#62; &#60;div &#62; Happy birthday to Foswiki. &#60;/div&#62; &#60;p /&#62; This is the start of a great new brand that is about to evolve at &#60;a href&#61;&#34;http://foswiki.org&#34; target&#61;&#34;&#95;top&#34;&#62;foswiki.org&#60;/a&#62; The tagline of the project is  &#60;p /&#62; &#60;cite&#62; The Free and Open Source Wiki &#60;/cite&#62; &#60;p /&#62; which obviously is reprocessing the trauma of the &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogEntry28&#34; class&#61;&#34;twikiLink&#34;&#62;Hostile takeover of the Open Source Project TWiki&#60;/a&#62; but also targets at its best competitors in the market segment, which are &#60;em&#62;not&#60;/em&#62; Open Source. &#60;p /&#62; It remains to be seen if this new project will be able to catch up with the field, as it was dropping behind recently, according to the &#60;a href&#61;&#34;http://www.gartner.com/DisplayDocument?id&#61;789812&#34; target&#61;&#34;&#95;top&#34;&#62;Magic Quadrant for Social Software, 2008&#60;/a&#62;. In this paper, Gartner categorizes TWiki as a niche player only whereas it was on par with Socialtext in the &#60;a href&#61;&#34;http://www.socialtext.com/about/resources/resource-files/Socialtext&#95;2513&#95;GartnerM.pdf&#34; target&#61;&#34;&#95;top&#34;&#62;Magic Quadrant for Team Collaboration and Social Software, 2007&#60;/a&#62;. That might be the result of the long paralysis caused by the governace crisis over the recent years on the TWiki project, which finally culminated in the recent fork 3 weeks ago. &#60;p /&#62; This paralysis obviously has been overcome as the new project Foswiki shows an impressive amount of activities by all members. Long-time contributors, that went on strike as the trademark issues on TWiki started to manifest, now show an outburst of activities, committing and impressive stream of updates and bugfixes to the new platform. Surely, a vast amount of work is related to rebranding the software by pinching the string &#34;TWiki&#34; out of every place.  &#60;p /&#62; The questionnaire on finding the new brand name for the project had an impressive 100 submissions spot on just within a few days. There was a prior survey among the community to find out about its likings for a new name that had even more submissions. Compare this with just a hand full of members that dared to voice up on the old TWiki project during all of its quarrels. That&#39;s over now and people obviously have fun again to volunteer.  &#60;p /&#62; There was already very positive feedback on the &#60;a href&#61;&#34;mailto&#38;#58;Nextwiki&#38;#45;cheer&#38;#45;and&#38;#45;donate&#38;#64;lists&#38;#46;sourceforge&#38;#46;net&#34;&#62;cheers-and-donate mailing list&#60;/a&#62; coming from outside. One of which says: &#60;p /&#62; &#60;cite&#62; The new website is very appealing and the first impression is not &#34;bitter&#34; but &#34;better&#34;, so keep that up! A big cheer for everyone involved in this initiative!! &#60;/cite&#62; &#60;p /&#62; Still, according to the criteria for a product to be listed on the Magic Quadrant study by Gartner, it seems quite probable that TWiki will drop out on 2009, as it lost its community which created the product before. Regarding its Open Source process, TWiki can be considered dead and with it goes its core engine. Foswiki, on the other side, now continues work on the engine with a lot of verve, but won&#39;t show up easily on a forthcoming 2009 Magic Quadrant as it still has to build up its new brand and user base. However, as most authors of extensions have moved to Foswiki and now maintain their work on the new platform, moving from TWiki to Foswiki is a natural choice to keep up with upstream updates and improvements. &#60;p /&#62; TWIKI.NET, the new owner of TWiki.org, won&#39;t rest and just watch. They are actively working on interesting applications to address intranet needs build on top of the TWiki engine. The fact that this software can be used to build applications like that is great in its own and TWIKI.NET does score in that field as far as can be seen from outside. But of how much value are such applications in the long run, when the platform they are build on erodes? TWIKI.NET is funded by venture capital paying a bunch of developers in Asia and elsewhere. Time will show if that business plan pays off to cope with all the open road works that they have to face all alone now. Good luck from WikiRing.  &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;community&#34; rel&#61;&#34;tag&#34;&#62;community&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;fork&#34; rel&#61;&#34;tag&#34;&#62;fork&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;foswiki&#34; rel&#61;&#34;tag&#34;&#62;foswiki&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;opensource&#34; rel&#61;&#34;tag&#34;&#62;opensource&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;twiki&#34; rel&#61;&#34;tag&#34;&#62;twiki&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry28">
 <title> Hostile takeover of Open Source Project TWiki </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry28</link>
 <dc:creator>MichaelDaum</dc:creator>
 <dc:date>2008-10-29T10:54:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> Yesterday, 2008-10-27: 21:00 GMT, just a minute before the regular TWiki release meeting, the company TWIKI.NET announced unilaterally that the best for the TWiki.org project would be for them to take over governance. With it comes a complete lock down of the community site. From that minute on, all long-time contributors have lost access to their code. Counter-reaction: the community has left the building, leaving TWIKI.NET without a contributing community. Question: is it a sensible move for a venture capital firm that depends on a healthy Open Source community to lock it out? &#60;p /&#62;&#60;div id&#61;&#34;&#34; class&#61;&#34;imageFloat imageFloat&#95;right &#34; &#62;&#60;a href&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/DirtyFork-300.jpg&#34; class&#61;&#34;imageHref&#34; title&#61;&#34;DirtyFork-300.jpg&#34;&#62;&#60;img border&#61;&#34;0&#34; src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/DirtyFork-300.jpg&#34; alt&#61;&#34;DirtyFork-300.jpg&#34; width&#61;&#34;126&#34; height&#61;&#34;300&#34; longdesc&#61;&#34;DirtyFork-300.jpg&#34;  /&#62;&#60;/a&#62;&#60;/div&#62; Access to the site is only granted if contributors agree to a set of newly installed terms and conditions dictated by TWIKI.NET, a company founded by Peter Thoeny 12 months ago. His power to do so grows out of two sources: (a) he is the sole owner of the trademark on TWiki and (b) he is sponsoring the server hardware and thus had root access. &#60;p /&#62; And now he has triggered the trademark gun and fired the TWiki community. He even repeatedly threatened people on the #twiki IRC channel that &#34;&#91;he has] been advised by one of &#91;his] investors, &#60;a href&#61;&#34;http://www.wsgr.com/WSGR/Index.aspx&#34; target&#61;&#34;&#95;top&#34;&#62;Wilson Sonsini Goodrich and Rosati&#60;/a&#62;,  that &#91;they] need to protect &#91;their] trademark&#34;. Clearly, their VC people have no picture of the situation other than their own return of investment. Sure, protecting a registered trademark is what it is all about. But threatening the community that has been working on TWiki on a volunteer basis for the recent 10 years that way is a bit strong. Too strong for the TWiki community. &#60;p /&#62; If there was ever any hope to re-establish a relationship of trust and faith to create a win/win situation by combining community &#38;amp; commerce, this is totally gone now. Thoeny installed himself as BDFL (Benevolvent Dictator for Life) again, despite being rejected by a community vote during the TWiki Summit in Berlin last month. &#60;p /&#62; During the TWiki Summit in Berlin 4+5 September 2008, it became clear that Thoeny has sold part of his trademark rights to his venture capital funded company. Part of that deal was that while he remains ownership on the trademark itself, TWIKI.NET gained the sole right to exploit the brand on a commercial basis. This created a completely new situation for the Open Source project and all of its already existing commercial eco-system. As a consequence, TWIKI.NET was asked to grant a perpetual license to the community to secure the legal situation for contributors and commercial stakeholders, a license that would only have formalized the way TWiki has been running for more than 10 years with Thoeny promising to &#34;take care of the brand&#34;. &#60;p /&#62; As faith in him as a leader diminished over the years, and the foreboding of a trademark problem increased, the community asked Thoeny to write down the rights he has granted orally before. Which he didn&#39;t. Instead he pulled the trademark trigger in a move he calls &#34;relaunching the project&#34; to &#34;weed out&#34; the good and the bad. Trust in Thoeny as a leader diminished last but not least when his role as a community leader became more and more mixed up with his interests as a CTO of TWIKI.NET, up to the point where he obviously showed more interest to cement a genuine marketing advantage for TWIKI.NET.  &#60;p /&#62; The rise of his newly created company continually eroded willingness to contribute to TWiki as an Open Source project. People were more and more irritated by the changed rules of the game. The community has been watching the actions of TWIKI.NET with a lot of interest, in the hope that they would add significant value to this very successful project. Unfortunately, they took an approach of recasting the success of the product, created with years of volunteer work, as their own success.  &#60;p /&#62; That&#39;s where Open Source shows its ugliest face. And there&#39;s definitely no beauty in this shock therapy, even though Tom Barton, CEO of TWIKI.NET says: &#34;the beautiful thing about open source is you don&#39;t need to recognize the authority of TWiki.net&#34;. What an irony to close another very sad chapter. The last one for TWiki.org as we knew it before. &#60;p /&#62; The appearance of TWIKI.NET on the scene forced a governance crisis TWiki was not able to overcome, despite the good progress that was made up to a couple of hours before. On the TWiki Summit in Berlin last month, a democratically elected Interim Board of Directors was founded whose sole agenda was to negotiate the conditions under which this governance crisis could have been overcome.  &#60;p /&#62; The plan was to create a TWiki Association consisting of a Board of Directors and a General Assembly following the example of KDE e.V. The board itself would have created so called Task Teams that manage the operational part of the project to a finer granularity. &#60;p /&#62; The members of the Interim Board of Directors were in the process of creating the Articles of Association and were prepared for the next logical move in an ever growing project, organizing it similarly to other projects in the Open Source business. This formal body would also have been an entry path for sponsors and other organizations willing to partner with TWiki as a project. No such thing was available before. The only way outside parties could have made donations was to give them directly to Thoeny and thereby TWIKI.NET.  &#60;p /&#62; This was the case when Sun donated server hardware to power the TWiki.org community site. Sun sponsored TWiki as an Open Source project, not TWIKI.NET. However, there was no entity other than Thoeny and TWIKI.NET to handle these opportunities and resources. It now is clear that the access to these server resource has been used against the TWiki community itself by locking it out. &#60;p /&#62; The democratically elected Interim Board of Directors of TWiki has been displaced by the trademark holder of TWiki as a final chord on the governance crisis. Now, Thoeny is sending around emails to high profile contributors individually to invite them to come back subordinate to the governance of TWIKI.NET. He obviously seems to be in hope that people will do so once the situation has settled. Quite far-fetched and not very likely to happen. Those same contributors who implemented the features he is praising aloud as the shiny new TWiki, are far too displeased by his hostile behavior to be willing to go back to business as usual. &#60;p /&#62; TWIKI.NET is striving to repaint their move as a &#34;new opportunity&#34;. What they don&#39;t see is that they have put their own business case into severe danger. They just lost the horse power for a product that they were selling. They have been signaling to the community that they don&#39;t have the manpower for certain developments and were seeking for help, even willing to pay work for hire. Another error. Adding money as an incentive to Open Source is changing the game completely. Before, people volunteered as part of an act of free speech. Add money to it and nobody will work for free anymore. This poisoned the dynamics. &#60;p /&#62; The current situation is that all core developers have left the ship and joined a new undertaking with the working title NextWiki. This is a fork based on the current code in TWiki that will soon be released under a new name. The goals of NextWiki are clear. Basically, the plan is to found an Association as a formal body for the project, including the reorganization of its governance down to all operational questions, as was in progress for the TWiki project. &#60;p /&#62; The result will be a much strengthened new player, much more agile as it just got rid of the reason for TWiki&#39;s ongoing paralysis.  &#60;p /&#62; There remains a message for TWiki&#39;s users: no worries, we continue working, faster and more productive than ever before, embedded in a volunteer-friendly environment. Sure, this fork now introduces a new choice that was not there before. Well, it &#60;em&#62;was&#60;/em&#62; there before and it was introduced by TWIKI.NET, not those guys that &#34;asked for a fork&#34;. TWiki users already had the choice between TWIKI.NET&#39;s product (a rebranded version of an old TWiki release, packaged as a VMware image), or Open Source TWiki, most recent stable version. This choice more or less remains available with the difference that you will get the real thing from a new site, reworked to be real Open Source, backed up by a large and highly motivated community as a guarantor for continuity and innovation.  &#60;p /&#62; &#60;p /&#62; &#60;p /&#62;  &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;community&#34; rel&#61;&#34;tag&#34;&#62;community&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;fork&#34; rel&#61;&#34;tag&#34;&#62;fork&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;opensource&#34; rel&#61;&#34;tag&#34;&#62;opensource&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;twiki&#34; rel&#61;&#34;tag&#34;&#62;twiki&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry25">
 <title> PerlPlugin </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry25</link>
 <dc:creator>CrawfordCurrie</dc:creator>
 <dc:date>2008-08-02T13:44:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> A new plugin uses the Safe module in Perl to constrain perl scripts in TWiki topics so they are safe to execute on your server.&#60;p /&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry25/PerlPlugin.gif&#34;  /&#62;We recently developed a TWiki plugin to support execution of Perl scripts that are written in TWiki topics. The scripts are executed on the server, and of course that means we have to do everything possible to ensure those scripts don&#39;t open security holes.For years Perl has had the &#60;a href&#61;&#34;http://search.cpan.org/~jhi/perl-5.8.0/ext/Opcode/Safe.pm&#34; target&#61;&#34;&#95;top&#34;&#62;Safe&#60;/a&#62; module, a clever package that provides a tightly constrained execution environment for Perl &#60;code&#62;eval&#60;/code&#62; statements. Perl compiles all its code to a rich set of high level opcodes, which are then run on a virtual machine. By limiting the set of opcodes that are allowed to be run in the container, the Safe module can be used to create a very secure execution environment.For example, most people would consider the perl &#39;backtick&#39; operator to be very dangerous, as it allows the caller arbitrary access to the shell. Backtick has a corresponding Perl opcode &#8211; called &#60;code&#62;backtick&#60;/code&#62; &#8211; and to disable it, all we have to do is to remove it from the set of legal opcodes. The Perl developers have even gone so far as to classify the operators according to the usual safety concerns that a caller may have, making it relatively easy to decide which to allow, and which to exclude.Of course there&#39;s more to safety than that. We also have to be sure that the code being executed only has access to the namespaces we want it to have access to. The default condition for scripts run in a safe container is that they can only access the namespace of the container. We have to explicitly grant the container access to other namespaces when we create it.Of course there are potential risks with allowing any sort of script execution on your server, but in the case of a web server behind a corporate firewall, those risks are relatively small, and the &#39;Safe&#39; module helps to make sure that such scripts are well controlled.The new TWiki plugin, called the PerlPlugin, is released under the GPL and is available to all WikiRing consultants for deployment on client sites. &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;perl&#34; rel&#61;&#34;tag&#34;&#62;perl&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;plugin&#34; rel&#61;&#34;tag&#34;&#62;plugin&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;security&#34; rel&#61;&#34;tag&#34;&#62;security&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry24">
 <title> Moving from Jot Spot to TWiki </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry24</link>
 <dc:creator>CrawfordCurrie</dc:creator>
 <dc:date>2008-03-28T11:57:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> How to convert Jot Spot data to TWiki&#60;p /&#62;With the &#60;a href&#61;&#34;http://www.google.com/intl/en/press/pressrel/20082802&#95;google&#95;sites.html&#34; target&#61;&#34;&#95;top&#34;&#62;recent announcement &#60;/a&#62; about the new Google Sites application, a number of former &#60;a href&#61;&#34;http://www.jot.com/about-jotspot.php&#34; target&#61;&#34;&#95;top&#34;&#62;Jot Spot&#60;/a&#62; customers have decided to migrate to &#60;a href&#61;&#34;http://twiki.org&#34; target&#61;&#34;&#95;top&#34;&#62;TWiki&#60;/a&#62;. WikiRing partner C-Dot Consultants has been engaged to help, and this post describes our experiences. &#60;p /&#62; Jot Spot stores topic data in an XML database. Within that database, actual topic data is stored as &#34;decorated HTML&#34;; the basic topic content is HTML, within which Jot applications are embedded using Jot Spot&#39;s proprietary script, which uses XML tags. &#60;p /&#62; Because of some fairly fundamental architectural differences between Jot Spot and TWiki it&#39;s not simple to automate the conversion of Jot Spot &#60;em&#62;applications&#60;/em&#62; to TWiki. Fortunately our clients have not invested heavily in developing Jot applications, but have instead chosen to use the applications that Jot Spot provide by default. So the focus of our work has been to: &#60;ol&#62; &#60;li&#62; Convert existing Jot Spot topics to TWiki, with minimal formatting loss &#60;/li&#62; &#60;li&#62; Map a subset of Jot applications (most notably the Bug Reporter) to TWiki &#60;/li&#62;&#60;/ol&#62;  &#60;p /&#62; Fortunately we were able to secure an XML dump of the Jot Spot database. This has alllowed us to perform the conversion without relying on the patchy availability of the Jot Spot site. Conversion of Jot topics has been achieved by leveraging a couple of existing technologies: &#60;ul&#62; &#60;li&#62; The SAX XML parser from CPAN &#60;/li&#62; &#60;li&#62; The open-source HTML to TML convertor we wrote for WYSIWYG editor integration into TWiki &#60;/li&#62;&#60;/ul&#62;  &#60;p /&#62; SAX allows us to parse the Jot XML, pick out the form fields, and identify the subset of the topics suitable for passing on to the HTML to TML convertor. The HTML to TML convertor is already a proven technology, used every day with the Tiny MCE integration in TWiki, so it is robust and minimises formatting loss. &#60;p /&#62; On the receiving side, we have customised the publicly available &#60;a href&#61;&#34;http://twiki.org/cgi-bin/view/Plugins.BugsContrib&#34; title&#61;&#34;&#39;Plugins.BugsContrib&#39; on TWiki.org&#34; class&#61;&#34;interwikiLink&#34;&#62;TWiki:Plugins.BugsContrib&#60;/a&#62; to support the data fields from the reporter in Jot Spot. We have had to develop a number of new reporting screens, something which has been made much simpler by the use of the &#60;code&#62;type&#61;&#34;query&#34;&#60;/code&#62; search we contributed to TWiki 4.2. &#60;p /&#62; It&#39;s cheering to note how similar the structure of a Jot Spot topic is to a TWiki topic. I guess you could call it convergent evolution! &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;conversion&#34; rel&#61;&#34;tag&#34;&#62;conversion&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;google&#34; rel&#61;&#34;tag&#34;&#62;google&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;jotspot&#34; rel&#61;&#34;tag&#34;&#62;jotspot&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry23">
 <title> Giving TWiki a REST </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry23</link>
 <dc:creator>CrawfordCurrie</dc:creator>
 <dc:date>2007-11-14T11:13:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> &#60;div id&#61;&#34;&#34; class&#61;&#34;imageFrame imageFrame&#95;right &#34; &#62;&#60;a href&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry23/sleep.jpg&#34; class&#61;&#34;imageHref&#34; title&#61;&#34;sleep.jpg&#34;&#62;&#60;img border&#61;&#34;0&#34; src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry23/sleep.jpg&#34; alt&#61;&#34;sleep.jpg&#34; width&#61;&#34;188&#34; height&#61;&#34;150&#34; longdesc&#61;&#34;sleep.jpg&#34;  /&#62;&#60;/a&#62;&#60;/div&#62; A Long, Long Time Ago &#60;a href&#61;&#34;http://twiki.org/cgi-bin/view/Main/RafaelAlvarez&#34; title&#61;&#34;&#39;Main/RafaelAlvarez&#39; on TWiki.org&#34; class&#61;&#34;interwikiLink&#34;&#62;Rafael Alvarez&#60;/a&#62; contributed a &#60;a href&#61;&#34;http://en.wikipedia.org/wiki/Representational&#95;State&#95;Transfer&#34; target&#61;&#34;&#95;top&#34;&#62;REST&#60;/a&#62; architecture for TWiki that until relatively recently had been largely ignored. That&#39;s a shame, because TWiki has fallen behind the curve on effective interaction, partly because it is so difficult and inefficient to interact with TWiki from Javascript. More recently we have been able to re-architect big sections of the core to make REST more useful. Writing a REST script still isn&#39;t all that easy, however. This post is intended to try and make it easier.&#60;p /&#62;See the &#60;a href&#61;&#34;http://en.wikipedia.org/wiki/Representational&#95;State&#95;Transfer&#34; target&#61;&#34;&#95;top&#34;&#62;Wikipedia article&#60;/a&#62; for the full gory details of what REST is. TWiki developers can think of a REST as a way of calling a single function in a a plugin, in a place where &#60;code&#62;TWiki::Func&#60;/code&#62; is available. REST handlers are designed primarily to be called from &#60;code&#62;XmlHttpRequest&#60;/code&#62;, but can also be useful in IFRAMEs. &#60;p /&#62; A REST handler is invoked via a URL to the &#60;code&#62;rest&#60;/code&#62; bin script. For example, &#60;pre&#62; &#38;#37;SCRIPTURL&#38;#37;/rest/WysiwygPlugin/tml2html?topic&#38;#61;&#38;#37;WEB&#38;#37;.&#38;#37;TOPIC&#38;#37;&#38;#38;text&#38;#61;Some&#38;#37;20test&#38;#37;20text &#60;/pre&#62;  would invoke the TML to HTML translator on TWiki.org (if it was available there). &#60;p /&#62; REST handlers can be added piecemeal to address specific requirements. However there are other structured approaches currently in development that the interested reader might be well advised to investigate: &#60;ul&#62; &#60;li&#62; &#60;a href&#61;&#34;http://blog.wikiring.com/Main/MichaelDaum&#34; class&#61;&#34;twikiLink&#34;&#62;Michael Daum&#60;/a&#62; developed the &#60;a href&#61;&#34;http://twiki.org/cgi-bin/view/Plugins.XmlRpcContrib&#34; title&#61;&#34;&#39;Plugins.XmlRpcContrib&#39; on TWiki.org&#34; class&#61;&#34;interwikiLink&#34;&#62;XmlRpcContrib&#60;/a&#62;, which supports &#60;a href&#61;&#34;http://en.wikipedia.org/wiki/XML-RPC&#34; target&#61;&#34;&#95;top&#34;&#62;XML-RPC&#60;/a&#62; calls &#60;/li&#62; &#60;li&#62; &#60;a href&#61;&#34;http://twiki.org/cgi-bin/view/Main.OliverKrueger&#34; title&#61;&#34;&#39;Main.OliverKrueger&#39; on TWiki.org&#34; class&#61;&#34;interwikiLink&#34;&#62;Olivre Krüger&#60;/a&#62; has developed a REST interface to the &#60;code&#62;TWiki::Func&#60;/code&#62; module. This interface uses &#60;a href&#61;&#34;http://en.wikipedia.org/wiki/JSON&#34; target&#61;&#34;&#95;top&#34;&#62;JSON &#60;/a&#62; and &#60;a href&#61;&#34;http://en.wikipedia.org/wiki/XML&#34; target&#61;&#34;&#95;top&#34;&#62;XML&#60;/a&#62; to communicate the results of calling Func methods back to the Javascript (or so Oliver tells me; I haven&#39;t seen the code yet) &#60;/li&#62; &#60;li&#62; &#60;a href&#61;&#34;http://blog.wikiring.com/Main/SvenDowideit&#34; class&#61;&#34;twikiLink&#34;&#62;Sven Dowideit&#60;/a&#62; is developing a REST plugin that uses the content-access syntax develop for search queries and IF statements in 4.2 to provide access to data in the TWiki database. This is most promising work, as it is a strong move in the direction of the &#60;a href&#61;&#34;http://twiki.org/cgi-bin/view/Codev.TopicObjectModel&#34; title&#61;&#34;&#39;Codev.TopicObjectModel&#39; on TWiki.org&#34; class&#61;&#34;interwikiLink&#34;&#62;TopicObjectModel&#60;/a&#62;. &#60;/li&#62;&#60;/ul&#62;  &#60;p /&#62; So much for the future; what about the present? How do I go about writing a REST handler? Well, I can only describe how &#60;em&#62;I&#60;/em&#62; do it; I&#39;m sure there will be other, probably better, approaches. &#60;p /&#62; As an example, let&#39;s look in detail at the REST function that implements the attachments list in the &#60;a href&#61;&#34;http://twiki.org/cgi-bin/view/Plugins.WysiwygPlugin&#34; title&#61;&#34;&#39;Plugins.WysiwygPlugin&#39; on TWiki.org&#34; class&#61;&#34;interwikiLink&#34;&#62;WysiwygPlugin&#60;/a&#62;. This Javascript function will, when given the name of a topic, return a list of the attachments on that topic. It uses: &#60;ul&#62; &#60;li&#62; XmlHttpRequest from within Javascript to make the request &#60;/li&#62; &#60;li&#62; &#60;code&#62;TWiki::Func&#60;/code&#62; to fetch the data that satisfies the request &#60;/li&#62; &#60;li&#62; HTTP status codes to transfer state and erros back to the client &#60;/li&#62; &#60;li&#62; JSON to transfer the data back to the client &#60;/li&#62;&#60;/ul&#62;  First let&#39;s look at the &#60;strong&#62;server&#60;/strong&#62; side of the solution. A REST handler is registered in &#60;code&#62;initPlugin&#60;/code&#62; thus: &#60;pre&#62; sub initPlugin {     TWiki::Func::registerRESTHandler(&#38;#39;attachments&#38;#39;, \&#38;#38;&#38;#95;restAttachments); } &#60;/pre&#62; Now for the handler body: &#60;pre&#62; sub &#38;#95;restAttachments {     my ($session) &#38;#61; &#38;#64;&#38;#95;;     my BlogEntry23 &#38;#61; TWiki::Func::getCgiQuery()-&#38;#62;param(&#38;#39;topic&#38;#39;);     my WRBlog;     (WRBlog, BlogEntry23) &#38;#61; TWiki::Func::normalizeWebTopicName(undef, BlogEntry23); &#60;/pre&#62; This first section of the handler simply examines the compulsory &#60;code&#62;topic&#60;/code&#62; parameter to the REST call to determine the topic we are interested in. Note that &#60;code&#62;normalizeWebTopicName&#60;/code&#62; will also untaint the web and topic names. Now we have the topic we can check the access permissions: &#60;pre&#62;     unless (TWiki::Func::checkAccessPermission(         &#38;#39;VIEW&#38;#39;, TWiki::Func::getWikiName(),         undef, BlogEntry23, WRBlog)) {         my $error &#38;#61; &#38;#34;Access denied&#38;#34;;         print CGI::header(-status &#38;#61;&#38;#62; 401);         print $error;         print STDERR $error;         return undef;     } &#60;/pre&#62; This demonstrates how to handle errors. If access is denied, we print a CGI header to STDOUT with a 401 (access denied) HTTP status code. We also print the message, and duplicate that print to STDERR so the message also goes to the Apache log. Returning &#60;code&#62;undef&#60;/code&#62; from a REST function just causes the &#60;code&#62;rest&#60;/code&#62; script to terminate without generating any more output, and is the recommended way to terminate on an error. &#60;pre&#62;     my ($meta, $text) &#38;#61; TWiki::Func::readTopic(WRBlog, BlogEntry23);     # Create a JSON list of attachment data, sorted by name     my &#38;#64;atts;     foreach my $att (sort { $a-&#38;#62;{name} cmp $b-&#38;#62;{name} }                                $meta-&#38;#62;find(&#38;#39;FILEATTACHMENT&#38;#39;)) {         push(&#38;#64;atts, &#38;#39;{&#38;#39;.join(&#38;#39;,&#38;#39;,                          map {                              &#38;#34;\&#38;#34;$&#38;#95;\&#38;#34;:\&#38;#34;$att-&#38;#62;{$&#38;#95;}\&#38;#34;&#38;#34;                          } keys &#38;#37;$att).&#38;#39;}&#38;#39;);     }     return &#38;#39;&#38;#91;&#38;#39;.join(&#38;#39;,&#38;#39;,&#38;#64;atts).&#38;#39;]&#38;#39;; } &#60;/pre&#62; Having passed the access control check, we now generate a list of attachment data in JSON format. We could have used the &#60;a href&#61;&#34;http://search.cpan.org/perldoc?JSON&#34; title&#61;&#34;CPAN perl repository&#34; class&#61;&#34;interwikiLink&#34;&#62;CPAN:JSON&#60;/a&#62; module to do this, but the data is so trivial in this case that the overhead of the extra module would have been excessive. &#60;p /&#62; When we return non-null data from a REST handler, the &#60;code&#62;rest&#60;/code&#62; script automatically generates a 200 HTTP (OK) status response, indicating correct termination of the call. &#60;p /&#62; Now, let&#39;s look at the Javascript. First we need to build the REST url: &#60;pre&#62; function attachments() {     // Work out the rest URL from the location     var scripturl &#38;#61; getTWikiVar(&#38;#34;SCRIPTURL&#38;#34;);     var suffix &#38;#61; getTWikiVar(&#38;#34;SCRIPTSUFFIX&#38;#34;);     if (suffix &#38;#61;&#38;#61; null) suffix &#38;#61; &#38;#39;&#38;#39;;     var path &#38;#61; getTWikiVar(&#38;#34;WEB&#38;#34;) + &#38;#39;.&#38;#39; + getTWikiVar(&#38;#34;TOPIC&#38;#34;); &#60;/pre&#62; In this code we have used a function called &#60;code&#62;getTWikiVar&#60;/code&#62; to obtain the values of some standard TWiki variables. How this function is implemented is outside the scope of this article, but a typical technique is to pass such variable values in META tags, as described in &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogEntry22&#34; class&#61;&#34;twikiLink&#34;&#62;a previous post&#60;/a&#62;. &#60;p /&#62; We now have sufficient information to build the URL for the REST script: &#60;pre&#62;     var url &#38;#61; scripturl + &#38;#34;/rest&#38;#34; + suffix + &#38;#34;/WysiwygPlugin/attachments&#38;#34;; &#60;/pre&#62; See the documentation accompanying Plugins.EmptyPlugin for more information on constructing REST urls. Now we perform a standard &#60;code&#62;XmlHttpRequest&#60;/code&#62; &#60;pre&#62;     if (tinyMCE.isIE) {         // branch for IE/Windows ActiveX version         request &#38;#61; new ActiveXObject(&#38;#34;Microsoft.XMLHTTP&#38;#34;);     } else {         // branch for native XMLHttpRequest object         request &#38;#61; new XMLHttpRequest();     }     request.open(&#38;#34;POST&#38;#34;, url, true);     request.setRequestHeader(         &#38;#34;Content-type&#38;#34;, &#38;#34;application/x-www-form-urlencoded&#38;#34;);     // nocache helps us defeat client-side cacheing of the result     var params &#38;#61; &#38;#34;nocache&#38;#61;&#38;#34; + encodeURIComponent((new Date()).getTime())         + &#38;#34;&#38;#38;topic&#38;#61;&#38;#34; + encodeURIComponent(path);          request.setRequestHeader(&#38;#34;Content-length&#38;#34;, params.length);     request.setRequestHeader(&#38;#34;Connection&#38;#34;, &#38;#34;close&#38;#34;);     request.onreadystatechange &#38;#61; function() {         attachmentListCallback(request);     };     request.send(params); &#60;/pre&#62; This request will be sent to the server, and when a response is ready the Javascript function &#60;code&#62;attachmentListCallback&#60;/code&#62; will be called. &#60;pre&#62; function attachmentListCallback(request) {     if (request.readyState &#38;#61;&#38;#61; 4) { // only if &#38;#34;OK&#38;#34;         if (request.status &#38;#61;&#38;#61; 200) {             var atts &#38;#61; request.responseText;             if (atts !&#38;#61; null) {                 atts &#38;#61; eval(atts);                 // atts is now an array of attachment objects, just like the perl             }         } else {             alert(&#38;#34;There was a problem retrieving the attachments list: &#38;#34;                   + request.statusText);         }     } } &#60;/pre&#62; And we are done!  &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;ajax&#34; rel&#61;&#34;tag&#34;&#62;ajax&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;javascript&#34; rel&#61;&#34;tag&#34;&#62;javascript&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;json&#34; rel&#61;&#34;tag&#34;&#62;json&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;rest&#34; rel&#61;&#34;tag&#34;&#62;rest&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;wysiwyg&#34; rel&#61;&#34;tag&#34;&#62;wysiwyg&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;xmlrpc&#34; rel&#61;&#34;tag&#34;&#62;xmlrpc&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry22">
 <title> How to get the values of TWiki variables into Javascript </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry22</link>
 <dc:creator>CrawfordCurrie</dc:creator>
 <dc:date>2007-09-26T20:14:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/CrawfordCurrie">
 <rdf:value>CrawfordCurrie</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> Getting the values of TWiki variables into Javascript can be a trial. This article describes one simple technique for doing that.&#60;p /&#62;Transferring the values of TWiki variables into Javascript. It&#39;s no problem if you write your Javascript inline, but that will soon become impossible if security settings are enabled on the server. You could always write a REST handler to drag the values over from the server using a &#60;code&#62;XmlHttpRequest&#60;/code&#62; &#8211; but that&#39;s like using a sledgehammer to swat flies. &#60;p /&#62; What&#39;s really needed is a simple methodology for making the values of selected TWiki variables available to Javascript. &#60;p /&#62; The problem is that while TWiki variables are expanded in templates, unless your Javascript is inline there is no way of getting that value into the Javascript. For example, let&#39;s take a simple example; we have an &#60;code&#62;input&#60;/code&#62;, and we want to invoke a validator on it: &#60;p /&#62; &#60;pre&#62; &#38;#60;script src&#38;#61;&#38;#34;&#38;#37;PUBURL&#38;#37;/&#38;#37;SYSTEMWEB&#38;#37;/MyPlugin/validator.js&#38;#34;&#38;#62;&#38;#60;/script&#38;#62; &#38;#60;input type&#38;#61;&#38;#34;text&#38;#34; value&#38;#61;&#38;#34;Urgh&#38;#34; onchange&#38;#61;&#38;#34;javascript:validateInput()&#38;#34;&#38;#62; &#60;/pre&#62; &#60;p /&#62; The validator is in a Javascript file called &#60;code&#62;validator.js&#60;/code&#62; &#60;pre&#62; function validateInput() {    var url &#38;#61; &#38;#39;&#38;#37;SCRIPTURL{rest}&#38;#37;/MyPlugin/Validate&#38;#39;;    &#8230; perform an XmlHttpRequest to get the value validated&#8230; } &#60;/pre&#62; The problem is that there is no way to expand &#60;code&#62;&#37;SCRIPTURL{rest}&#37;&#60;/code&#62; inside &#60;code&#62;validator.js&#60;/code&#62;. Somehow we have to pass this value to the Javascript. &#60;p /&#62; The easiest way to do this is in the DOM. And HTML generously gives us the &#60;code&#62;META&#60;/code&#62; tag that we can use as we see fit. So in our plugin, we can write: &#60;pre&#62; TWiki::Func::addToHEAD(&#38;#39;MYPLUGIN&#38;#39;, &#38;#39;&#38;#60;META name&#38;#61;&#38;#34;MyPluginData&#38;#34; value&#38;#61;&#38;#34;&#38;#37;SCRIPTURL{rest}&#38;#37;&#38;#34;&#38;#62;&#38;#39;); &#60;/pre&#62; &#60;p /&#62; Now we change &#60;code&#62;validator.js&#60;/code&#62; as follows: &#60;pre&#62; function validateInput() {    var meta &#38;#61; document.getElementsByTagName(&#38;#39;META&#38;#39;);    for (var i &#38;#61; 0; i &#38;#60; meta.length; i++)       if (meta&#38;#91;i].name &#38;#61;&#38;#61; &#38;#39;MyPluginData&#38;#39;) {          scripturl &#38;#61; meta&#38;#91;i].value;          break;       }    var url &#38;#61; scripturl + &#38;#39;/MyPlugin/Validate&#38;#39;;    &#8230; perform an XmlHttpRequest to get the value validated&#8230; } &#60;/pre&#62; &#60;p /&#62; Oviously if you are passing a number of values, it makes sense to do the search of the META tags once and build a hash of the values. &#60;p /&#62; If you can&#39;y write to the header for some reason, you can also use other (body) tags to perform a similar trick, and stop them being displayed using &#60;code&#62;style&#61;&#39;display:none&#39;&#60;/code&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry21">
 <title> TWiki (4.2 beta 1) now has a Windows Installer </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry21</link>
 <dc:creator>SvenDowideit</dc:creator>
 <dc:date>2007-09-22T07:11:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> TWiki 4.2 will be a much easier Wiki to install &#8211; with fully integrated native installers that will update your Computer with perl, apache and other tools needed to run TWiki.&#60;p /&#62;&#60;div  align&#61;&#34;center&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry21/logoed&#95;installer.jpg&#34; alt&#61;&#34;logoed&#95;installer.jpg&#34; width&#61;&#39;200&#39; height&#61;&#39;200&#39;  /&#62; &#60;br /&#62;   &#60;a href&#61;&#34;http://distributedinformation.com/TWikiInstallers/TWiki-4.2.0-beta1.1.exe&#34; target&#61;&#34;&#95;top&#34;&#62;Windows TWiki installer&#60;/a&#62; &#60;br /&#62;  4.2.0 beta 1.1 (23MB) &#60;/div&#62; &#60;p /&#62; &#60;p /&#62; The first of these installers released is the &#60;a href&#61;&#34;http://distributedinformation.com/TWikiInstallers/TWiki-4.2.0-beta1.1.exe&#34; target&#61;&#34;&#95;top&#34;&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/TWiki/TWikiDocGraphics/new.gif&#34; alt&#61;&#34;NEW&#34; title&#61;&#34;NEW&#34; width&#61;&#34;30&#34; height&#61;&#34;16&#34; border&#61;&#34;0&#34; /&#62; Windows TWiki installer&#60;/a&#62;, and includes &#60;ol&#62; &#60;li&#62; Apache 2.2,  &#60;/li&#62; &#60;li&#62; ActiveState Perl &#60;/li&#62; &#60;li&#62; CGI::Session &#60;/li&#62; &#60;li&#62; Gnu Grep  &#60;/li&#62; &#60;li&#62; &#60;a href&#61;&#34;http://twiki.org/cgi-bin/view/Codev.TWikiRelease04x02x00beta1&#34; title&#61;&#34;&#39;Codev.TWikiRelease04x02x00beta1&#39; on TWiki.org&#34; class&#61;&#34;interwikiLink&#34;&#62;TWiki 4.2.0 beta 1&#60;/a&#62;. &#60;/li&#62;&#60;/ol&#62;  &#60;p /&#62; Please download it, try it out and report your impressions, gripes, bugs and successes here, on TWiki.org, or in the TWiki &#60;a href&#61;&#34;http://blog.wikiring.com/edit/Blog/Bugs:WebHome?topicparent&#61;Blog.WebRss&#34; rel&#61;&#34;nofollow&#34; title&#61;&#34;Create this topic&#34;  class&#61;&#34;twikiNewLink&#34;&#62;Bugs&#60;/a&#62; system. &#60;p /&#62; Another TWiki innovation brought to you by &#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogEntry21/wikiring.png&#34; alt&#61;&#34;&#34;  width&#61;&#34;20&#34; height&#61;&#34;20&#34; border&#61;&#34;0&#34; /&#62; &#60;a href&#61;&#34;http://www.wikiring.com&#34; target&#61;&#34;&#95;top&#34;&#62;WikiRing.com&#60;/a&#62;. &#60;p /&#62;  &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;activestate&#34; rel&#61;&#34;tag&#34;&#62;activestate&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;apache&#34; rel&#61;&#34;tag&#34;&#62;apache&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;installer&#34; rel&#61;&#34;tag&#34;&#62;installer&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;windows&#34; rel&#61;&#34;tag&#34;&#62;windows&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry20">
 <title> STC Spring Event highlights Technical Communicator's issues </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry20</link>
 <dc:creator>CrawfordCurrie</dc:creator>
 <dc:date>2007-03-11T12:00:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> STC Spring Event highlights issues of Technical Communicators, and reveals an interesting new way of assessing &#34;Web-2-ness&#34;&#60;p /&#62;&#60;img src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/navLogo.gif&#34; width&#61;&#34;327&#34; height&#61;&#34;79&#34; border&#61;&#34;0&#34; alt&#61;&#34;&#34;&#62;&#60;br /&#62;  Yesterday I attended the STC (Society for Technical Communication &#60;a href&#61;&#34;http://www.stc.org)&#34; target&#61;&#34;&#95;top&#34;&#62;http://www.stc.org)&#60;/a&#62; spring event, where I was invited to give a talk on uses of Wikis and Blogs in industry. There was a great deal of interest in the way wikis can help enable collaborative authoring, especially in reducing the length of the revision cycle, and in engaging &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/SME&#34; class&#61;&#34;twikiLink&#34;&#62;SME&#60;/a&#62;s in the writing process. &#60;p /&#62; I shared the platform with Ellis Pratt of Cherryleaf who was speaking about the impact of Web 2.0 on technical communicators; not a small subject, it emerges. Ellis drew a lot of examples of new and existing sites that either claim, or actually do, implement Web 2-ness. Ellis had an interesting way of breaking down Web 2 so that it is more comprehensible to the layman. He breaks down the degree to which sites/technologies contribute to Web 2 on the basis of three criteria: &#60;ul&#62; &#60;li&#62; Collaboration &#60;ul&#62; &#60;li&#62; the degree to which the site/technology enables multiple parties to work together &#60;/li&#62;&#60;/ul&#62;  &#60;/li&#62; &#60;li&#62; Conversation &#60;ul&#62; &#60;li&#62; whether the site/technology enables an exchange of views between users &#60;/li&#62;&#60;/ul&#62;  &#60;/li&#62; &#60;li&#62; Aggregation &#60;ul&#62; &#60;li&#62; whether the site/technology enables new ways of collecting/mining other data &#60;/li&#62;&#60;/ul&#62;  &#60;/li&#62;&#60;/ul&#62;  One interesting observation was the way that many products are now being independently documented on the web, as users, frustrated with the availability or quality of information, write and share their own. &#60;p /&#62; Amusingly enough both Ellis and I had incorporated the KCU &#60;a href&#61;&#34;http://www.youtube.com/watch?v&#61;6gmP4nk0EOE&#34; target&#61;&#34;&#95;top&#34;&#62;The Machine is Us/ing Us&#60;/a&#62; video in our presentations. Watch it, it&#39;s really good.  &#60;p /&#62; Altogether a very enjoyable day. &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;collaboration&#34; rel&#61;&#34;tag&#34;&#62;collaboration&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;user&#34; rel&#61;&#34;tag&#34;&#62;user&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;web2&#34; rel&#61;&#34;tag&#34;&#62;web2&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;wiki&#34; rel&#61;&#34;tag&#34;&#62;wiki&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry18">
 <title> Caching for TWiki, Part II </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry18</link>
 <dc:creator>MichaelDaum</dc:creator>
 <dc:date>2007-02-27T22:25:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> &#60;div id&#61;&#34;&#34; class&#61;&#34;imageFrame imageFrame&#95;left &#34; &#62;&#60;a href&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/tins.jpg&#34; class&#61;&#34;imageHref&#34; title&#61;&#34;tins.jpg&#34;&#62;&#60;img border&#61;&#34;0&#34; src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/&#95;220&#95;&#95;&#95;tins.jpg&#34; alt&#61;&#34;tins.jpg&#34; width&#61;&#34;220&#34; height&#61;&#34;162&#34; longdesc&#61;&#34;tins.jpg&#34;  /&#62;&#60;/a&#62;&#60;/div&#62; The current TWiki::Cache implementation has been &#60;a href&#61;&#34;http://twiki.org/cgi-bin/view/Codev/TWikiCache&#34; target&#61;&#34;&#95;top&#34;&#62;proposed for integration&#60;/a&#62; to the next TWiki release (code name freetown).&#60;p /&#62;The current code implements some storage backends now. Before we only had a &#60;code&#62;Cache::Memcached&#60;/code&#62; based backend which is great on your own servers, but not applicable for little TWiki installations in hosted environments where you are not allowed to launch daemon processes.  &#60;p /&#62; &#60;br clear&#61;&#34;both&#34; /&#62; What we have right now is &#60;ul&#62; &#60;li&#62; Cache::Memcached &#60;/li&#62; &#60;li&#62; Cache::FileCache &#60;/li&#62; &#60;li&#62; Cache::SizeAwareFileCache &#60;/li&#62; &#60;li&#62; Cache::MemoryCache &#60;/li&#62; &#60;li&#62; Cache::SizeAwareMemoryCache &#60;/li&#62;&#60;/ul&#62;  I did not make use of the shared memory variants as they are quite limited in their storage capacity. The Cache::FileCache is said to perform as fast anyway, but does not have those restrictions. For html page caching the first two variants are the most interesting. Basically you can forget Cache::SizeAwareFileCache, and it&#39;s only there for completeness. This backend simply performs too much maintenance on its own behalf to be usable for TWiki. The Cache::SizeAwareMemoryCache, however, is comparably fast purging out pages, as it does not suffer from the extensive disk IO that happens in the Cache::SizeAwareFileCache. Both memory variants are not able to share their cache among several processes, and thus are obviously out for html page caching. The current WikiRing blog runs on a Cache::FileCache now. It used the Cache::Memcached backend for quite some time. But as I am low on RAM but not on  disk space on this server anyway (anybody out there that likes to sponsor a bigger server or more memory?) I switched to the file-based variant, which performs quite well. &#60;p /&#62; I still owe you performance statistics, hard facts. &#60;p /&#62;  &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;caching&#34; rel&#61;&#34;tag&#34;&#62;caching&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;performance&#34; rel&#61;&#34;tag&#34;&#62;performance&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry19">
 <title> Quiz plugin </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry19</link>
 <dc:creator>CrawfordCurrie</dc:creator>
 <dc:date>2007-02-23T13:32:00Z</dc:date>
 <dc:subject>WikiRing, Sponsorship</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> Dinky little quiz plugin adds value to TWiki-based training&#60;p /&#62;I was asked on #twiki the other day if there was any support for generating online quizzes. I wrote something to do that years ago, so I got the garden spade out and went digging. The result is the &#60;a href&#61;&#34;http://twiki.org/cgi-bin/view/Plugins.QuizPlugin&#34; title&#61;&#34;&#39;Plugins.QuizPlugin&#39; on TWiki.org&#34; class&#61;&#34;interwikiLink&#34;&#62;TWiki:Plugins.QuizPlugin&#60;/a&#62;, an ultra-lightweight plugin that lets you develop simple quizzes. These are just the thing for embedding in online training, where you want to checkpoint a reader&#39;s learning in a non-threatening way. &#60;p /&#62; At the moment the plugin doesn&#39;t capture any statistics about how well the quiz was answered, but it could be rather amusing to log that data. If your training course is working well, then the reader will answer the questions correctly. If it isn&#39;t, then it would be helpful to gather information about what parts of the message aren&#39;t getting through. &#60;p /&#62; To avoid forcing people to log in to take the training, the data could be logged to the plugins work area. By saving that data as a CSV file it could easily be imported into a spreadsheet for analysis. &#60;p /&#62; It will be interesting to hear feedback, and see if anyone is interested in taking it further. &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;collaboration&#34; rel&#61;&#34;tag&#34;&#62;collaboration&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;plugin&#34; rel&#61;&#34;tag&#34;&#62;plugin&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;wikiapps&#34; rel&#61;&#34;tag&#34;&#62;wikiapps&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry16">
 <title> Sydney Wiki Tuesday  &#8211; 27th February, 2007 </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry16</link>
 <dc:creator>SvenDowideit</dc:creator>
 <dc:date>2007-02-14T12:08:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> I was talking to James Matheson of &#60;a href&#61;&#34;http://wiki.saikore.com&#34; target&#61;&#34;&#95;top&#34;&#62;Saikore&#60;/a&#62; a few months ago, and we thought it was about time that there was a &#39;Wiki-Wednesday&#39; in Sydney, Australia.  James has organised it while I was in Zurich. &#60;p /&#62;An informal gathering of wiki enthusiasts will be held at the Greenwood Hotel at 6:30pm on Tuesday 27th February. &#60;p /&#62; Join us at the Main Bar for a couple of drinks and some general conversation. There is no formal program, but the event is inspired by SocialText&#39;s Wiki Wednesday events, and you are encouraged to chat, learn about wikis, find jobs, talk deals and generally cavort. &#60;p /&#62; The details are: &#60;p /&#62; &#60;ul&#62; &#60;li&#62; Event: Wiki Tuesday &#60;/li&#62; &#60;li&#62; Location : The Main Bar of the Greenwood hotel, North Sydney. &#60;/li&#62; &#60;li&#62; Date: Tuesday 27th February, 2007 &#60;/li&#62; &#60;li&#62; Time: 6:30pm till late &#60;/li&#62; &#60;li&#62; Refreshments: Food and drinks available at the bar &#60;/li&#62;&#60;/ul&#62;  &#60;p /&#62; &#60;p /&#62; &#60;a href&#61;&#34;http://wiki.saikore.com/display/theme/Wiki+Tuesday&#34; target&#61;&#34;&#95;top&#34;&#62;Sydney Wiki Tuesday&#60;/a&#62; &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;meetup&#34; rel&#61;&#34;tag&#34;&#62;meetup&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;saikore&#34; rel&#61;&#34;tag&#34;&#62;saikore&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;sydney&#34; rel&#61;&#34;tag&#34;&#62;sydney&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;tuesday&#34; rel&#61;&#34;tag&#34;&#62;tuesday&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;wiki&#34; rel&#61;&#34;tag&#34;&#62;wiki&#60;/a&#62; </description>
 </item> 
<item rdf:about="http://blog.wikiring.com/Blog/BlogEntry15">
 <title> Gardening wiki shows potential for wiki applications </title>
 <link>http://blog.wikiring.com/Blog/BlogEntry15</link>
 <dc:creator>LynnwoodBrown</dc:creator>
 <dc:date>2007-01-04T22:47:00Z</dc:date>
 <dc:subject>WikiRing</dc:subject> <dc:contributor>
 <rdf:Description link="http://blog.wikiring.com/Main/MichaelDaum">
 <rdf:value>MichaelDaum</rdf:value>
 </rdf:Description>
 </dc:contributor>
 <description> &#60;div id&#61;&#34;&#34; class&#61;&#34;imageFrame imageFrame&#95;right &#34; &#62;&#60;a href&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/plants.jpg&#34; class&#61;&#34;imageHref&#34; title&#61;&#34;plants.jpg&#34;&#62;&#60;img border&#61;&#34;0&#34; src&#61;&#34;http://blog.wikiring.com/pub/Blog/BlogImages/&#95;200&#95;&#95;&#95;plants.jpg&#34; alt&#61;&#34;plants.jpg&#34; width&#61;&#34;200&#34; height&#61;&#34;262&#34; longdesc&#61;&#34;plants.jpg&#34;  /&#62;&#60;/a&#62;&#60;/div&#62; &#60;a href&#61;&#34;http://wikigardens.com&#34; target&#61;&#34;&#95;top&#34;&#62;WikiGardens.com&#60;/a&#62; is a new &#60;a href&#61;&#34;http://twiki.org&#34; target&#61;&#34;&#95;top&#34;&#62;TWiki&#60;/a&#62;-based web site aimed at plant lovers. Developed with technical services provided by WikiRing, the site features a host of features designed to allow both professional and home gardeners to share information about plants, gardening, and all related matters. &#60;p /&#62;Some of the initial features of the site include: &#60;ul&#62; &#60;li&#62; A plant database with over 28,000 initial entries. &#60;/li&#62; &#60;li&#62; Discussion forums about specific plants or general gardening topics. &#60;/li&#62; &#60;li&#62; &#34;Our Garden&#34; showcase that allows gardeners to show off their creations pictures and blog-like journal entries so that can report on the garden throughout the season. &#60;/li&#62; &#60;li&#62; Local gardening resource listing to help gardeners find local gardening groups and venders. &#60;/li&#62;&#60;/ul&#62;  &#60;p /&#62; This site demonstrates the flexibility with which TWiki can accommodate both unstructured &#34;wiki&#34; input and structured data (such as the plant database). It also demonstrates how TWiki can provide all the functionality of several web applications (i.e. forum, gallery, wiki, etc) within an integrated framework. &#60;p /&#62;  &#60;p /&#62;&#60;b&#62;Tags&#60;/b&#62;: &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;gardening&#34; rel&#61;&#34;tag&#34;&#62;gardening&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;wiki&#34; rel&#61;&#34;tag&#34;&#62;wiki&#60;/a&#62;, &#60;a href&#61;&#34;http://blog.wikiring.com/Blog/BlogArchive?mode&#61;tag&#38;amp;search&#61;wikiapps&#34; rel&#61;&#34;tag&#34;&#62;wikiapps&#60;/a&#62; </description>
 </item> 
 </rdf:RDF>