<?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>No sólo software &#187; gvSIG</title>
	<atom:link href="http://nosolosoftware.com/tag/gvsig/feed/" rel="self" type="application/rss+xml" />
	<link>http://nosolosoftware.com</link>
	<description></description>
	<lastBuildDate>Mon, 20 Feb 2012 20:41:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>JIDEE 2011</title>
		<link>http://nosolosoftware.com/jidee-2011/</link>
		<comments>http://nosolosoftware.com/jidee-2011/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 08:00:54 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[icarto]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=2158</guid>
		<description><![CDATA[Mañana estaré volando a Barcelona para asistir a las JIDEE 2011. El jueves 10 tendré el honor de presentar IDEPo, el nodo IDE de la Diputación de Pontevedra con datos EIEL, un proyecto financiado por la Diputación de Pontevedra y la Xunta de Galicia. Un proyecto que hemos liderado desde iCarto con la colaboración de Cartolab. [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Mañana estaré volando a Barcelona para asistir a las <a href="http://www.jiide2011.org/jiide2011/es/programa.html">JIDEE 2011</a>. El jueves 10 tendré el honor de presentar <a href="http://www.jiide2011.org/jiide2011/pdf/C_20.pdf">IDEPo, el nodo IDE de la Diputación de Pontevedra con datos EIEL</a>, un proyecto financiado por la Diputación de Pontevedra y la Xunta de Galicia. Un proyecto que hemos liderado desde <a href="http://icarto.es/">iCarto</a> con la colaboración de <a href="http://www.cartolab.es/">Cartolab</a>.</p>
<p style="text-align: justify;"><a href="http://nosolosoftware.com/files/2011/11/nodoide_visor_tematizado.png"><img class="aligncenter size-large wp-image-2160" title="IDEPo" src="http://nosolosoftware.com/files/2011/11/nodoide_visor_tematizado-1024x758.png" alt="" width="632" height="467" /></a></p>
<p style="text-align: justify;">No se me ocurre mejor acompañamiento para un proyecto como éste donde el conocimiento de los datos es crucial. Poca gente en España conoce los datos y procesos EIEL tan bien como ellos, una pequeña muestra es el gran trabajo que han liderado con <a href="http://cartolab.udc.es/cartoweb/gvsig-eiel/">gvSIG-EIEL</a>. Si queréis saber más de IDEPo o simplemente hablar de <a href="http://icarto.es">iCarto</a>, estaré disponible en el <a href="http://www.wtcbarcelona.com/mapa-como-llegar.html">WTC</a> al menos todo el día del jueves.</p>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/jidee-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analysis of free software communities (III): activity and manpower</title>
		<link>http://nosolosoftware.com/analysis-of-free-software-communities-iii/</link>
		<comments>http://nosolosoftware.com/analysis-of-free-software-communities-iii/#comments</comments>
		<pubDate>Fri, 07 Oct 2011 12:27:52 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[GRASS]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[QGIS]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=2005</guid>
		<description><![CDATA[Images: on the left, the number of changes to the codebase (commits) agregated by year. On the right, the number of developers with at least 1 commit that year. Data: trunk from project repositories during the period 1999-2010. Is it something we could extrapolate from the data there? Certainly, not the number of features developed or [...]]]></description>
			<content:encoded><![CDATA[<ul>
<li style="text-align: justify;"><strong>Images</strong>: on the left, the number of changes to the codebase (<em>commits</em>) agregated by year. On the right, the number of developers with at least 1 commit that year.</li>
<li style="text-align: justify;"><strong>Data</strong>: <em>trunk</em> from project repositories during the period 1999-2010.</li>
</ul>
<p style="text-align: justify;"><a href="http://nosolosoftware.com/files/2011/09/analysis_gis_libre_activity_and_manpower.png"><img class="aligncenter size-large wp-image-2006" title="Activity and manpower" src="http://nosolosoftware.com/files/2011/09/analysis_gis_libre_activity_and_manpower-1024x767.png" alt="" width="632" height="473" /></a></p>
<h3 style="text-align: justify;">Is it something we could extrapolate from the data there?</h3>
<p style="text-align: justify;">Certainly, not the number of <em>features</em> developed or <em>bug fixes</em>. It is even barely possible to compare activity between projects, as there are a high variability in terms of changesets: some people could send several little <em>changesets</em> and others just 1 big change, some project could have a special policy which affect the results (i.e.: make a commit formatting the code accoring to the style rules and other with the changes), etc. Some people could even argue that the language they are written in affects the number of changes (GRASS is written in C, gvSIG in Java and QGIS in C++) due to the libraries available or the semantics of every language. So, is it possible to find out <em>something</em>? Well, in my opinion, we can trace at least the following:</p>
<ul style="text-align: justify;">
<li>the internal evolution of a project.</li>
<li>how a project is doing in terms of adding new blood.</li>
</ul>
<p style="text-align: justify;"> So, let&#8217;s make <a href="http://nosolosoftware.com/analysis-of-free-software-communities-ii/">again</a> the exercise of finding out what&#8217;s happening here:</p>
<h4 style="text-align: justify;">GRASS</h4>
<ul style="text-align: justify;">
<li>It calls the atention the curve of activity in the project: <strong>growth by periods (2001-2004 and 2005-2007) with local maximums in 2004 and 2007</strong>. Our hypothesis was that it was due to the way the project works: the developers here make changes both in the <em>trunk</em> and in the <em>branch</em> of the product to release (be it 6.4 or 6.5) at the same time, with a lot of changesets moved between both the trunk and the branches (so doing heavy <em>backporting</em>). In a recently conversation with <a href="http://www.grassbook.org/neteler/">Markus Neteler</a>, he has explained me better how they work and I guess the rhythm we see in the graphics is due to that.</li>
<li>In terms of number of developers, GRASS has showed <strong>a continuous growth until 2008; since then, the number of regular developers stabilizes</strong>.</li>
</ul>
<h4 style="text-align: justify;">gvSIG</h4>
<ul style="text-align: justify;">
<li>gvSIG shows <strong>an incredible high period of activity during 2006-2008</strong> (4500 changesets by year and most that 30 people involved!). To understand the <em>Gauss bell </em>of activity, is needed to know the background of the project: gvSIG development has been led <em>by contract</em>, which means that all activities (planning, development, testing, etc) were led by the client needs who pay for it. Only recently, these processes have been opened to a broader community (firms and volunteers collaborating in the project within the <a href="http://www.gvsig.com/welcome?set_language=en">gvSIG association</a>). So, it makes sense that the beginnings had seen less activity (high phases of planing) and afterwards they got to agregate so many people in such a short period of time.</li>
<li>But, in <strong>2010 it suffered a sudden stop in development</strong> (only 233 changes to the codebase were made, while a pace of 4500 changes were made during previous years). This decreasing in activity is highly correlated to the number of developers involved. It&#8217;s hard to say why it happens: could it be due to the efforts were directed to gvSIG 2.0 development? could it be due to the reorganization in the project and the creation of gvSIG asociation? Well, few can we said at this respect with the data available, further research is required to determine that.</li>
</ul>
<h4 style="text-align: justify;">QGIS</h4>
<div>
<ul style="text-align: justify;">
<li><strong>Steady grow both in terms of contributions and contributors</strong>. 2004 and 2008 years determine two peaks of activity and people participating in the development. Our preliminar hypothesys was that it was due to the release of the first stable version and the release of 1.0, as well as become an oficial project of OSGEO. Gary Sherman has confirmed that in a recent post (<a href="http://spatialgalaxy.net/2011/09/23/history-of-qgis-committers/">history of QGIS commiters</a>) and an interview (<a href="http://linfiniti.com/2011/10/interview-with-gary-sherman-qgis-founder-part-1/">part1</a> and <a href="http://linfiniti.com/2011/10/interview-with-gary-sherman-qgis-project-founder-part-2/">part2</a>). Besides, he pointed out that in 2007 the project added python support for plugin development, which possibly was one of the reasons of the growth in 2008 and afterwards.</li>
<li>An interesting finding is that, <strong>every 4 years the project has doubled the amount of developers involved</strong> with a slower but steady growth in activity.</li>
</ul>
<div style="text-align: justify;">Well, hope these graphics have helped us to understand better how is the project activity and the manpower every project is able to aggregate around it. Next posts in the serie, will focus on the developers involved and the culture surrounding them. Looking forward to your feedback!</div>
</div>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/analysis-of-free-software-communities-iii/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Analysis of free software communities (II): adoption trends</title>
		<link>http://nosolosoftware.com/analysis-of-free-software-communities-ii/</link>
		<comments>http://nosolosoftware.com/analysis-of-free-software-communities-ii/#comments</comments>
		<pubDate>Wed, 05 Oct 2011 20:00:31 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[GRASS]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[QGIS]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=2015</guid>
		<description><![CDATA[Find below the statistics for mailinglist activity in GRASS, gvSIG and QGIS during the period 2008-2010. The first one shows data from the general user mailinglists for each project. Take into account that data for gvSIG agregated both international and spanish mailinglist due the reasons stated here. The next one shows the same data (number [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Find below the statistics for mailinglist activity in GRASS, gvSIG and QGIS during the period 2008-2010. The first one shows data from the general user mailinglists for each project. Take into account that data for gvSIG agregated both international and spanish mailinglist due the reasons stated <a href="http://nosolosoftware.com/analysis-on-free-software-communities-i/">here</a>.</p>
<p><a href="http://nosolosoftware.com/files/2011/09/analysis_gis_libre_users_trends.png"><img class="aligncenter size-large wp-image-2016" title="Adoption trends (within users)" src="http://nosolosoftware.com/files/2011/09/analysis_gis_libre_users_trends-1024x767.png" alt="" width="632" height="473" /></a></p>
<p>The next one shows the same data (number of people writing and number of messages by month) for the developers mailinglists.</p>
<p><a href="http://nosolosoftware.com/files/2011/09/analysis_gis_libre_developer_trends.png"><img class="aligncenter size-large wp-image-2017" title="Adoption trends (within developers)" src="http://nosolosoftware.com/files/2011/09/analysis_gis_libre_developer_trends-1024x765.png" alt="" width="632" height="472" /></a></p>
<h3>Is it something we could extrapolate from the data there?</h3>
<p>Well, certainly not the user base. The data <strong>shyly introduce us the trends, not the real user base</strong>. The <a href="http://nosolosoftware.com/analysis-on-free-software-communities-i/">model we adopted to study the projects</a> reflects just a part of the community -which is arguably the engine of project- but don&#8217;t take the data as the number of users for each project. For sure, each one of our favorite projects has more users than those participating in (these) mailinglists!</p>
<p>Anyway, here some food for thought:</p>
<ul>
<li style="text-align: justify;"><strong>GRASS</strong>: it smoothly decreases in terms of number of messages as well as people writing, which happen within users and developers. The tendency is not clear though.</li>
<li style="text-align: justify;"><strong>gvSIG</strong>: the data shows a steadly increasing number of users participating in the mailinglists. On the other hand, although it is the project with more people suscribed to developer mailinglist, it shows the less activity of the three projects (in terms of # of messages in developer lists): few technical conversations seemed to happen through the mailinglists during that period.</li>
<li style="text-align: justify;"><strong>QGIS</strong>: according to the data, a clear growth exists in the community. In the period in study (3 years) the number of users and developers participating in mailinglists has been doubled!</li>
</ul>
<div style="text-align: justify;">Few more can be said, hope the graphics are explicative enough! Looking forward to your feedback.</div>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/analysis-of-free-software-communities-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How gvSIG MapControl works: flow of control</title>
		<link>http://nosolosoftware.com/how-gvsig-mapcontrol-works-flow-of-control/</link>
		<comments>http://nosolosoftware.com/how-gvsig-mapcontrol-works-flow-of-control/#comments</comments>
		<pubDate>Wed, 28 Sep 2011 19:26:04 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=2027</guid>
		<description><![CDATA[Within gvSIG design, MapControl is one of the core components. Its main responsibility is to allow users to interact with a map of layers (zoom in/out, edit geometries, &#8230;). That goal is achieved through two concrete tasks: Route the user actions to the proper tool which will execute it. Manage the drawing of the layers. This [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Within gvSIG design, MapControl is one of the core components. Its main responsibility is to <strong>allow users to interact with a map of layers </strong>(zoom in/out, edit geometries, &#8230;). That goal is achieved through two concrete tasks:</p>
<ul>
<li>Route the user actions to the proper tool which will execute it.</li>
<li>Manage the drawing of the layers.</li>
</ul>
<p>This post covers the first of above tasks in an introductory way.</p>
<h3>Flow of control</h3>
<p>MapControl is a java component, which uses the idea of <a href="http://c2.com/cgi/wiki?ChainOfResponsibilityPattern">Chain of Responsibility</a> to delegate work on others. Let&#8217;s see how it works in this case with a good old graphic:</p>
<h2 style="text-align: center;"><span style="color: #ff0000;"><a href="http://nosolosoftware.com/files/2011/09/20110928_003-1.jpg"><img class="aligncenter size-large wp-image-2059" title="mapcontrol -flow of control" src="http://nosolosoftware.com/files/2011/09/20110928_003-1-1024x769.jpg" alt="" width="632" height="474" /></a><br />
</span></h2>
<ol>
<li><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MapControl</span> listen <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MouseEvents</span> through the <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MapToolListener</span>. In response to an event, the <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MapToolListener</span> will call the active tool (let&#8217;s say this class is named <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">Behaviour</span>).</li>
<li>The active <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">Behaviour</span> processes the info from the mouse, put together the contextual information needed (let&#8217;s call that an <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">Event</span>) and calls the next step in the chain (let&#8217;s call it the <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">ToolListener)</span>.</li>
<li>Finally, the <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">ToolListener</span> will execute the actions needed to carry on the task an user have asked for.</li>
</ol>
<div>Some notes before digging into code:</div>
<div>
<ul>
<li><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MapControl</span> can have only 1 tool (<span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">Behaviour</span>) active at any time. It holds the current selection in a private variable: <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">Behaviour currentMapTool</span></li>
<li><span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MapControl</span> wraps <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MouseEvents</span> in 4 basic canonical events (see <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">com.iver.cit.gvsig.fmap.tools.Events</span> within libFMap project): <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MeasureEvent</span>, <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">PointEvent</span>, <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MoveEvent</span> and <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">RectangleEvent</span>. Any other event will inherit from and extend one of these canonical forms.</li>
</ul>
<h3>A concrete example: how a move event is processed</h3>
<p>1 &#8211; <strong>MapToolListener</strong>: listen the mouse event and proxy it to the current selected behaviour (<span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">currentMapTool</span> variable).</p>
<pre>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> mouseReleased<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Amouseevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">MouseEvent</span></a> e<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>currentMapTool <span style="color: #339933;">!=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; currentMapTool.<span style="color: #006633;">mouseReleased</span><span style="color: #009900;">&#40;</span>e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span>BehaviorException t<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; throwException<span style="color: #009900;">&#40;</span>t<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
</pre>
<p>2 &#8211; <strong>Behaviour</strong> (<span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MoveBehaviour</span> in this case): takes the event, put together the context (<span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">MoveEvent</span>) and redirects the petition to the proper ToolListener (<span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">listener</span> variable).</p>
<pre>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> mouseReleased<span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Amouseevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">MouseEvent</span></a> e<span style="color: #009900;">&#41;</span> <span style="color: #000000; font-weight: bold;">throws</span> BehaviorException <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>e.<span style="color: #006633;">getButton</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Amouseevent+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">MouseEvent</span></a>.<span style="color: #006633;">BUTTON1</span> <span style="color: #339933;">&amp;</span>amp<span style="color: #339933;">;&amp;</span>amp<span style="color: #339933;">;</span> m_FirstPoint<span style="color: #339933;">!=</span><span style="color: #000066; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; MoveEvent event <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> MoveEvent<span style="color: #009900;">&#40;</span>m_FirstPoint, e.<span style="color: #006633;">getPoint</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, e<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; listener.<span style="color: #006633;">move</span><span style="color: #009900;">&#40;</span>event<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; m_FirstPoint <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
</pre>
<p>3 &#8211; <strong>ToolListener</strong>: carry on the task. In this case, the listener (a <span class="Apple-style-span" style="font-family: Consolas, Monaco, monospace; font-size: 12px; line-height: 18px; white-space: pre;">PanListener</span>) make the viewport to update the extent with the new contents.</p>
<pre>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> move<span style="color: #009900;">&#40;</span>MoveEvent event<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; ViewPort vp <span style="color: #339933;">=</span> mapControl.<span style="color: #006633;">getMapContext</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getViewPort</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Apoint2d+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Point2D</span></a> from <span style="color: #339933;">=</span> vp.<span style="color: #006633;">toMapPoint</span><span style="color: #009900;">&#40;</span>event.<span style="color: #006633;">getFrom</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Apoint2d+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Point2D</span></a> to <span style="color: #339933;">=</span> vp.<span style="color: #006633;">toMapPoint</span><span style="color: #009900;">&#40;</span>event.<span style="color: #006633;">getTo</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">//build the new extent</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arectangle2d+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Rectangle2D</span></a>.<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adouble+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Double</span></a> r <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arectangle2d+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Rectangle2D</span></a>.<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Adouble+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Double</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Arectangle2d+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Rectangle2D</span></a> extent <span style="color: #339933;">=</span> vp.<span style="color: #006633;">getExtent</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; r.<span style="color: #006633;">x</span> <span style="color: #339933;">=</span> extent.<span style="color: #006633;">getX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>to.<span style="color: #006633;">getX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> from.<span style="color: #006633;">getX</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; r.<span style="color: #006633;">y</span> <span style="color: #339933;">=</span> extent.<span style="color: #006633;">getY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> <span style="color: #009900;">&#40;</span>to.<span style="color: #006633;">getY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">-</span> from.<span style="color: #006633;">getY</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; r.<span style="color: #006633;">width</span> <span style="color: #339933;">=</span> extent.<span style="color: #006633;">getWidth</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; r.<span style="color: #006633;">height</span> <span style="color: #339933;">=</span> extent.<span style="color: #006633;">getHeight</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">//update the ViewPort</span><br />
&nbsp; &nbsp; vp.<span style="color: #006633;">setExtent</span><span style="color: #009900;">&#40;</span>r<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
</pre>
<h3>Coda</h3>
</div>
<p style="text-align: justify;">Some useful resources about MapControl in gvSIG wiki:</p>
<ul>
<li style="text-align: justify;"><a href="http://www.gvsig.org/web/docdev/reference/fmap/dirmapcontrol/mapcontrol/">MapControl</a> (spanish)</li>
<li style="text-align: justify;"><a href="http://www.gvsig.org/web/docdev/docs/v1_0/fmap/dirmapcontrol/behavior/">Behaviour</a> (spanish)</li>
<li style="text-align: justify;"><a href="http://www.gvsig.org/web/docdev/docs/v1_0/fmap/dirmapcontrol/toollistener/">ToolListeners</a> (spanish)</li>
<li style="text-align: justify;"><a href="http://www.gvsig.org/web/docdev/docs/v1_0/fmap/dirmapcontrol/toollistenersevents">Events related to toollisteners</a> (spanish)</li>
</ul>
<div>Links to code:</div>
<ul>
<li><a href="https://devel.gvsig.org/svn/gvsig-desktop/tags/v1_11_0_Build_1303/libraries/libFMap/src/com/iver/cit/gvsig/fmap/MapControl.java">Mapcontrol</a></li>
<li>Canonical events of MapControl:</li>
<ul>
<li><a href="https://devel.gvsig.org/svn/gvsig-desktop/tags/v1_11_0_Build_1303/libraries/libFMap/src/com/iver/cit/gvsig/fmap/tools/Events/MeasureEvent.java">MeasureEvent</a></li>
<li><a href="https://devel.gvsig.org/svn/gvsig-desktop/tags/v1_11_0_Build_1303/libraries/libFMap/src/com/iver/cit/gvsig/fmap/tools/Events/MoveEvent.java">MoveEvent</a></li>
<li><a href="https://devel.gvsig.org/svn/gvsig-desktop/tags/v1_11_0_Build_1303/libraries/libFMap/src/com/iver/cit/gvsig/fmap/tools/Events/PointEvent.java">PointEvent</a></li>
<li><a href="https://devel.gvsig.org/svn/gvsig-desktop/tags/v1_11_0_Build_1303/libraries/libFMap/src/com/iver/cit/gvsig/fmap/tools/Events/RectangleEvent.java">RectangleEvent</a></li>
</ul>
</ul>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/how-gvsig-mapcontrol-works-flow-of-control/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Analysis on free software communities (I): a quantitative study on GRASS, gvSIG and QGIS</title>
		<link>http://nosolosoftware.com/analysis-on-free-software-communities-i/</link>
		<comments>http://nosolosoftware.com/analysis-on-free-software-communities-i/#comments</comments>
		<pubDate>Sat, 24 Sep 2011 09:49:36 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[GRASS]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[QGIS]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=1982</guid>
		<description><![CDATA[When selecting an aplication, it&#8217;s very common to weight tecnological factors -what the aplication enable us to do?- and economic ones -how money do we need?. And yet, there is a third factor to take into account, the social aspects of the project: the community of users and developers who support it and make it [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">When selecting an aplication, it&#8217;s very common to weight <strong>tecnological factors</strong> -what the aplication enable us to do?- and <strong>economic ones</strong> -how money do we need?. And yet, there is a third factor to take into account, the <strong>social aspects</strong> of the project: the community of users and developers who support it and make it be alive.</p>
<p style="text-align: justify;">During a serie of posts begin with this, I&#8217;m going to show a quantitative analysis of communities from 3 reference projects in GIS arena: <a href="http://grass.fbk.eu/">GRASS</a>, <a href="http://www.gvsig.org/web/">gvSIG</a> y <a href="http://qgis.osgeo.org/">QGIS</a>. We selected those, as they are viewed as the more mature projects in desktop GIS, they are under <a href="http://osgeo.org/">OSGEO Fundation</a> umbrella and show some differences on the actors who bootstrapped and manage today.</p>
<table style="margin-left: auto; margin-right: auto;">
<tbody>
<tr>
<td><img title="GRASS" src="http://grass.fbk.eu/images/grasslogo_vector_tiny.png" alt="" width="70" height="79" /></td>
<td><img title="QGIS" src="http://www.qgis.org/templates/qgis/images/blue/logo.png" alt="" width="80" height="80" /></td>
<td><img title="gvSIG" src="http://www.gvsig.com/files/images/logos/logo-gvsig/image" alt="" width="80" height="80" /></td>
</tr>
</tbody>
</table>
<h3 style="text-align: justify;">What we have done?</h3>
<p style="text-align: justify;">During the <a href="http://en.wikipedia.org/wiki/History_of_Free_Software">more than 25 years of free software movement</a>, it has delighted us with the high capacity for fostering creation and innovation <a href="http://nosolosoftware.com/empresa-mercado-y-comunidad/">a community-based model</a> has. Along last years, that model proved its viability in other areas too: content creation (wikipedia), <a href="http://nosolosoftware.com/informacion-geografica-creacion-de-contenidos-en-comunidad/">cartographic data creation (openstreetmaps)</a>, <a href="http://nosolosoftware.com/traduccion-de-un-libro-a-12-manos-mis-conclusiones-y-iii/">translating books</a>, etc. Yet, few is known on <em>&#8220;how to bootstrap and grow a community&#8221;</em>. The only thing we can do is observing what others have done and learn from their experience.</p>
<p style="text-align: justify;">In order to contribute to the understanding on how a community-based project works I&#8217;ve work with <a href="http://conocimientoabierto.es">Francisco Puga</a> and other people from <a href="www.cartolab.es">Cartolab</a> to put together some of the public information the projects generate and make some sense from that. The actors in a community interact with each other, and, when that happen through internet, a trail is left (messages to mailinglists have author information and date, code version systems log information about the authors too, &#8230;). Basing our work on this available and public information -and <em>standing on the shoulder on giants -</em>i.e: reviewing a lot of research works similar to what we like to build- <strong>we have developed a quantitative analysis on the communities supporting GRASS, gvSIG and QGIS</strong>.</p>
<h3 style="text-align: justify;">How did we make it?</h3>
<p style="text-align: justify;">The first step was to evaluate and gather all the public information a project, for what we like to do it in automated way. But, as we had to compare the 3 projects, the data had to be homogeneous: at least exists in both 3 and be in a comparable format. Taking these constraints into account (and the limited time we had for this!) we have collected information from 2 different systems:</p>
<ul style="text-align: justify;">
<li><strong>Code versions control systems:</strong> from every project, we cloned all information available in their repositories to a local <a href="http://git-scm.com/">git</a> repo, in order to parse the log of changes. This allowed us to study <strong>all the history of projects, from the very begining to December 2010</strong>.</li>
<ul>
<li>Data was got from trunk: <a href="https://svn.osgeo.org/grass/grass/trunk">grass</a> - <a href="https://svn.forge.osor.eu/svn/gvsig-desktop/trunk">gvsig</a> - <a href="https://svn.osgeo.org/qgis/trunk/qgis">qgis</a>.</li>
</ul>
<li><strong>Mailinglists</strong>: by means of <a href="http://www.flossmetrics.org/sections/tools/MailingListStats">mailingliststats</a> tool -built mainly by our friend <a href="http://herraiz.org/blog/index.html">Israel Herráiz</a>, <em>thanks bro!</em>- we gather <strong>data from March 2008 to December 2010</strong>.
<ul>
<li>Development mailinglists: <a href="http://lists.osgeo.org/mailman/listinfo/grass-dev/">grass</a> - <a href="http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores">gvsig</a> - <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer">qgis</a></li>
<li>Users mailinglists: <a href="http://lists.osgeo.org/mailman/listinfo/grass-user">grass</a> - <a href="http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional">gvsig en</a> / <a href="http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios">gvsig es</a> - <a href="http://lists.osgeo.org/mailman/listinfo/qgis-user">qgis</a></li>
</ul>
</li>
</ul>
<p style="text-align: justify;">Some disclaimers:</p>
<ul style="text-align: justify;">
<li>Projects have a number of branches, plugins and so. We focused the study on the main product, what an user get when she downloads it. Further study on the plugins ecosystem is needed, and it will give us more fine-tuning information.</li>
<li>Projects have a number of mailinglists more than we have studied (translators, steering committee, other local/regional mailinglists, etc), varying on each case. The analysis was focused on developers and users ones due to we think they are representative enough to mark the trend. We are not interested in giving an exact number (which may be impossible to measure!) but in drawing the long-term fluctuation of participation. Our intuition and past experiences, says that those mailinglists will follow a correlation of participation with the larger community surrounding the projects.</li>
<li>In the particular case of gvSIG users mailinglists, we have studied spanish and english mailinglist jointly. It makes sense doing so as the spanish mailinglist still have the core of contributions from hispanoamerican countries and non-spanish people interacts through international mailinglist. It is like the project have two hearts.</li>
<li>Unfortunately, quality of data have limited the period in study: the range is from March 2008 to December 2010. Prior to that, not all projects have information due to mailinglist migrations.</li>
</ul>
<h3 style="text-align: justify;">What is it useful for?</h3>
<p style="text-align: justify;">It&#8217;s possible to analyze a community from a variety of points of view. Our approach is a quantitative focus by means of a common model which agregate users depending on their level of participation:</p>
<ul style="text-align: justify;">
<li><em>Leaders</em>: those who build the product and make the decisions.</li>
<li><em>Power users: </em>those who adapt it to their needs and using it intensively.</li>
<li><em>Casual users</em>: those who using it for a concrete task.</li>
</ul>
<p style="text-align: justify;">This approach allow us to better understand the size of the community and how they interact, as it&#8217;s not the same the value provided by someone who in 6 months only sent 1 mail to a mailinglist than other person who spent that time sending more than 100 patches to the code.</p>
<p><a href="http://nosolosoftware.com/files/2011/06/ecosistema.png"><img class="aligncenter" title="Ecosistema de una aplicación" src="http://nosolosoftware.com/files/2011/06/ecosistema-1024x527.png" alt="" width="632" height="325" /></a><a href="http://nosolosoftware.com/files/2011/06/ecosistema.png"><br />
</a></p>
<p style="text-align: justify;">With these constraints, we managed to built the following indicators:</p>
<ul style="text-align: justify;">
<li><strong>Adoption trend within users and developers</strong>: based on mailinglists data.</li>
<ul>
<li>Status:<em> <a href="http://nosolosoftware.com/analysis-of-free-software-communities-ii/">post published</a>.</em></li>
</ul>
<li><strong>Activity and manpower</strong>: based on code contributions (<em>commits</em>).</li>
<ul>
<li>Status:<em> <a href="http://nosolosoftware.com/analysis-of-free-software-communities-iii/">post published</a>.</em></li>
</ul>
<li><strong>Composition of the community</strong>: based on code contributions (<em>commits</em>).</li>
<ul>
<li>Status:<em> still to be published.</em></li>
</ul>
<li><strong>Generational analysis</strong>: based on code contributions (<em>commits</em>).</li>
<ul>
<li>Status:<em> still to be published.</em></li>
</ul>
</ul>
<p style="text-align: justify;">During next weeks, I will be publishing the results of the study, in order to help us to understand how different free software communities work, and what we can learn from that. <em>Stay tunned!</em></p>
<h3>Coda</h3>
<p>The results shown here are borrowed from a paper I led jointly with <a href="http://conocimientoabierto.es">Francisco Puga</a>, Alberto Varela and Adrián Eirís from <a href="www.cartolab.es">Cartolab</a>, a GIS university research laboratory based on A Coruña. The results were shown on the <a href="http://www.sigte.udg.edu/jornadassiglibre2011/index.php?page=jornadas">V Jornadas de SIG Libre, Girona 2010</a>. If you are fluent in spanish (reading or listening), you can benefit from these resources:</p>
<ul>
<li>(in spanish) The <a href="http://www.sigte.udg.edu/jornadassiglibre2011/uploads/articulos/art37.pdf">complete paper [PDF]</a>.</li>
<li>(in spanish) The <a href="http://www.sigte.udg.edu/jornadassiglibre2011/uploads/presentaciones/p37.pdf">slides [PDF]</a>.</li>
<li>(in spanish) <a href="http://vimeo.com/22992292">Video explaining the highlights</a> - not my best performance though <img src='http://nosolosoftware.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<div>From those who can&#8217;t, I&#8217;ll summarize the main points through small posts on each topic&#8217;s paper. The original authors have not reviewed the text as published in my blog, so consider any opinion expressed here as my own (have them to review my texts is a boring and time-consuming task I&#8217;m sure they prefer to skip). Please, beg my english.</div>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/analysis-on-free-software-communities-i/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>gvsig vs qgis</title>
		<link>http://nosolosoftware.com/gvsig-vs-qgis/</link>
		<comments>http://nosolosoftware.com/gvsig-vs-qgis/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 19:03:51 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[status]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[NavTable]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=1913</guid>
		<description><![CDATA[I&#8217;m not such a fan of comparatives to rank things. But I find them useful to know your pros and cons, or at least to know how the surrounding community perceive your product. While having a coffee today I found this article on gis @ stackexchange: QGIS and gvSIG comparison. Made me happy than 2 out [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I&#8217;m not such a fan of comparatives to <em>rank</em> things. But I find them useful to know your <em>pros</em> and <em>cons</em>, or at least to know how the surrounding community perceive your product. While having a coffee today I found this article on gis @ stackexchange: <a href="http://gis.stackexchange.com/questions/13509/qgis-and-gvsig-comparison/13516">QGIS and gvSIG comparison</a>. Made me happy than 2 out of 6 gvSIG <em>pros</em> are tools where I&#8217;m engaged: <a href="http://navtable.forge.osor.eu/">NavTable</a> and <a href="http://forge.osor.eu/plugins/wiki/index.php?id=194&amp;type=g">OpenCADTools</a>. Keep rocking <a href="http://www.cartolab.es">cartolab</a> and <a href="http://www.icarto.es">iCarto</a>!</p>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/gvsig-vs-qgis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How gvsig manages the snappers</title>
		<link>http://nosolosoftware.com/how-gvsig-manages-the-snappers/</link>
		<comments>http://nosolosoftware.com/how-gvsig-manages-the-snappers/#comments</comments>
		<pubDate>Mon, 08 Aug 2011 02:26:23 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=1844</guid>
		<description><![CDATA[Last week I paired together with Francisco Puga to review the status of opencadtools. As Fran is doing a great work in preparing the integration of opencadtools as default CAD tools in gvSIG, I wanted to know first hand how it was going. iCarto and Cartolab were kind enough to sponsor this pairing session. One of [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Last week I paired together with <a href="http://conocimientoabierto.es/">Francisco Puga</a> to review the status of <a href="http://forge.osor.eu/plugins/wiki/index.php?id=194&amp;type=g">opencadtools</a>. As Fran is doing a great work in preparing the integration of <a href="http://www.gvsig.org/web/working-groups/organizacion/docs/meetings/meeting-20110606/minutes#opencadtools">opencadtools as default CAD tools in gvSIG</a>, I wanted to know first hand how it was going. <a href="http://www.icarto.es">iCarto</a> and <a href="http://www.cartolab.es">Cartolab</a> were kind enough to sponsor this pairing session. One of the results, apart from working with Fran -which is always motivating and enjoyable, <em>per se</em>-, was a deeper understanding on how snappers work in gvSIG, which is something I had asked myself sometimes. And, as one of the improvements of opencadtools is a <a href="http://www.youtube.com/watch?v=_cKvfMyeN0k">followgeometry snapper</a>, it seems a good goal to review that part of the project. Find below the summary:</p>
<p><a href="http://forge.osor.eu/plugins/scmsvn/viewcvs.php/trunk/extensions/extCAD/src/com/iver/cit/gvsig/gui/cad/CADToolAdapter.java?root=gvsig-desktop&amp;rev=35161&amp;view=markup">CADToolAdapter class</a> in extCAD extension maintains a list of snappers and layers to snap to from the editing layer. When the mouse is moved, the snappers are recalculated following this algorithm (note that the code below is the core of the method, some other parts/casts and boilerplate code is missing):</p>
<pre>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:500px;"><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aarraylist+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ArrayList</span></a> snappers <span style="color: #339933;">=</span> SnapConfigPage.<span style="color: #006633;">getActivesSnappers</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
ILayerEdited layerInEdition <span style="color: #339933;">=</span><br />
&nbsp; &nbsp; CADExtension.<span style="color: #006633;">getEditionManager</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getActiveLayerEdited</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aarraylist+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ArrayList</span></a> layersToSnap <span style="color: #339933;">=</span> layerInEdition.<span style="color: #006633;">getLayersToSnap</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
<span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>FLyrVect layer <span style="color: #339933;">:</span> layersToSnap<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Getting the set of geometries within the envelope</span><br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// The envelope is calculated based on the tolerance the user wants</span><br />
&nbsp; &nbsp; SpatialCache cache <span style="color: #339933;">=</span> layer.<span style="color: #006633;">getSpatialCache</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Alist+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">List</span></a> geometries <span style="color: #339933;">=</span> cache.<span style="color: #006633;">query</span><span style="color: #009900;">&#40;</span>envelope<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// Updating the nearest point</span><br />
&nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span>Feature geomToSnap <span style="color: #339933;">:</span> geometries<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">int</span> i<span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span> i<span style="color: #339933;">&lt;</span>snappers.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Apoint2d+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Point2D</span></a> pointToSnap <span style="color: #339933;">=</span> snappers<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #006633;">getSnapPoint</span><span style="color: #009900;">&#40;</span>queryPoint,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; geomToSnap,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tolerance,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lastPointEntered<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">double</span> distance <span style="color: #339933;">=</span> pointToSnap.<span style="color: #006633;">distance</span><span style="color: #009900;">&#40;</span>queryPoint<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>minimunDistance <span style="color: #339933;">&gt;</span> distance<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; minimunDistance <span style="color: #339933;">=</span> distance<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
<span style="color: #009900;">&#125;</span></div></div>
</pre>
<p style="text-align: justify;">This algorithm is executed every time the user move the mouse and is very quick if you have few layers to snap to. But, as the number of layer to check increases, the editing process becomes very slow. Besides, as a comment of software design, after reviewing this part of code, I like the way the snappers fit in gvsig cad tools. If you want to add a new snapper, just need to implement ISnapperVectorial interface and make getSnapToPoint method to return the nearest point to the position of the mouse. So, designing your own snappers is very easy!</p>
<p>By the way, if you feel like replying<strong> how other GIS applications (QGIS, uDig, &#8230;) manage the snappers</strong>, I&#8217;d be more than happy to hear and learn that!</p>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/how-gvsig-manages-the-snappers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Liberada extTOCExtra</title>
		<link>http://nosolosoftware.com/liberada-exttocextra/</link>
		<comments>http://nosolosoftware.com/liberada-exttocextra/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 15:05:15 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[status]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=1800</guid>
		<description><![CDATA[¿Usuarios habituales de gvSIG? No os perdáis esta extensión que añade nuevas funcionalidades al TOC estándar que acaba de liberar Cartolab.]]></description>
			<content:encoded><![CDATA[<p>¿Usuarios habituales de gvSIG? No os perdáis esta <a href="https://github.com/cartolab/extTOCExtra/wiki">extensión que añade nuevas funcionalidades al TOC estándar</a> que acaba de liberar <a href="http://www.cartolab.es/">Cartolab</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/liberada-exttocextra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gvSIG codesprint in A Coruña: a personal summary</title>
		<link>http://nosolosoftware.com/gvsig-codesprint-in-a-corunha/</link>
		<comments>http://nosolosoftware.com/gvsig-codesprint-in-a-corunha/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 06:37:05 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[Desarrollo de software]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[NavTable]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=1780</guid>
		<description><![CDATA[As you may know, iCarto and Cartolab have hosted a gvSIG codesprint at the nice city of A Coruña. iCarto was kind enough to support my attendance to the event to work on gvsig, navtable &#38; navtableforms. Find below some comments on my personal experience. Some general impressions on the event It&#8217;s great to see [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">As you may know, <a href="www.icarto.es">iCarto</a> and <a href="www.cartolab.es">Cartolab</a> have hosted a <a href="http://doowikis.com/m/oXmrqoFIM1">gvSIG codesprint</a> at the <a href="http://decerca.coruna.es/">nice city of A Coruña</a>. <a href="http://www.icarto.es">iCarto</a> was kind enough to support my attendance to the event to work on gvsig, navtable &amp; navtableforms. Find below some comments on my personal experience.</p>
<p><a href="http://nosolosoftware.com/files/2011/07/codesprint_jueves_14_07_2011.jpg"><img class="aligncenter size-full wp-image-1781" title="codesprint_jueves_14_07_2011" src="http://nosolosoftware.com/files/2011/07/codesprint_jueves_14_07_2011.jpg" alt="" width="502" height="158" /></a></p>
<h3>Some general impressions on the event</h3>
<ul>
<li style="text-align: justify;"><strong>It&#8217;s great to see codesprints are becoming usual in gvsig project</strong>. It&#8217;s still a new practice to be fully embraced for most members of the community but taking into account that the <a href="http://blog.gvsig.org/2010/09/20/gvsig-codesprint-en-el-foss4g2010/">the first codesprint</a> I <a href="http://listserv.gva.es/pipermail/gvsig_desarrolladores/2010-August/004697.html">proposed</a> was almost 1 year ago, we have good rithm (this was the 4th codesprint!). It feels good to see such an amount of people and energy during the codesprint. It is encouraging and talks about their commitment to the project.</li>
<li style="text-align: justify;"><strong>This codesprint was the 2nd in number of participants after the one in Valencia</strong>! That confirms that Galicia matters <img src='http://nosolosoftware.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  That was the good news. The bad ones: I&#8217;ve missed developers from England (do you know London is directly connected to A Coruña by flight?), Portugal (don&#8217;t you know that we <a href="http://gl.wikipedia.org/wiki/Galego-portugu%C3%A9s">speak the same language</a>?!) and more people, shops and gvSIG <a href="http://www.gvsig.com/asociacion/miembros">members</a> &amp; <a href="http://www.gvsig.com/asociacion/colaboradores">collaborators</a> from Spain, though. We should try harder to bring people to codesprints.</li>
<li style="text-align: justify;"><strong>That kind of events are great to grow relationships and trust</strong>. Also they are great to communicate diffuse information and transfer knowledge: we had some good conversations with Joaquín del Cierro (gvSIG development manager) about the technological background of the project, how some decissions are made and the direction of the development theses days.</li>
</ul>
<h3>NavTable and NavTableForms: what we have done</h3>
<p style="text-align: justify;">In the hacking side, I&#8217;m pretty happy with the results. Most of the time, Jorge López and me paired together to resolve the priority things on NavTable and NavTableForms. Here the results:</p>
<h4>NavTable</h4>
<ul>
<li style="text-align: justify;">Flavio Pompermaier <a href="https://lists.forge.osor.eu/pipermail/navtable-devel/2011-July/000235.html">had talked us about the differences between layer.getSource().getRecordset() and layer.getRecordset()</a> methods. Roughly: the second returns the features directly from the source, which seems to reflect changes (schema modifications, add new registers, etc) in <em>real time</em>. I spent a time to reproduce the bugs he showed us but I couldn&#8217;t. The <a href="http://forge.osor.eu/plugins/wiki/index.php?RFCKeepRecordsetUpdated&amp;id=122&amp;type=g">last work on listeners</a> done by <a href="http://valdaris.es">Javier Estévez</a> and to be integrated in gvSIG 1.12 had solved it.</li>
<li style="text-align: justify;">Having some good conversations with <a href="http://nosololibresig.blogspot.com/">Nacho</a> regarding past conversations and improvements on NavTable UI. Some of the <a href="https://lists.forge.osor.eu/pipermail/navtable-devel/2011-July/000255.html">proposals</a> will appear soon on your favorite mailinglist!</li>
<li style="text-align: justify;">Having some good conversations with Joaquín on metadata and filtering in gvSIG, which resulted on:
<ul>
<li style="text-align: justify;">metadata: the better way to integrate metadata into gvSIG sources is by doing your own custom mechanism, as we already have (for example: to associate to the data domain-values or validation). There is no such a thing of a broad standard on the matter (although there are some attempts).</li>
<li style="text-align: justify;">pre-filtering from datasource (definitionExpression in other GIS applications): I had asked that in the mailinglist (and even <a href="https://lists.forge.osor.eu/pipermail/gvsig-desktop-devel/2011-May/000192.html">got a only-read solution</a>). Lately, it appeared again in gvsig-international a <a href="http://listserv.gva.es/pipermail/gvsig_internacional/2011-July/007528.html">thread talking about that</a>. The short answer: it&#8217;s not possible to do it now.</li>
</ul>
</li>
<li style="text-align: justify;"><a href="https://lists.forge.osor.eu/pipermail/navtable-devel/2011-July/000226.html">Refactoring to actions</a>. I work on this during Friday morning. It was more difficult that I thought as our codebase is very coupled at some key part, which required an aditional work to do this. What I got is an initial prototype working (uploaded to a <a href="http://forge.osor.eu/plugins/scmsvn/viewcvs.php/branches/extNavigationTable_refactoring_to_actions/?root=navtable">temporal branch on our repo</a>) only with the moving actions (go-next, go-last, go-previous, go-first). Although still a prototype I think is very promising as a base to work on.</li>
</ul>
<h4>NavTableForms</h4>
<ul>
<li style="text-align: justify;">Landing into trunk, the big rewriting done in NavTableForms. Jorge and I spent thursday morning reading code, updating the example for it to work with the new code and with integrating issues. It was easier that I thought, and we had the example working in less than 3 hours. I even write down <a href="http://forge.osor.eu/plugins/wiki/index.php?NavTableFormsMigrationGuide&amp;id=122&amp;type=g">our mini-guide to migrate the example</a>, as it could be interesting for other people.</li>
<li style="text-align: justify;">Add support for reading domain values from a text file. One of the news on NavTableForms is that it&#8217;s able to read domain values from a database (say postgress). Jorge worked to add support for textfiles in a similar way than we do for alias.</li>
<li style="text-align: justify;">Adding support for multiple validation rules. Jorge worked and integrated this very nice feature.</li>
<li style="text-align: justify;">A new validation rule: mandatory field. I commited this to repo. By the way, It&#8217;s nice to see how easy is to add a new rule.</li>
</ul>
<p style="text-align: justify;">Summing up: as you may see, they were two intense days! A lot of work done and the hacktivation energy at full again. Looking forward to next one!</p>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/gvsig-codesprint-in-a-corunha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Análisis de comunidades de Software Libre (I): resultados de un estudio sobre GRASS, gvSIG y QGIS</title>
		<link>http://nosolosoftware.com/analisis-de-comunidades-de-software-libre-i/</link>
		<comments>http://nosolosoftware.com/analisis-de-comunidades-de-software-libre-i/#comments</comments>
		<pubDate>Sat, 16 Apr 2011 15:59:01 +0000</pubDate>
		<dc:creator>Andrés</dc:creator>
				<category><![CDATA[post]]></category>
		<category><![CDATA[Español]]></category>
		<category><![CDATA[GRASS]]></category>
		<category><![CDATA[gvSIG]]></category>
		<category><![CDATA[Moleskine]]></category>
		<category><![CDATA[QGIS]]></category>
		<category><![CDATA[Sistemas de Información Geográfica]]></category>
		<category><![CDATA[Software Libre]]></category>

		<guid isPermaLink="false">http://nosolosoftware.com/?p=933</guid>
		<description><![CDATA[El primer post de una serie, que presenta los resultados de analizar cuantitativamente 3 comunidades de proyectos de software libre, de cara a comprender mejor cómo funcionan.]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">A la hora de seleccionar una aplicación se valoran habitualmente factores tecnológicos -qué nos permite hacer la aplicación- y económicos -cuánto nos cuesta lo que necesitamos. Y se nos olvida un tercer factor muy a tener en cuenta: los aspectos sociales del proyecto, la comunidad de usuarios y desarrolladores que lo mantienen vivo.</p>
<p style="text-align: justify;">A lo largo de una serie de post que inicio hoy voy a presentar un análisis de las comunidades de 3 proyectos de referencia en el mundo SIG: <a href="http://grass.fbk.eu/">GRASS</a>, <a href="http://www.gvsig.org/web/">gvSIG</a> y <a href="http://qgis.osgeo.org/">QGIS</a>. Durante el proceso de selección nos hemos quedado con estos 3 porque consideramos que son los más importantes y maduros SIG de escritorio, están además bajo el paraguas de la <a href="http://osgeo.org/">Fundación OSGEO</a> y presentan diferencias en los actores que los gestionan.</p>
<h3>¿Qué hemos hecho?</h3>
<p style="text-align: justify;">En los más de <a href="http://en.wikipedia.org/wiki/History_of_Free_Software">25 años que tiene el movimiento del software libre</a>, se ha demostrado la gran capacidad de creación que tiene un <a href="http://nosolosoftware.com/empresa-mercado-y-comunidad/">modelo centrado en la comunidad</a>. Un modelo que, además, ha mostrado su viabilidad expandiéndose a otras áreas: creación de contenidos (wikipedia), <a href="http://nosolosoftware.com/informacion-geografica-creacion-de-contenidos-en-comunidad/">creación de datos cartográficos (openstreetmaps)</a>, <a href="http://nosolosoftware.com/traduccion-de-un-libro-a-12-manos-mis-conclusiones-y-iii/">traducción de libros</a>, etc. Pero si bien conocemos su potencia, poco sabemos sobre &#8220;<em>cómo crear y gestionar una comunidad</em>&#8220;. Lo único que podemos hacer es observar qué han hecho los demás y cómo les ha ido. Probar. Tratar de extrapolar heurísticos de la experiencia de otros.</p>
<p style="text-align: justify;">Para contribruir al entendimiento de cómo funcionan las comunidades de software libre -<a href="http://conocimientoabierto.es">Francisco Puga</a>, otra gente del <a href="www.cartolab.es">Cartolab</a> y yo- hemos realizado un análisis de las comunidades en base a la información pública que generan. Los actores de una comunidad interactúan entre sí, y, cuando eso ocurre a través de internet, las interacciones dejan rastro:</p>
<ul>
<li>Listas de correo: los mensajes contienen la fecha, el autor, etc.</li>
<li>Wiki: es posible obtener información sobre el autor, la fecha de creación, el número de ediciones de una página, etc.</li>
<li>Sistemas de control de errores: información sobre quién y cuándo se reportó, si está resuelto o no, etc.</li>
<li>Sistemas de control del código: podemos obtener la actividad sobre la aplicación basándonos en el número de cambios (<em>commits</em>), conocer quién los hizo, la fecha, etc.</li>
</ul>
<p>Con la base de esta información pública disponible, lo que hemos hecho ha sido un estudio cuantitativo sobre las comunidades que rodean y sostienen a estos proyectos.</p>
<h3>¿Cómo lo hemos hecho?</h3>
<p style="text-align: justify;">Gracias a la disponibilidad de ciertas herramientas que nos facilitaron el proceso de obtención de información, además de tener en cuenta la calidad de los datos para poder hacer comparativas entre los proyectos, lo que finalmente logramos hacer fue lo siguiente:</p>
<ul style="text-align: justify;">
<li><strong>Sistemas de control de código</strong>: hemos volcado toda la información disponible al sistema de control de versiones <a href="http://git-scm.com/">git</a> para luego parsear su histórico. Esto nos ha permitido estudiar <strong>toda la historia de desarrollo de los proyectos hasta diciembre del 2010</strong>. Datos para <a href="https://svn.osgeo.org/grass/grass/trunk">grass</a> &#8211; <a href="https://svn.forge.osor.eu/svn/gvsig-desktop/trunk">gvsig</a> &#8211; <a href="https://svn.osgeo.org/qgis/trunk/qgis">qgis</a></li>
<li><strong>Listas de correo</strong>: hemos usado para ellos la herramienta <a href="http://www.flossmetrics.org/sections/tools/MailingListStats">mailingliststats</a> -que construyó principalmente <a href="http://herraiz.org/blog/index.html">Israel Herráiz</a>, <em>thanks bro!</em>- con <strong>datos desde marzo de 2008 hasta diciembre de 2010</strong>, en base a:
<ul>
<li>las listas de desarrollo del proyecto: <a href="http://lists.osgeo.org/mailman/listinfo/grass-dev/">grass</a> &#8211; <a href="http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores">gvsig</a> &#8211; <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer">qgis</a></li>
<li>las listas principales de usuarios: <a href="http://lists.osgeo.org/mailman/listinfo/grass-user">grass</a> &#8211; <a href="http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_internacional">gvsig en</a> / <a href="http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_usuarios">gvsig es</a> &#8211; <a href="http://lists.osgeo.org/mailman/listinfo/qgis-user">qgis</a></li>
</ul>
</li>
</ul>
<p style="text-align: justify;">Algunas aclaraciones sobre el estudio de las listas de correo:</p>
<ul>
<li>Los 3 proyectos tienen muchas más listas para diversos aspectos (traducciones, dirección del proyecto, listas locales, etc). Nos hemos centrado en éstas porque creemos que son suficientes para marcar la tendencia, que realmente es lo que nos interesa; no los números gordos que serían engañosos.</li>
<li>En el caso de las listas de usuarios, para gvsig hemos estudiado además de la lista internacional, también la española. Ésta última es donde nació el proyecto y muestra todavía la actividad principal. No hacerlo introduciría sesgos.</li>
<li>Por desgracia, la calidad de los datos nos ha limitado el período de estudio: hemos conseguido analizar desde Marzo de 2008 hasta diciembre del 2010.</li>
</ul>
<h3>¿Para qué nos vale?</h3>
<p>El estudio de una comunidad tiene diferentes enfoques. El nuestro se basa en el modelo que divide a la comunidad en 3 niveles de participación e implicación:</p>
<ul>
<li><em>Leaders</em>: aquellos que construyen el producto.</li>
<li><em>Power users: </em>aquellos que lo adaptan a sus necesidades y lo usan intensivamente.</li>
<li><em>Casual users</em>: aquellos que lo usan para una tarea concreta.</li>
</ul>
<p style="text-align: justify;">Esta aproximación facilita la comprensión de cómo funciona realmente la comunidad, ya que no es lo mismo la aportación de una persona a través de un único mensaje en una lista de correo a la de alguien que se ha pasado 6 meses creando la aplicación. Nos aporta además, información sobre la adopción de las herramientas así como patrones de participación y actividad entre los distintos actores.</p>
<p style="text-align: justify;"><a href="http://nosolosoftware.com/files/2011/06/ecosistema.png"><a href="http://nosolosoftware.com/files/2011/06/ecosistema.png"><img class="aligncenter size-large wp-image-1354" title="Ecosistema de una aplicación" src="http://nosolosoftware.com/files/2011/06/ecosistema-1024x527.png" alt="" width="632" height="325" /></a><br />
</a></p>
<p style="text-align: justify;">Con este enfoque y metodología hemos conseguido realizar los siguientes indicadores:</p>
<ul>
<li><strong>Tendencias de adopción entre usuarios</strong>: basado en las listas de correo.</li>
<li><strong>Tendencias de adopción entre desarrolladores</strong>: basado en las listas de correo.</li>
<li><strong>Actividad y fuerza de trabajo</strong>: basado en contribuciones de código (<em>commits</em>).</li>
<li><strong>Análisis de composición de la comunidad</strong>: basado en contribuciones de código.</li>
<li><strong>Análisis generacional</strong>: basado en contribuciones de código.</li>
</ul>
<p style="text-align: justify;">En las siguiente semanas iremos publicando los resultados del estudio, de cara a comprender mejor cómo funciona una comunidad de software libre. <em>Stay tunned!</em></p>]]></content:encoded>
			<wfw:commentRss>http://nosolosoftware.com/analisis-de-comunidades-de-software-libre-i/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

