<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Cyberborean Chronicles &#187; Open Source</title>
	<atom:link href="http://blog.cyberborean.org/tag/open-source/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.cyberborean.org</link>
	<description>by Alex Alishevskikh</description>
	<lastBuildDate>Wed, 18 Jan 2012 07:52:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>RDFBeans 2.0</title>
		<link>http://blog.cyberborean.org/2011/04/07/rdfbeans-2-0</link>
		<comments>http://blog.cyberborean.org/2011/04/07/rdfbeans-2-0#comments</comments>
		<pubDate>Thu, 07 Apr 2011 05:46:56 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Howtos]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[RDFBeans]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://blog.cyberborean.org/?p=695</guid>
		<description><![CDATA[The second edition of RDFBeans Java-to-RDF databinding framework is finally out. In 2.0 version the library underwent major refactoring to clean and enhance the API and provide new databinding techniques. RDFBeans is an open-source object-RDF databinding and persistence library for the Semantic Web development with Java language. It provides a framework for mapping an object-oriented [...]]]></description>
			<content:encoded><![CDATA[<p>The second edition of <a href="http://rdfbeans.sourceforge.net">RDFBeans</a> Java-to-RDF databinding framework is finally out. In 2.0 version the library underwent major refactoring to clean and enhance the API and provide new databinding techniques.</p>
<div class="excerpt fullwidth">
RDFBeans is an open-source object-RDF databinding and persistence library for the Semantic Web development with Java language. It provides a framework for mapping an object-oriented domain model to RDF resource descriptions. </p>
<p>For more information, see:</p>
<ul>
<li><a href="http://rdfbeans.sf.net">The project web-site</a></li>
<li><a href="http://rdfbeans.sourceforge.net/apidocs/index.html">Javadocs</a></li>
<li><a href="http://rdfbeans.sourceforge.net/download.html">How to get the sourcecode or configure Maven dependency</a></li>
</ul>
</div>
<p><span id="more-695"></span></p>
<h2>RDFBean interfaces and dynamic proxying</h2>
<p>Along with <a href="http://rdfbeans.sourceforge.net/usage.html#Working_with_RDFBean_classes">traditional JavaBean-like persisting technique</a> using RDFBean classes, the version 2.0 introduces new approach to object-RDF mapping: <a href="http://rdfbeans.sourceforge.net/usage.html#Working_with_RDFBean_interfaces">RDFBean interfaces</a>.</p>
<p>It works simply: you define an interface of your domain model object and annotate it just like an RDFBean class:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@RDFNamespaces<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf = http://xmlns.com/foaf/0.1/&quot;</span><span style="color: #009900;">&#41;</span>
@RDFBean<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf:Person&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> IPerson <span style="color: #009900;">&#123;</span>
&nbsp;
    @RDFSubject
    <span style="color: #003399;">String</span> getId<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    @RDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf:name&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #003399;">String</span> getName<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">void</span> setName<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> name<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    @RDF<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf:mbox&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #003399;">String</span> getEmail<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000066; font-weight: bold;">void</span> setEmail<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> email<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Then you instantiate the <code>RDFBeanManager</code> (was <code>RDFBinding</code> in RDFBeans 1.x) upon an RDF2Go Model and create a <em>dynamic proxy object</em> with your interface:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">ModelFactory modelFactory <span style="color: #339933;">=</span> RDF2Go.<span style="color: #006633;">getModelFactory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Model model <span style="color: #339933;">=</span> modelFactory.<span style="color: #006633;">createModel</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
model.<span style="color: #006633;">open</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>        
RDFBeanManager manager <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RDFBeanManager<span style="color: #009900;">&#40;</span>model<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
IPerson person <span style="color: #339933;">=</span> manager.<span style="color: #006633;">create</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://example.com/persons/jdoe&quot;</span>, IPerson.<span style="color: #000000; font-weight: bold;">class</span><span style="color: #009900;">&#41;</span></pre></div></div>

<p>The methods of this proxy object are directed immediately to the underlying RDF triples, so that</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">person.<span style="color: #006633;">setName</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;John Doe&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
person.<span style="color: #006633;">setEmail</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;john@example.com&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>will cause adding the statements to the model:</p>
<pre>
&lt;http://example.com/persons/jdoe&gt; a &lt;http://xmlns.com/foaf/0.1/Person&gt; ;
	&lt;http://xmlns.com/foaf/0.1/name&gt; "John Doe" ;
	&lt;http://xmlns.com/foaf/0.1/mbox&gt; "john@example.com" ;
</pre>
<p>Similarly, the getter methods will return values retrieved directly from these statements.</p>
<h2>RDFBean annotations</h2>
<p>The <a href="http://rdfbeans.sourceforge.net/rdfbean.html">annotations scheme</a> has changed, so the old classes will be incompatible with RDFBeans 2.0. As you can see in the example above, <code>@RDF</code> annotation is now applied to the getter methods but not to the field declaration like in the previous versions.</p>
<p>You also can notice new annotation, <code>@RDFNamespaces</code>, which defines a list of URI prefixes to be used in other RDFBean annotations declared in a given class or interface. This includes class and property URIs, as well as RDFBean identifiers:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">@RDFNamespaces<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#123;</span> 
	<span style="color: #0000ff;">&quot;foaf = http://xmlns.com/foaf/0.1/&quot;</span>,
	<span style="color: #0000ff;">&quot;persons = http://example.com/persons/&quot;</span> 
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>
@RDFBean<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;foaf:Person&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">interface</span> IPerson <span style="color: #009900;">&#123;</span>
&nbsp;
	@RDFSubject<span style="color: #009900;">&#40;</span>prefix <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;persons:&quot;</span><span style="color: #009900;">&#41;</span>
	<span style="color: #003399;">String</span> getId<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
...</pre></div></div>

<p>Annotations are now inherited from superclasses and interfaces that makes the RDFBeans markup compatible with complex domain-specific object models. See how the <code>Thing</code>, <code>Agent</code> and <code>Person</code> classes of the <a href="http://rdfbeans.svn.sourceforge.net/viewvc/rdfbeans/tags/2.0/src/test/java/com/viceversatech/rdfbeans/test/foafexample/entities/">FOAF example</a> are organized to mimic the <code>owl:Thing → foaf:Agent → foaf:Person</code> subclassing in RDF-Schema.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2011/04/07/rdfbeans-2-0/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RDFBeans: Now on Sourceforge</title>
		<link>http://blog.cyberborean.org/2009/08/04/rdfbeans-now-on-sourceforge</link>
		<comments>http://blog.cyberborean.org/2009/08/04/rdfbeans-now-on-sourceforge#comments</comments>
		<pubDate>Tue, 04 Aug 2009 10:44:07 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[RDFBeans]]></category>
		<category><![CDATA[Semantic Web]]></category>

		<guid isPermaLink="false">http://blog.cyberborean.org/?p=471</guid>
		<description><![CDATA[RDFBeans framework (see &#8220;Simple RDF data binding&#8220;) is a Sourceforge project now: http://rdfbeans.sourceforge.net]]></description>
			<content:encoded><![CDATA[<p>RDFBeans framework (see &#8220;<a rel="bookmark" href="../2009/02/06/simple-rdf-data-binding">Simple RDF data binding</a>&#8220;) is a Sourceforge project now:</p>
<p class="hand"><a href="http://rdfbeans.sourceforge.net">http://rdfbeans.sourceforge.net</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2009/08/04/rdfbeans-now-on-sourceforge/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SCAN project announce</title>
		<link>http://blog.cyberborean.org/2007/09/14/scan-project-announce</link>
		<comments>http://blog.cyberborean.org/2007/09/14/scan-project-announce#comments</comments>
		<pubDate>Fri, 14 Sep 2007 12:36:54 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[Information Retrieval]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[metadata]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SCAN]]></category>
		<category><![CDATA[search]]></category>
		<category><![CDATA[tagging]]></category>
		<category><![CDATA[taxonomy]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://cyberborean.wordpress.com/2007/09/14/scan-project-announce/</guid>
		<description><![CDATA[ViceVersa Technologies presents the first public release of SCAN (Smart Content Aggregation and Navigation) platform. SCAN is a personal Information Retrieval framework, combining search, text analysis, tagging and metadata functions to provide new user experience of desktop navigation and document management. About SCAN &#8220;&#8230; the abundance of information will be such that either you have [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://scan.sourceforge.net"><img src='http://cyberborean.org/blog/wp-content/uploads/2007/09/scan100i.png' alt='SCAN' align='left' hspace='5'></a><em>ViceVersa Technologies presents the first public release of <a href="http://scan.sourceforge.net">SCAN (Smart Content Aggregation and Navigation)</a> platform. SCAN  is a personal        Information Retrieval framework, combining search, text analysis,        tagging and metadata functions to provide new user experience of desktop        navigation and document management.</em></p>
<p><span id="more-179"></span></p>
<h3>About SCAN</h3>
<blockquote><p>&#8220;&#8230; the abundance of information will be such that either you have        reached such a level of maturity that you are able to be your own        filter, or you will desperately need a filter&#8230; some professional        filter.&#8221;<br />
<em>Umberto Eco: A Conversation on Information<br />
(<a href="http://carbon.cudenver.edu/~mryder/itc_data/eco/eco.html">an interview  by Patrick Coppock</a>, February, 1995)</em></p></blockquote>
<p style="margin-top:0;">       SCAN is aiming for a solution of major problems of content organization        and findability in information overload era.</p>
<p style="margin-top:0;"><a href='http://scan.sourceforge.net/uploads/images/browse.png' title='Browse documents'><img src='http://scan.sourceforge.net/uploads/images/browse_tmb.png' alt='Browse documents' align='left' hspace='5' vspace='5' /></a>SCAN aggregates content from different sources into a single documents        collection. This repository may keep records on thousands of documents        independently of their original locations and formats. Every document        record contains a number of metadata properties (such as title,        description, author, creation date, etc) which can be either set        automatically or edited manually.</p>
<p style="margin-top:0;">       Adding documents to the repository is an automated operation. A user        only need to point SCAN to a location and the application will find and        add every document from there. Added document locations will be        monitored for changes (new, modified or deleted documents) to keep the        repository up-to-date.</p>
<p style="margin-top:0;">       The documents content is indexed for search and text analysis. You can        search the documents either by simple text queries, or by using special        forms to make complex queries for searching on document text and        properties. The queries can be saved for repeatable use.</p>
<p style="margin-top:0;"> <a href='http://scan.sourceforge.net/uploads/images/tags.png' title='Tags panel'><img src='http://scan.sourceforge.net/uploads/images/tags_tmb.png' alt='Tags panel' align='left' hspace='5' vspace='5' /></a>      The documents collection is structured with a system of tags, similar to        the services like <a href="http://del.icio.us/">del.icio.us</a> or <a href="http://flickr.com/">Flickr</a>.        Tags are keywords or labels attached to the items to identify them for        quick navigation and finding. All tags together form a t<em>axonomy</em>        representing the semantics of the documents collection. The taxonomy can        be viewed as a &#8220;tags cloud&#8221; for navigating through the documents        repository.</p>
<p style="margin-top:0;">       SCAN text analysis mechanism simplifies the process of tagging. It        analyzes a document content and suggests the most relevant words as to-be tags. It makes manual tagging as simple as selecting the tags from        the proposed candidates. It also can undertake the whole manual process        of tagging, either by automated assigning the tags to the documents, or        by finding the documents, relevant to a specific tag. Another text        analysis application is searching the documents similar to a specific        one (search by pattern).</p>
<p style="margin-top:0;">       SCAN is a component-based software using a number of plugins for        specific features. The basic SCAN platform can be easily extended with        plugins for new document formats, document locations (RSS feeds,        web-sites, e-mail, etc) and language analyzers. Whole new areas of        functionality can be added with user interface extensions. An example of        such extensions is the plugin to browse the repository with a calendar        (grouping the documents by their creation dates).</p>
<p style="margin-top:0;">       SCAN is a <a href="http://java.sun.com/">Java</a> application, so it        works on any Java-enabled platform. SCAN is a free open source software,        distributed under <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache        License, Version 2.0</a></p>
<h3>See also:</h3>
<ul>
<li><a href="http://scan.sourceforge.net/?page_id=19">List of current features</a></li>
<li><a href="http://sourceforge.net/project/showfiles.php?group_id=189359">Download SCAN</a></li>
<li><a href="http://scan.sourceforge.net/?page_id=7">How to obtain SCAN sources from SVN repository</a></li>
<li><a href="http://scan.sourceforge.net/?page_id=4">User&#8217;s Manual</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2007/09/14/scan-project-announce/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Kibitzer</title>
		<link>http://blog.cyberborean.org/2007/09/06/open-source-kibitzer</link>
		<comments>http://blog.cyberborean.org/2007/09/06/open-source-kibitzer#comments</comments>
		<pubDate>Thu, 06 Sep 2007 11:24:31 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Ongoing]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[sourcekibitzer]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://cyberborean.wordpress.com/2007/09/06/open-source-kibitzer/</guid>
		<description><![CDATA[SourceKibitzer portal, a benchmarking service for Open Source Java software projects, opened the large part of its source code and claimed to be &#8220;the first-ever User-Programmed Service&#8221;. This decision seems to be related with recent turn of portal orientation towards a community-oriented service. As SourceKibitzer&#8217;s CEO Mark Koffman told me, &#8220;we are moving from software [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://sourcekibitzer.org">SourceKibitzer</a> portal,  a benchmarking service for Open Source Java software projects, opened the large part of its source code and claimed to be &#8220;the first-ever User-Programmed Service&#8221;.</p>
<p><span id="more-176"></span></p>
<p>This decision seems to be related with recent turn of portal orientation towards a community-oriented service. As SourceKibitzer&#8217;s CEO Mark Koffman told me, &#8220;we are moving from software towards the people behind it&#8221;. Recently, the portal has launched new features to support this direction, namely <a href="http://www.sourcekibitzer.org/BioAdministration.ext">online resume</a> for Open Source community members (Bio) and <a href="http://www.sourcekibitzer.org/InterviewListPage.ext">series of interviews</a> with OSS developers.</p>
<p>I think, it has good chances  to grow into a real social network for the FOSS folk.</p>
<p>At the moment, the portal code is <a href="http://www.sourcekibitzer.org/sourcekibitzer-sources.tar.gz">published</a> under GPL v3 Draft. An exception is the proprietary libraries implementing the benchmarking algos, which are know-how of the company running SourceKibitzer. The portal invites everyone to join the development by <a href="http://www.sourcekibitzer.org/mailman/listinfo/sk-dev">subscribing the mailing list</a> , participation in <a href="http://www.sourcekibitzer.org/trac">TRAC Wiki</a> and <a href="http://sourcekibitzer.org/trac/wiki/DevEnvSetup">contributing</a> the code into SVN repository. The portal technology is based on Java Spring framework.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2007/09/06/open-source-kibitzer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SourceKibitzer</title>
		<link>http://blog.cyberborean.org/2007/01/25/sourcekibitzer</link>
		<comments>http://blog.cyberborean.org/2007/01/25/sourcekibitzer#comments</comments>
		<pubDate>Thu, 25 Jan 2007 11:39:02 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[sourcekibitzer]]></category>

		<guid isPermaLink="false">http://cyberborean.wordpress.com/2007/01/25/sourcekibitzer/</guid>
		<description><![CDATA[SourceKibitzer team let me know that my OSS projects (Memoranda and Jacinth) had been analyzed by their web tool and the reports are available. What is SourceKibitzer SourceKibitzer is an online service for automated (so, unbiased) assessment, analysis and benchmarking of Java source code. For the moment, over 500 open source Java projects are analyzed [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sourcekibitzer.org/">SourceKibitzer</a> team let me know that my OSS projects (<a href="http://cyberborean.wordpress.com/tag/my-projects/memoranda/">Memoranda</a> and <a href="http://cyberborean.wordpress.com/tag/my-projects/jacinth/">Jacinth</a>) had been analyzed by their web tool and the <a href="http://www.sourcekibitzer.org/index.php?option=com_skproject&amp;task=view&amp;projectid=memoranda">reports</a> are available.</p>
<p><span id="more-151"></span></p>
<p><strong>What is SourceKibitzer</strong></p>
<p>SourceKibitzer is an online service for automated (so, unbiased) assessment, analysis and benchmarking  of Java source code. For the moment, over 500 open source Java projects are analyzed (including, e.g. the whole <a href="http://jakarta.apache.org">Jakarta</a> pool) and Kibitzers plan to &#8220;Measure all available Open Source projects written in Java&#8221;. SourceKibitzer works directly with CVS and SVN repositories to monitor the code development, so the reports are always in actual state.</p>
<p>SourceKibitzer methodology contains a number of various metrics and many of them are really useful and interesting.</p>
<p><strong>Progress analysis</strong><br />
It is similar to Sourceforge &#8220;project activity&#8221; info, but on more detailed level. Kibitzer&#8217;s report contains progress information for each compilation unit (a package or even a single source file) &#8211; how many statements, methods and comments were changed during the last week.</p>
<p><strong>Size analysis</strong><br />
Gives the total numbers of lines, statements, methods and comments in each package and source file.</p>
<p><strong>Complexity analysis</strong><br />
It evaluates code complexity by measuring different metrics: the number of instaniations of classes (&#8220;Data Abstraction Coupling&#8221;), the number of classes given source file relies on (&#8220;Fan Out Complexity&#8221;), the number of possible execution paths through the methods (&#8220;NPath Complexity&#8221;), McCabe&#8217;s cyclomatic complexity of the methods and boolean expressions complexity.</p>
<p><strong>Completeness analysis</strong><br />
It is based on assumption that number of conventional &#8220;todo labels&#8221; in the comments (&#8220;TODO&#8221;, &#8220;FIXME&#8221;, &#8220;XXX&#8221; etc) and total comments density mean the level of project&#8217;s maturity.</p>
<p>Kibitzer&#8217;s team say they are working on improving the methodology and plan to implement more metrics measurements in the future. You can submit your own Java project to <a href="http://www.sourcekibitzer.org/index.php?option=com_performs&amp;formid=1&amp;Itemid=6">kibitz it</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2007/01/25/sourcekibitzer/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Java: It is!</title>
		<link>http://blog.cyberborean.org/2006/11/14/open-source-java-it-is</link>
		<comments>http://blog.cyberborean.org/2006/11/14/open-source-java-it-is#comments</comments>
		<pubDate>Tue, 14 Nov 2006 09:24:37 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://cyberborean.wordpress.com/2006/11/14/open-source-java-it-is/</guid>
		<description><![CDATA[Remember this day: 13th of November 2006 Sun is releasing Java under the Gnu General Public License (GPL) version 2. I think all Java/OSS developers and advocates must have a drink for that today. Sun believes deeply in creating communities and sharing innovations and technologies to foster more participation. Today in a historic move, Sun [...]]]></description>
			<content:encoded><![CDATA[<p>Remember this day: 13th of November 2006 Sun is <a href="http://www.sun.com/2006-1113/feature/story.jsp">releasing Java</a> under the Gnu General Public License (GPL) version 2. I think all Java/OSS developers and advocates must have a drink for that today.</p>
<blockquote><p>Sun believes deeply in creating communities and sharing innovations and technologies to foster more participation. Today in a historic move, Sun is opening the door to greater innovation by open sourcing key Java implementations—Java Platform Standard Edition (Java SE), Java Platform Micro Edition (Java ME), and Java Platform Enterprise Edition (Java EE)—under the GNU General Public License version 2 (GPLv2), the same license as GNU/Linux.</p></blockquote>
<p><span id="more-145"></span></p>
<p>What parts of Java family had been released actually?</p>
<ul>
<li>A full buildable version of <strong>Java Platform Micro Edition (Java ME)</strong></li>
<li>A part of <strong>Java Standard Edition (Java SE)</strong>, specifically javac, HotSpot and JavaHelp. Releasing of a full version (including libraries code) is scheduled &#8220;in the first half of 2007&#8243;.</li>
</ul>
<p><a href="http://www.cafeaulait.org">Cafe au Lait</a> thinks that &#8220;<em>Part of the hold up is simply that Java 6 is not currently fully buildable with open source tools</em>&#8221; and it seems it is very likely so. For good or for bad, software code is still closely tied with bulding and managing infrastructure and I can foresee all complexity of moving Java libraries on conventional open source framework. If the reasons is really in that, it forgives Sun and we should be thankful for they are taking care for we, users, would be able to, say, simply type &#8220;ant&#8221; to build the whole codebase.</p>
<p>Why GPL? A week ago I <a href="http://cyberborean.wordpress.com/2006/11/08/open-source-java/">wrote</a> that the question of a Java license seemed debatable inside the Sun staff. In my opinion, the final choice was made by two essential reasons. First, it is straightforward compatibility with GNU/Linux, which seems to be a general strategy of the company. Second, there was a lot of (reasonable) criticism that Sun makes a needless mess with invention of their own open source licenses (such as CDDL).</p>
<p>Open source Java is available as <a href="https://openjdk.dev.java.net/">OpenJDK project on java.net</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2006/11/14/open-source-java-it-is/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Java</title>
		<link>http://blog.cyberborean.org/2006/11/08/open-source-java</link>
		<comments>http://blog.cyberborean.org/2006/11/08/open-source-java#comments</comments>
		<pubDate>Wed, 08 Nov 2006 19:01:36 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Ongoing]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://cyberborean.wordpress.com/2006/11/08/open-source-java/</guid>
		<description><![CDATA[James Gosling on Open Sourcing Sun&#8217;s Java Platform Implementations After long period of indistinct reassurances and promises and, finally, the triumphant announce on open-sourcing Java SE platform before the end of this year, it is the first interview that sheds some light on the details of this topical question. The people who concern both Java [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li><a href="http://java.sun.com/developer/technicalArticles/Interviews/gosling_os1_qa.html">James Gosling on Open Sourcing Sun&#8217;s Java Platform Implementations</a></li>
</ul>
<p>After long period of indistinct reassurances and promises and, finally, the triumphant <a href="http://news.yahoo.com/s/infoworld/20061025/tc_infoworld/83138">announce</a> on open-sourcing Java SE platform before the end of this year, it is the first interview that sheds some light on the details of this topical question.</p>
<p><span id="more-144"></span></p>
<p>The people who concern both Java and OSS development were, of course glad to hear that hopeful news from Sun although there was a lot of questions, as legal as well as bare technical. In this interview, James answered to some of them.</p>
<p>Likely the most mind-blowing issue is a license of the future Java platform releases. James has emphasized its importance and even stated that <em>&#8220;The difference between what we do now and open source has mostly been around the license&#8221;</em>. Although, no of the specific license types had been mentioned. But without doubt, it will be a OSI-approved license and apparently, the same as of Solaris (CDDL, based on Mozilla Public License). It was declared by Sun CEO Jonathan Schwartz at his October&#8217;s &#8220;open-sourcing Java announce&#8221; (see above), but later Sun <a href="http://news.com.com/2100-7344_3-6129906.html">stated officially</a> that  <em>&#8220;We&#8217;re not ready to talk about the licenses&#8221;</em>. So I suppose, consensus on this question is still not reached in the company and James politely left it aside.</p>
<p>[<strong>Upd:</strong>] Earlier (after May&#8217;06 <a href="http://java.sun.com/javaone/sf/index.jsp">JavaOne</a>), Jonathan <a href="http://blogs.sun.com/jonathan/entry/busy_week1">wrote in his blog</a> that <em>&#8220;using a GPL license is very much *on* the table&#8221;</em>, so the choice seems between GPL and CDDL. However, the results of the <a href="http://www.java.net/pub/pq/116">Java.net poll</a> shows that the Java developers community also would like to see Sun&#8217;s JDK under Apache license (30% against 22% for GPL, 14% for LGPL and only 6.8% for CDDL).</p>
<p>The motivation of open sourcing Java is stated briefly and clearly:</p>
<blockquote><p>We want better conversations with the developer community, a more collaborative relationship. We want to have better relationships with many of the Linux distributions&#8230;</p></blockquote>
<p>I think, taking care of compatibility with Linux distros is remarkable and it confirms the fact that more and more of the leading corporations cannot ignore this platform anymore. Indeed, it is oddly enough that Sun is selling their machines with Ubuntu preinstalled, but Ubuntu developers cannot include Sun&#8217;s JDK into the distribution by licensing reasons. On the other hand, the results of heroic efforts on the alternative open-source implementations are still far from the &#8220;original&#8221; Java to be useful at any rate.</p>
<p>An important thing is how the project will be organized. It is looking like that the development model will be far from a &#8220;bazaar-style&#8221;. The process of defining the specifications will be kept by the <a href="http://jcp.org">Java Community Process</a> (as it is now), that is general direction and major design decisions will be still somehow controlled by Sun.</p>
<blockquote><p>So it shouldn&#8217;t give anybody any concerns as far as fragmentation. We&#8217;re not just going to let random people check random code in. Just like every other open-source project, we will end up with a set of rules for who&#8217;s allowed to check in a lot. Everything will get checked and rechecked and debugged.</p></blockquote>
<p>It is noteworthy also that the project will use <a href="http://www.selenic.com/mercurial/wiki/index.cgi">Mercurial</a> for source-code management, instead of conventional CVS which was said <em>&#8220;don&#8217;t work well for large-scale projects&#8221;</em>.</p>
<p>Indeed, not too much of info but it&#8217;s looking like nobody in Sun doesn&#8217;t know more at this moment. The web-page of <a href="http://java.sun.com/community/opensource.jsp">Open-Source Java  Initiative</a> now contains only the list of persons behind it.</p>
<p>[<strong>Upd:</strong>] I&#8217;ve found that the home of open-source JDK community is actually <a href="http://community.java.net/jdk/opensource/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2006/11/08/open-source-java/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open Source Best Practices: Part II (Technology)</title>
		<link>http://blog.cyberborean.org/2006/03/09/open-source-best-practices-part-ii-technology</link>
		<comments>http://blog.cyberborean.org/2006/03/09/open-source-best-practices-part-ii-technology#comments</comments>
		<pubDate>Thu, 09 Mar 2006 20:38:52 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Essays]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://cyberborean.wordpress.com/2006/03/09/open-source-best-practices-part-ii-technology/</guid>
		<description><![CDATA[How to get a succesful open source project: The beginners guide. II. Technology Version Control Open source development without networked version control system is like a running on crutches. It is not enough to publish your sources on FTP or web-server for free download. Very soon you&#8217;ll start to receive the patches and bugfixes and [...]]]></description>
			<content:encoded><![CDATA[<p><strong>How to get a succesful open source project:<br />
The beginners guide.</strong><br />
<span id="more-65"></span></p>
<h2>II. Technology</h2>
<h3>Version Control</h3>
<p>Open source development without networked version control system is like a running on crutches. It is not enough to publish your sources on FTP or web-server for free download. Very soon you&#8217;ll start to receive the patches and bugfixes and will face with lack of resources to manage them and maintain the product. So, an idea to have a shared sourcecode repository and to allow active contributors to apply their changes themselves is obvious.</p>
<p>Using the <a href="http://www.nongnu.org/cvs/">Concurrent Versions System (CVS)</a> or <a href="http://subversion.tigris.org/">Subversion</a> is a common practice for collaborative opensource development. There is no matter how large or small is your community or a code base. Learn it. Use it. It is a necessary condition of successfull teamwork.</p>
<p>A knowledge and a lot of helpful tips on using CVS for opensource projects can be obtained from <a href="http://cvsbook.red-bean.com/">Bar&amp;Fogel book</a> [2].</p>
<h3>Project workplace</h3>
<p>There are free internet services which provide hosting of opensource projects and an infrastructure for collaborative development. As user of that service, you are supplied with a solid workplace for your team and got rid of many infrastructural aspects of project maintaining. If you&#8217;re in doubt where to go, register the project on the <a href="http://sf.net">SourceForge.net</a> — a popular and mature workplace for opensource development which provides almost everything you need for your project, including:</p>
<ul>
<li> CVS repository
<li> Hosting of the public web-site
<li> Mailing lists and web forums
<li> Public bugs, patches and feature requests tracking system
<li> Time-tracking and task scheduling tools for development planning
<li> File releasing system with a number of mirrors around the world
<li> Tools for advertising your project and recruiting new members
</ul>
<p>The only problem with SourceForge (although, it is common for today&#8217;s internet) is a namespace issue. It is rather hard to register new project with a sensible word as its name there&#8230;</p>
<h3>Web-site</h3>
<p>Web-site is a public facade of the project and a powerful tool for supporting the users, recruiting new members and project advertising. Run and support it from a very initial stage of your project. The web-site of the open-source project typically contains the following information:</p>
<ul>
<li>Project news, including the announcements of new releases.
<li>Project overview — a brief introduction into the software, project and its mission.
<li>Documentation: User&#8217;s Guide, HOWTO and FAQ, articles, developers documentation etc.
<li>Download page, including a guide on how to download, build and install the software
<li>Development overview (or “Get Involved” page) — describes the development process, including information on how to join the project for new contributors, as well as how to report bugs, submit patches etc.
<li>Contributors list
<li>“Contact us” page, including email adresses of project coordinators, mailing lists subscription etc.
</ul>
<p>Keep the web-site content in an actual state. It is a good idea to put content in CVS for collaborative updating.</p>
<h3>Mailing lists</h3>
<p>The mailing lists are conventional tools for communication among the project&#8217;s community and users. Typically, an opensource project runs the following types of lists:</p>
<ul>
<li>Developers mailing list — a main discussion forum of the community.</li>
<li>Users mailing list is for discussions among end-users and developers. It is where users can get help either from developers or from other users.</li>
<li>Announce mailing list is a sort of newsletter for the people who want to be notified on new software releases.</li>
<li>CVS automated mailing list is helpful for CVS users who want to be notified about every change in the code repository.</li>
</ul>
<h3>Public bug trackers</h3>
<p>Encourage users to report the bugs using a special bug-tracking service on the project&#8217;s web-site. It allows your team to keep a consistent bugs database and fix them faster.</p>
<p>Read more on bug tracking at <a href="http://www.joelonsoftware.com/articles/fog0000000029.html">Joel On Software: Painless Bug Tracking</a>.</p>
<p>It is also a good idea to use the tracking tools for new feature requests and software patches submissions.</p>
<h3>Downloadable file releases</h3>
<p>Make new release every time when a noticeable bunch of new features or bugfixes is done (an opensource everyday wisdom is &#8220;Release early, release often&#8221;). It may seems unnecessary if the project provides an anonymous CVS read access, but the most of end-users don&#8217;t use CVS and prefer to download the file releases. It is also a reason for good practice of making the “nightly CVS tarballs” — the downloadable archived copies of the whole repository built automatically at every night.</p>
<p>Besides the sourcecode release, provide a prebuilt binary version— for those users, who cannot or don&#8217;t want to compile it on their own side.</p>
<h3>Automated building</h3>
<p>Don&#8217;t make other developers and users to install your favourite development tools to build the sourcecode. Use conventional automated build systems — such as Ant for Java projects or make for C/C++. Building the sources should be simple as possible. In an ideal case, an user should only run the build script to get the software compiled and ready to start.</p>
<p>It is a good practice to use a build script as a central point for complete code management — not only for compilation, but also for product installation, building a documentation, tests running, making the releases, launching CVS functions etc.</p>
<h3>Automated testing</h3>
<p>A practice of the “test-driven development” with automated testing frameworks such as JUnit, saves a lot of time for debugging and provides more reliable and bugs-free code in comparison with manual testing. Write test cases for everything and run them so often as possible to be sure that the code is workable. Encourage other developers to write test cases for their new features.</p>
<p>This is especially important for teamwork, because the situations when someone accidentally breaks other&#8217;s code are not unusual. Providing the “quality requirements” in a form of test cases and suites smoothes the problem. When developers are used to run the test suite before each CVS commit, the code in the repository will never be broken and be always kept in a workable state.</p>
<h3>Good software design and usable code</h3>
<p>Good software design increases the developers productivity. If you think these are buzzwords of commercial software industry, you&#8217;re wrong. As it was said above, the time of developers work is a most valuable capital of an opensource project and don&#8217;t let it be spent for long investigating and learning an existing code. Every programmer knows how difficult the exploring of another&#8217;s code might be, so produce an evident design and usable code from very initial stage of the product. Your initial code is a foundation for all subsequent add-ons and if it is well-designed, it will encourage other developers to keep and follow that design as well. The developers are enjoyed by a well-designed code and it motivates them to work with it, while the intricate, hard, obfuscating code makes them tired and they leave the project.</p>
<p>Use conventional object-oriented design techniques with thought-out classes hierarchy, concern separation and effective modularization. Provide a consistent and documented software API as a basis of the whole application. Think over the consistent and understandable identifiers scheme and comment the code where possible. It will save a lot of developers (and yours) work hours in future.</p>
<h3>Design patterns</h3>
<p>Design patterns are succesfull solutions which can be repeatedly used in various applications. In object-oriented design they are  predefined organizations of classes and relations among them, such as well-known Factories, Iterators etc. The comprehensive guide on using the patterns in OO design, including their taxonomy and classification is given in the “ Design Patterns: Elements of Reusable Object-Oriented Software” classical book by Erich Gamma et al.[3]</p>
<p>Usage of patterns improves a software design and understandability of the source code. It also provides a common vocabulary for developers discussions, so you always can say: “I gonna implement a Facade pattern there”, instead of long explanations of what  do you want to do.</p>
<h3>A component technology</h3>
<p>Think about your program as it is a framework for random features of specific problem domain, rather than a specific fixed set of features. The component-oriented programming techniques benefit not only for good software design and product flexibility, but also for community. When specific pieces of functionality are designed as the separate modules (or, “plug-ins”), the development process can be splitted into few independent lines with their own developers and maintainers. So, new developer who interested in specific feature can quickly start to work around it without diving into the whole code base. It makes adding new features simple and your community will not spend a time for flaming about where to go and what set of features a software should contain. When someone falls in opposition with her idea of a new feature, she can develop it as a plug-in and let users decide themselves on using it.</p>
<h3>Avoid to reinvent the wheels</h3>
<p>Learn about common standards, practicalities and third-party solutions which can be used in your software. They will save a lot of time for you and your community. For instance, if your program needs for a structured data format, use XML instead of your newly invented one. Before going to implement some feature which doesn&#8217;t seem unique for your area, try to look for appropriate  third-party solution. The development process will go faster and new developers probably will be already experienced in that technology, so they will be able to start a “real work” immediately.</p>
<p>Using well-known and conventional technologies increases the speed of development, because it increases an amount of the “shared knowledge” in community.</p>
<h3>Documentation</h3>
<p>An another way to improve the &#8220;community knowledge&#8221; is to document everything whenever possible. I mean not only the user manuals and help, but also technical documentation written by developers for developers.</p>
<p>The tools like <strong>wiki</strong> make a great help for this.</p>
<h3>Internationalization</h3>
<p>Your software will be used around the planet by people speaking various languages. Although the English is a conventional language of opensource culture, the people prefer to use localized software in their countries. Don&#8217;t use hardcoded labels, messages and other locale-sensitive data in the program, but provide flexible localization framework enabling easy replacing default values with their local equivalents.</p>
<p>National localization is also a good way to attract new project members (see the “Motivate users to contribute” section). By my own experience, many of active developers started from contributing the localization packages for their native languages.</p>
<h3>Accept donations</h3>
<p>Some people or organizations would like to support your project with money or other resources. This is good and you should not reject such kind of contribution — after all, this is equivalent of that other people contribute their labour. Leaving aside the time and efforts you invest into the project (assuming you compensate it with fun and satisfaction of your own technology needs), you usually bear direct costs on hardware equipment, internet connection, domain name support and so on. So, money donations are undoubtlessly helpful for the project.</p>
<h3>&#8230; and have fun</h3>
<p>This is a final recommendation, that I&#8217;d like to tell. Be enjoyed of your project and let the people be enjoyed of it. Don&#8217;t let it become a boring thing. Boredom is the main enemy of an opensource.</p>
<p>Happy coding!</p>
<p><b>Bibliography</b></p>
<p>1. Raymond, Eric Steven. “<a href="http://www.tuxedo.org/~esr/writings/cathedral-bazaar/">The Cathedral and the Bazaar</a>”. 1999, O&#8217;Reilly, Sebastopol, CA.<br />
2. Bar, Moshe and Karl Fogel. “<a href="http://cvsbook.red-bean.com">Open Source Development with CVS</a>”, 3rd Edition. 2003, Paraglyph Press, ScottsDale, AZ.<br />
3. Gamma, Erich, Richard Helm, Ralph Johnson, John Vlissides. “Design Patterns: Elements of Reusable Object-Oriented Software”. 1995, Addison-Wesley Longman, Reading, MA.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2006/03/09/open-source-best-practices-part-ii-technology/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Open Source Best Practices: Part I (Community)</title>
		<link>http://blog.cyberborean.org/2006/03/03/open-source-best-practices-part-i-community</link>
		<comments>http://blog.cyberborean.org/2006/03/03/open-source-best-practices-part-i-community#comments</comments>
		<pubDate>Fri, 03 Mar 2006 21:34:51 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Essays]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://cyberborean.wordpress.com/2006/03/03/open-source-best-practices-part-i-community/</guid>
		<description><![CDATA[How to get a succesful open source project: The beginners guide. Well, you&#8217;ve developed a useful piece of software for your own needs and you want to share it with the world. Or, you have a great idea and going to implement it in a collaboration with other interested parties. Or, to be more prosaic, [...]]]></description>
			<content:encoded><![CDATA[<p><b>How to get a succesful open source project:<br />
The beginners guide.</b></p>
<p><span id="more-64"></span><br />
Well, you&#8217;ve developed a useful piece of software for your own needs and you want to share it with the world. Or, you have a great idea and going to implement it in a collaboration with other interested parties. Or, to be more prosaic, you did an initial software implementation, but realize that you have no resources to push it through to a productional quality stage. Anyhow, the best what can you do is to start an open source project.</p>
<p>Above all, have no doubts — you&#8217;re on the right way in any case. Your home-made software will be recognized by the whole world. You will see how your brilliant ideas are evolved and implemented into the new technologies and software applications. And you will get high-quality software for your needs without hiring a team of high-paid professional developers, managers and beta-testers. You will get a lot of new friends around the world, an experience in software design and development, a fame and reputation (and maybe a money, why not?). In addition, sharing your ideas and software code brings a great moral satisfaction and it is a good practice to improve your karma.</p>
<p>Starting and initial arranging the project is easy and with free hosting services, like at SourceForge, you don&#8217;t need anything except for few hours of your time. It is much harder to have success with that project.</p>
<p>Obviously, your software should do something useful for other people, but it is ultimately not enough for the project success. Your efforts on developing an initial code is only a start point of your path and there are numerous traps and rocks on your way. It wouldn&#8217;t be so, if only there were no interesting and promising free software projects which were unfortunately failed because of some flaws in the process itself.</p>
<p>This article contains my observations about how to get a successful opensource project. This is a summarization of my own experience on starting, leading and participating the free software projects (including my mistakes and failures) and of analysis of succesful opensource software. Also, the content of this article had a strong impact of explorations on social aspects of the opensource phenomenon made by Eric Raymond (read his classical essay “<a href="http://www.tuxedo.org/~esr/writings/cathedral-bazaar/">The Cathedral and the Bazaar</a>” [1] and other articles to be up on the question) and Moshe Bar &amp; Karl Fogel — authors of the “<a href="http://cvsbook.red-bean.com">Open Source Development with CVS” book </a>[2], which is not only a CVS guide, but also a great source of helpful ideas on opensource development process.</p>
<h3>What is a succesfull project?</h3>
<p>You can say a project is succesful for you if it matches your personal goals and expectations. Right, but this is only effect of success &#8211; it is your <em>profit</em>. The criteria of success is mainly the same as for any (commercial) software: the project has a high-quality and popular product.</p>
<h2>I. Community</h2>
<p>Commercial software needs for investments &#8211; and open source too. But this is not money investments &#8211; this is labour and time of the project contributors. When someone develops a software design, does coding, testing or documenting, he or she invests her labour into the project. So, the project should be attractive for investments and continuously obtain this kind of funds.</p>
<p>The only vital condition of open source software success is <em>community</em>.</p>
<p>Linux is so successful not only due to the brilliant ideas and their implementation, but to effective development model attracted a high-quality labour of a lot of skilled Unix hackers worldwide. Linus&#8217; initial code was a great thing, but it would never be the today&#8217;s Linux system if there were no collaborative efforts of many people around the world. A reliable and productive community of highly interested and enthusiastic volunteers is a main capital of an opensource project and the key factor of its success.</p>
<p>That&#8217;s the point — to run a succesfull project it is not enough to be a talented coder and software designer. Since you&#8217;ve released the project, you have to get some, probably new skills — such as marketing, PR and even poitics. You should learn for collaboration, effective team management and ability to inspire the people.</p>
<h3>Be straight in your intentions</h3>
<p>Don&#8217;t be untrue. You&#8217;ll get other people joined in a project only if they&#8217;re sure they contribute into a real free software. You can do your best to straightly declare a free nature of the sourcecode if you&#8217;ll put it under an opensource software license.</p>
<p>Provide true information about you and your goals in the project. Don&#8217;t conceal himself behind a nickname — this is a habit of stupid crackers and may arose suspicion. You do a fair job and your real name worths a respect and fame.</p>
<h3>Choose an appropriate opensource license</h3>
<p>Depending on your goals, you can choose one of the opensource licenses:</p>
<ul>
<li> The GNU General Public License (GPL). It constraint anyone from making proprietary closed-source product derived from GPL-licensed software. Use GPL when doubt.
<li> The Lesser GNU General Public License (LGPL). The variant of GPL created specially for software libraries. It allows to use LGPL-licensed libraries in proprietary products (the GPL itself does not permit to do so).
<li> “BSD-like” licenses, such as BSD (Berkeley Software Distribution) License, or The Apache Software License. The licenses of this kind doesn&#8217;t prevent to make proprietary products based on your code. They have relatively few constraints — mainly, concerning required mentioning a copyright of original author in derived products (proprietary or free) and prohibited usage of the original software name.
<li> The Artistic License. The GPL-compatible license adapted by PERL community.
<li> The Mozilla Public License (MozPL). It discourages of making proprietary derived versions, but allows to create proprietary add-ons.
</ul>
<p>These are the most popular licenses which are fit in 99% cases. The <a href="http://www.opensource.org">Open Source Initiative</a> provides <a href="http://opensource.org/licenses/">full list of licenses</a> approved to be open source.</p>
<p>Of course, you can invent your own software license, but in this case new users and developers will be forced to spend their time for examine its terms and you&#8217;ll, perhaps, be asked for a lot of questions. So, do not complicate the things and choose one of the well-known OSS licenses.</p>
<h3>Publicize your project</h3>
<p>If you think opensource software doesn&#8217;t need advertising, you are quite wrong. Don&#8217;t be diffident and stingy on advertise your project. The more people will learn about the project, the more chances you get to enlarge your community. Announce it in the blogs, mailing lists, forums, newsgroups and among other network communities. A direct mass mail to people involved in the same area may have a good effect also. Maybe, you&#8217;ll get a few replies blaming you for spam, but if you&#8217;ve selected the right target audience, the most of the people will be happy to learn that something new is appeared in their area of interest.</p>
<h3>Motivate users to contribute</h3>
<p>The users of your software is a primary source for recruiting new project members. There already is a kind of the “power users” who enjoy to play with a program, hack it, customize it and try to improve it. They are the best candidates for new developers.</p>
<p>Let a software to be attractive for improvements. It is not that you should make it intentionally buggy and ugly (though, every initial release is buggy and ugly anyway), but it should encourage users to make it better from point of view of their experience and preferences. National localization, user interface skins, pluggable features, scripting and other sugar are effective attractions to explore the software from a backside and start to contribute.</p>
<h3>Cultivate your community</h3>
<p>Encourage people to contibute into the project. In fact, working in a friendly collaborative environment is one of the powerful motivation to contribute for many people. Keep this athmosphere of good will, collaboration and common understanding and your community will only grow.</p>
<p>Don&#8217;t let the people feel they do something personally for you &#8211; this is ultimately not the case since you&#8217;ve published your code. Let them feel this is their project as well as it is yours — and this is really so. Don&#8217;t turn your authority as an initial developer and project maintainer into dictation. Remember Tao: “If you want to lead other people, you must put their interest ahead of your own”.</p>
<p>Respect other&#8217;s opinion and try to answer personally for every feedback. Above all, pay your attention for constructive, argued, technically proved suggestions with designated ways of solution. Follow the same style in your own postings. Put important decisions concerning the whole project to discussion and voting. Besides of the well-known fact that the collective brain-storming brings the better solutions (the “Delphi effect” [<a href="http://www.tuxedo.org/~esr/writings/cathedral-bazaar/">1</a>]), this is also an opportunity for everybody to feel a value of her personal opinion.</p>
<p>Don&#8217;t ask the people to contribute and don&#8217;t make them feel any responsibility for it. For a lot of people it is just a fun and you have to value this attitude, because <em>fun is a great driving force</em>. In fact, a big deal of outstanding serious software has been made <em>for fun</em>. For many developers the project is an opportunity to do their favourite job without deadlines and bored managers. Such spirit of fun, freedom, ease and enthusiasm is the best athmospere for opensource communities. Do your best to keep this spirit, cultivate it and be actively involved in it.</p>
<p>Don&#8217;t hurry the people. If you granted a commit privileges, don&#8217;t expect for continious active contributions and don&#8217;t rob the access privileges back even if a commiter is inactive for a long time. Instead, try to inspire the people by your own enthusiasm. It is experienced that the project activity grows (and falls) exponentially — the more people are involved in active development, the more people get motivated to be involved too. It may sounds like a paradox, but lack of deadlines actually doesn&#8217;t slow the development process. In fact, many opensource software is developed faster than their proprietary competitors, although the most part of developers doing it in their spare time. I think, the reasons of such phenomenal productivity are ?pen nature, freedom and enthusiastic spirit inside the team &#8211; the things which are hardly reachable in the corporations. As far as I know the programmers, they are very hardworking and sedulous people, and the opensource is an ideal environment for exposing these habits.</p>
<p>When once you feel your project lives by its own life and is no longer depended on your personal will and efforts, this is a great milestone. If you were away for month or two, then got back and discovered that there are new version releases and project members, be sure you&#8217;ve reached your goal to create a succesfull project community.</p>
<h3>Cultivate project reputation</h3>
<p>Cultivating a community is not that you should please for everybody and turn the project into a public amusement. After all, the goal of the project is to develop a software, but not to have fun in a community. The project have to have the certain direction and the project maintainer is responsible to keep it on track. Be able to say no when it is needed. Use your authority for judgement and rejecting the features which are definitely out of subject but always provide a reasonable argumentation and be polite. If you&#8217;re in doubt, put the question to public discussion.</p>
<p>Before granting a commit access to the repository, imagine yourself as an employer hiring new workers. The internet users are just the reflection of human society and don&#8217;t be surprised if you meet not only intelligent and skilled developers. There very well may be the people from a well-known and ubiquitous tribe of “enthusiastic fools” who can smash the whole code base by very kind motivations. Despite all their demolitions are easily recovered with versions control, it is better to recognize such people on very early stage of their activity (fortunately, it is easy) and keep them at a safe distance of the repository. Also, be suspicious for anybody who doesn&#8217;t reveal his real name and email address. Grant commit access for well-known community members who have already been proven as the authors of helpful contributions. It is not that somebody is able to make an irreparable harm to the product or to the project infrastructure (as it was said, it is all recoverable), but hurting the project reputation is much more important thing.</p>
<h3>Cultivate project leaders</h3>
<p>You cannot guarantee you will maintain and coordinate the development during all the project lifetime. You may get uninterested and get busy on something new, or one day you&#8217;d realize you did all your best for this project. Actually, many opensource projects are led by the followers of initial developers.</p>
<p>When your project have a stable and reasonably large community, invite few responsible and active commiters and ask him to share your project&#8217;s admin privileges. You will make your own maintainer&#8217;s life easier and should be guaranteed the project coordination will be in reliable hands when you&#8217;re gone.</p>
<p><b><a href="http://cyberborean.wordpress.com/2006/03/09/open-source-best-practices-part-ii-technology/">Part II. Technology &gt;&gt;</a></b></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2006/03/03/open-source-best-practices-part-i-community/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>About Memoranda: Part II</title>
		<link>http://blog.cyberborean.org/2006/01/07/about-memoranda-part-ii</link>
		<comments>http://blog.cyberborean.org/2006/01/07/about-memoranda-part-ii#comments</comments>
		<pubDate>Sat, 07 Jan 2006 20:09:06 +0000</pubDate>
		<dc:creator>Alex Alishevskikh</dc:creator>
				<category><![CDATA[Essays]]></category>
		<category><![CDATA[Memoranda]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[PIM]]></category>
		<category><![CDATA[productivity]]></category>

		<guid isPermaLink="false">http://cyberborean.wordpress.com/2006/01/07/about-memorandapart-ii/</guid>
		<description><![CDATA[The first part is here. Memoranda I began to think about changing jNotes name as far back as I started to work at Version 2. It seemed to be basically new product, rather than just new version of jNotes. Another reason was annoying confusion with another software called JNotes &#8211; some Java stuff related with [...]]]></description>
			<content:encoded><![CDATA[<p><span id="more-36"></span><br />
<em>The first part  is <a href="http://cyberborean.wordpress.com/2006/01/05/about-memoranda-part-i/">here</a>.</em></p>
<h3>Memoranda</h3>
<p>I began to think about changing jNotes name as far back as I started to work at Version 2. It seemed to be basically new product, rather than just new version of jNotes. Another reason was annoying confusion with another software called JNotes &#8211; some Java stuff related with Lotus Notes. So, I posted my thoughts to the mailing list and asked people to suggest new names.</p>
<p>Ten variants of new name were proposed:</p>
<ul>
<li>InteliNotes
</li>
<li>Notestopia
</li>
<li>Memoranda
</li>
<li>LineUp
</li>
<li>Jot
</li>
<li>NoteSoup
</li>
<li>MyNotes
</li>
<li>NoteBurn
</li>
<li>Jilofax
</li>
<li>Chronicles (my variant)
</li>
<li>&#8230; oh no, &#8220;jNotes&#8221; forever! (another my variant)
</li>
</ul>
<p>As a result of voting, the “Memoranda” name invented by Iv&aacute;n Ribas was selected. I very liked that name and voted for it too. At the end of September 2003 we registered new project on SourceForge, moved the codebase and made new release under new name. New <a href="http://memoranda.sf.net">web-site</a> had been launched at the same time. The <a href="http://jnotes.sf.net">old site</a> was remained as a home of jNotes 1.0 (currently inactive).</p>
<p>Since then, among increasing stability, the software got a lot of new features. The most important ones are:</p>
<ul>
<li>
<b>Summary page (&#8220;Agenda&#8221;)</b><br />
A &#8220;today startup page&#8221; which summarize information of active tasks of all projects and upcoming events of this day.
</li>
<li>
<b>Hierarchical tasks</b><br />
Now the tasks of a project have hierarchical structure, so that every task may contain sub-tasks.
</li>
<li>
<b>Multiple notes per day</b><br />
until recently, a single calendar date was associated with a single note. Now it is possible to have few notes associated with the same date.
</li>
<li>
<b>14 national localizations</b><br />
Now Memoranda speaks Catalan, Chinese, Chinese (Taiwan), Dutch (Belgium), Dutch (Netherlands), Finnish, France, German, Hungarian, Italian, Japan, Russian, Serbian and Spain. The language of GUI is selected automatically depending on user&#8217;s system locale settings.
</li>
</ul>
<p>The current status of Memoranda is 1.0 Release Candidate 2. The next release (I hope) will be final.</p>
<div align="center">
<img src="http://cyberborean.files.wordpress.com/2006/01/memoranda10rc2.png" alt="memoranda10rc2" /></p>
<p><b>Memoranda 1.0-RC2 screenshot</b></div>
<h3>Who did it</h3>
<p>Many people in different time took part in Memoranda development. Above all, these are code commiters:</p>
<ul>
<li>Patrick Bielen (pbielen)
</li>
<li>Ryan Ho (rawsushi)
</li>
<li>Yunjie Liu (noregister)
</li>
<li>Iv&aacute;n Ribas (ivanrise)
</li>
<li>Carel-J Rischmuller  (carel-j)
</li>
<li>Jeremy Whitlock (jcscoobyrs)
</li>
<li>Jyrki Velhonoja (velhonoja)
</li>
</ul>
<p>And those who were not the developers, though they did the great help for the project:</p>
<ul>
<li>Thomas Chuffart
</li>
<li>Willy Dobe
</li>
<li>David Nagy
</li>
<li>Kenneth J. Pouncey
</li>
<li>Sava Rados
</li>
<li>Michael Radtke
</li>
<li>Milena Vitali-Charewicz
</li>
<li>Toru Watanabe</li>
<li>&#8230; and everyone I may have forgotten, sorry.
</li>
</ul>
<p>(all people listed alphabetically by their second names)</p>
<p>I don&#8217;t say thanks because this is <em>our</em> software, not my own ;-)</p>
<h3>Memoranda 2.0 ?</h3>
<p>My thoughts on Memoranda future are coming soon, so <b>the saga continues&#8230;</b></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cyberborean.org/2006/01/07/about-memoranda-part-ii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

