summaryrefslogtreecommitdiff
path: root/test/test-pages/lwn-1/expected.html
diff options
context:
space:
mode:
Diffstat (limited to 'test/test-pages/lwn-1/expected.html')
-rw-r--r--test/test-pages/lwn-1/expected.html439
1 files changed, 327 insertions, 112 deletions
diff --git a/test/test-pages/lwn-1/expected.html b/test/test-pages/lwn-1/expected.html
index 358f956..2ed24ac 100644
--- a/test/test-pages/lwn-1/expected.html
+++ b/test/test-pages/lwn-1/expected.html
@@ -1,4 +1,5 @@
-<div><td>
+<div>
+ <td>
<div>
<h2><a href="http://fakehost/Articles/637755/">A trademark battle in the Arduino community</a></h2>
@@ -25,28 +26,28 @@ program</a> for third-party manufacturers interested in using the "Arduino" bran
<h2><a href="http://fakehost/Articles/637533/">Mapping and data mining with QGIS 2.8</a></h2>
<p> By <b>Nathan Willis</b>
- <br></br>March 25, 2015 </p>
+ <br>March 25, 2015 </p>
<p><a href="http://qgis.org/">QGIS</a> is a free-software geographic information system (GIS) tool; it provides a unified interface in which users can import, edit, and analyze geographic-oriented information, and it can produce output as varied as printable maps or map-based web services. The project recently made its first update to be designated a long-term release (LTR), and that release is both poised for high-end usage and friendly to newcomers alike. </p>
- <p>The new release is version 2.8, which was unveiled on March 2. An official <a href="http://qgis.org/en/site/forusers/visualchangelog28/index.html">change
+ <p>The new release is version 2.8, which was unveiled on March&nbsp;2. An official <a href="http://qgis.org/en/site/forusers/visualchangelog28/index.html">change
log</a> is available on the QGIS site, while the release itself was announced primarily through blog posts (such as <a href="http://anitagraser.com/2015/03/02/qgis-2-8-ltr-has-landed/">this
post</a> by Anita Graser of the project's steering committee). Downloads are <a href="http://qgis.org/en/site/forusers/download.html">available</a> for a variety of platforms, including packages for Ubuntu, Debian, Fedora, openSUSE, and several other distributions.</p>
- <p><a href="http://fakehost/Articles/637747/"> <img alt="[QGIS main interface]" height="264" src="http://fakehost/images/2015/03-qgis-map-sm.png" width="350"></img></a></p><p>As the name might suggest, QGIS is a Qt application; the latest release will, in fact, build on both Qt4 and Qt5, although the binaries released by the project come only in Qt4 form at present. 2.8 has been labeled a long-term release (LTR)—which, in this case, means that the project has committed to providing backported bug fixes for one full calendar year, and that the 2.8.x series is in permanent feature freeze. The goal, according to the change log, is to provide a stable version suitable for businesses and deployments in other large organizations. The change log itself points out that the development of quite a few new features was underwritten by various GIS companies or university groups, which suggests that taking care of these organizations' needs is reaping dividends for the project. </p>
+ <p><a href="http://fakehost/Articles/637747/"> <img src="http://fakehost/images/2015/03-qgis-map-sm.png" width="350" height="264" alt="[QGIS main interface]"> </a></p><p>As the name might suggest, QGIS is a Qt application; the latest release will, in fact, build on both Qt4 and Qt5, although the binaries released by the project come only in Qt4 form at present. 2.8 has been labeled a long-term release (LTR)—which, in this case, means that the project has committed to providing backported bug fixes for one full calendar year, and that the 2.8.x series is in permanent feature freeze. The goal, according to the change log, is to provide a stable version suitable for businesses and deployments in other large organizations. The change log itself points out that the development of quite a few new features was underwritten by various GIS companies or university groups, which suggests that taking care of these organizations' needs is reaping dividends for the project. </p>
<p>For those new to QGIS (or GIS in general), there is a detailed new-user <a href="http://docs.qgis.org/testing/en/docs/training_manual/">tutorial</a> that provides a thorough walk-through of the data-manipulation, mapping, and analysis functions. Being a new user, I went through the tutorial; although there are a handful of minor differences between QGIS 2.8 and the version used in the text (primarily whether specific features were accessed through a toolbar or right-click menu), on the whole it is well worth the time. </p>
<p>QGIS is designed to make short work of importing spatially oriented data sets, mining information from them, and turning the results into a meaningful visualization. Technically speaking, the visualization output is optional: one could simply extract the needed statistics and results and use them to answer some question or, perhaps, publish the massaged data set as a database for others to use. </p>
<p>But well-made maps are often the easiest way to illuminate facts about populations, political regions, geography, and many other topics when human comprehension is the goal. QGIS makes importing data from databases, web-mapping services (WMS), and even unwieldy flat-file data dumps a painless experience. It handles converting between a variety of map-referencing systems more or less automatically, and allows the user to focus on finding the useful attributes of the data sets and rendering them on screen. </p>
<h4>Here be data</h4>
<p>The significant changes in QGIS 2.8 fall into several categories. There are updates to how QGIS handles the mathematical expressions and queries users can use to filter information out of a data set, improvements to the tools used to explore the on-screen map canvas, and enhancements to the "map composer" used to produce visual output. This is on top of plenty of other under-the-hood improvements, naturally.</p>
- <p><a href="http://fakehost/Articles/637748/"> <img alt="[QGIS query builder]" height="302" src="http://fakehost/images/2015/03-qgis-query-sm.png" width="300"></img></a></p><p>In the first category are several updates to the filtering tools used to mine a data set. Generally speaking, each independent data set is added to a QGIS project as its own layer, then transformed with filters to focus in on a specific portion of the original data. For instance, the land-usage statistics for a region might be one layer, while roads and buildings for the same region from OpenStreetMap might be two additional layers. Such filters can be created in several ways: there is a "query builder" that lets the user construct and test expressions on a data layer, then save the results, an SQL console for performing similar queries on a database, and spreadsheet-like editing tools for working directly on data tables. </p>
+ <p><a href="http://fakehost/Articles/637748/"> <img src="http://fakehost/images/2015/03-qgis-query-sm.png" width="300" height="302" alt="[QGIS query builder]"> </a></p><p>In the first category are several updates to the filtering tools used to mine a data set. Generally speaking, each independent data set is added to a QGIS project as its own layer, then transformed with filters to focus in on a specific portion of the original data. For instance, the land-usage statistics for a region might be one layer, while roads and buildings for the same region from OpenStreetMap might be two additional layers. Such filters can be created in several ways: there is a "query builder" that lets the user construct and test expressions on a data layer, then save the results, an SQL console for performing similar queries on a database, and spreadsheet-like editing tools for working directly on data tables. </p>
<p>All three have been improved in this release. New are support for <tt>if(condition, true, false)</tt> conditional statements, a set of operations for geometry primitives (e.g., to test whether regions overlap or lines intersect), and an "integer divide" operation. Users can also add comments to their queries to annotate their code, and there is a new <a href="http://nathanw.net/2015/01/19/function-editor-for-qgis-expressions/">custom
function editor</a> for writing Python functions that can be called in mathematical expressions within the query builder. </p>
<p>It is also now possible to select only some rows in a table, then perform calculations just on the selection—previously, users would have to extract the rows of interest into a new table first. Similarly, in the SQL editor, the user can highlight a subset of the SQL query and execute it separately, which is no doubt helpful for debugging. </p>
<p>There have also been several improvements to the Python and Processing plugins. Users can now drag-and-drop Python scripts onto QGIS and they will be run automatically. Several new analysis algorithms are now available through the Processing interface that were previously Python-only; they include algorithms for generating grids of points or vectors within a region, splitting layers and lines, generating <a href="http://en.wikipedia.org/wiki/Hypsometric_curve">hypsometric
curves</a>, refactoring data sets, and more. </p>
<h4>Maps in, maps out</h4>
- <p><a href="http://fakehost/Articles/637749/"> <img alt="[QGIS simplify tool]" height="303" src="http://fakehost/images/2015/03-qgis-simplify-sm.png" width="300"></img></a></p><p>The process of working with on-screen map data picked up some improvements in the new release as well. Perhaps the most fundamental is that each map layer added to the canvas is now handled in its own thread, so fewer hangs in the user interface are experienced when re-rendering a layer (as happens whenever the user changes the look of points or shapes in a layer). Since remote databases can also be layers, this multi-threaded approach is more resilient against connectivity problems, too. The interface also now supports temporary "scratch" layers that can be used to merge, filter, or simply experiment with a data set, but are not saved when the current project is saved. </p>
+ <p><a href="http://fakehost/Articles/637749/"> <img src="http://fakehost/images/2015/03-qgis-simplify-sm.png" width="300" height="303" alt="[QGIS simplify tool]"> </a></p><p>The process of working with on-screen map data picked up some improvements in the new release as well. Perhaps the most fundamental is that each map layer added to the canvas is now handled in its own thread, so fewer hangs in the user interface are experienced when re-rendering a layer (as happens whenever the user changes the look of points or shapes in a layer). Since remote databases can also be layers, this multi-threaded approach is more resilient against connectivity problems, too. The interface also now supports temporary "scratch" layers that can be used to merge, filter, or simply experiment with a data set, but are not saved when the current project is saved. </p>
<p>For working on the canvas itself, polygonal regions can now use raster images (tiled, if necessary) as fill colors, the map itself can be rotated arbitrarily, and objects can be "snapped" to align with items on any layer (not just the current layer). For working with raster image layers (e.g., aerial photographs) or simply creating new geometric shapes by hand, there is a new digitizing tool that can offer assistance by locking lines to specific angles, automatically keeping borders parallel, and other niceties. </p>
<p>There is a completely overhauled "simplify" tool that is used to reduce the number of extraneous vertices of a vector layer (thus reducing its size). The old simplify tool provided only a relative "tolerance" setting that did not correspond directly to any units. With the new tool, users can set a simplification threshold in terms of the underlying map units, layer-specific units, pixels, and more—and, in addition, the tool reports how much the simplify operation has reduced the size of the data.</p>
- <p><a href="http://fakehost/Articles/637751/"> <img alt="[QGIS style editing]" height="286" src="http://fakehost/images/2015/03-qgis-style-sm.png" width="300"></img></a></p><p>There has also been an effort to present a uniform interface to one of the most important features of the map canvas: the ability to change the symbology used for an item based on some data attribute. The simplest example might be to change the line color of a road based on whether its road-type attribute is "highway," "service road," "residential," or so on. But the same feature is used to automatically highlight layer information based on the filtering and querying functionality discussed above. The new release allows many more map attributes to be controlled by these "data definition" settings, and provides a hard-to-miss button next to each attribute, through which a custom data definition can be set. </p>
+ <p><a href="http://fakehost/Articles/637751/"> <img src="http://fakehost/images/2015/03-qgis-style-sm.png" width="300" height="286" alt="[QGIS style editing]"> </a></p><p>There has also been an effort to present a uniform interface to one of the most important features of the map canvas: the ability to change the symbology used for an item based on some data attribute. The simplest example might be to change the line color of a road based on whether its road-type attribute is "highway," "service road," "residential," or so on. But the same feature is used to automatically highlight layer information based on the filtering and querying functionality discussed above. The new release allows many more map attributes to be controlled by these "data definition" settings, and provides a hard-to-miss button next to each attribute, through which a custom data definition can be set. </p>
<p>QGIS's composer module is the tool used to take project data and generate a map that can be used outside of the application (in print, as a static image, or as a layer for <a href="http://mapserver.org/">MapServer</a> or some other software tool, for example). Consequently, it is not a simple select-and-click-export tool; composing the output can involve a lot of choices about which data to make visible, how (and where) to label it, and how to make it generally accessible. </p>
<p>The updated composer in 2.8 now has a full-screen mode and sports several new options for configuring output. For instance, the user now has full control over how map axes are labeled. In previous releases, the grid coordinates of the map could be turned on or off, but the only options were all or nothing. Now, the user can individually choose whether coordinates are displayed on all four sides, and can even choose in which direction vertical text labels will run (so that they can be correctly justified to the edge of the map, for example). </p>
<p>There are, as usual, many more changes than there is room to discuss. Some particularly noteworthy improvements include the ability to save and load bookmarks for frequently used data sources (perhaps most useful for databases, web services, and other non-local data) and improvements to QGIS's server module. This module allows one QGIS instance to serve up data accessible to other QGIS applications (for example, to simply team projects). The server can now be extended with Python plugins and the data layers that it serves can be styled with style rules like those used in the desktop interface. </p>
@@ -55,7 +56,7 @@ curves</a>, refactoring data sets, and more. </p>
<h2><a href="http://fakehost/Articles/637735/">Development activity in LibreOffice and OpenOffice</a></h2>
<p> By <b>Jonathan Corbet</b>
- <br></br>March 25, 2015 </p><p> The LibreOffice project was <a href="http://fakehost/Articles/407383/">announced</a> with great fanfare in September 2010. Nearly one year later, the OpenOffice.org project (from which LibreOffice was forked) <a href="http://fakehost/Articles/446093/">was
+ <br>March 25, 2015 </p><p> The LibreOffice project was <a href="http://fakehost/Articles/407383/">announced</a> with great fanfare in September 2010. Nearly one year later, the OpenOffice.org project (from which LibreOffice was forked) <a href="http://fakehost/Articles/446093/">was
cut loose from Oracle</a> and found a new home as an Apache project. It is fair to say that the rivalry between the two projects in the time since then has been strong. Predictions that one project or the other would fail have not been borne out, but that does not mean that the two projects are equally successful. A look at the two projects' development communities reveals some interesting differences.
</p>
<h4>Release histories</h4>
@@ -63,286 +64,499 @@ cut loose from Oracle</a> and found a new home as an Apache project. It is fair
<p> The release history for LibreOffice tells a slightly different story: </p>
<blockquote>
- </blockquote>
+
+ </blockquote>
<p> It seems clear that LibreOffice has maintained a rather more frenetic release cadence, generally putting out at least one release per month. The project typically keeps at least two major versions alive at any one time. Most of the releases are of the minor, bug-fix variety, but there have been two major releases in the last year as well. </p>
<h4>Development statistics</h4>
<p> In the one-year period since late March 2014, there have been 381 changesets committed to the OpenOffice Subversion repository. The most active committers are: </p>
<blockquote>
- <table readabilityDataTable="1"><tbody><tr><th colspan="2">Most active OpenOffice developers</th>
- </tr><tr><td>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">By changesets</th>
- </tr><tr><td>Herbert Dürr</td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="2">Most active OpenOffice developers</th>
+ </tr>
+ <tr>
+ <td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">By changesets</th>
+ </tr>
+ <tr>
+ <td>Herbert Dürr</td>
<td>63</td>
<td>16.6%</td>
- </tr><tr><td>Jürgen Schmidt             </td>
+ </tr>
+ <tr>
+ <td>Jürgen&nbsp;Schmidt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>56</td>
<td>14.7%</td>
- </tr><tr><td>Armin Le Grand</td>
+ </tr>
+ <tr>
+ <td>Armin Le Grand</td>
<td>56</td>
<td>14.7%</td>
- </tr><tr><td>Oliver-Rainer Wittmann</td>
+ </tr>
+ <tr>
+ <td>Oliver-Rainer&nbsp;Wittmann</td>
<td>46</td>
<td>12.1%</td>
- </tr><tr><td>Tsutomu Uchino</td>
+ </tr>
+ <tr>
+ <td>Tsutomu Uchino</td>
<td>33</td>
<td>8.7%</td>
- </tr><tr><td>Kay Schenk</td>
+ </tr>
+ <tr>
+ <td>Kay Schenk</td>
<td>27</td>
<td>7.1%</td>
- </tr><tr><td>Pedro Giffuni</td>
+ </tr>
+ <tr>
+ <td>Pedro Giffuni</td>
<td>23</td>
<td>6.1%</td>
- </tr><tr><td>Ariel Constenla-Haile</td>
+ </tr>
+ <tr>
+ <td>Ariel Constenla-Haile</td>
<td>22</td>
<td>5.8%</td>
- </tr><tr><td>Andrea Pescetti</td>
+ </tr>
+ <tr>
+ <td>Andrea Pescetti</td>
<td>14</td>
<td>3.7%</td>
- </tr><tr><td>Steve Yin</td>
+ </tr>
+ <tr>
+ <td>Steve Yin</td>
<td>11</td>
<td>2.9%</td>
- </tr><tr><td>Andre Fischer</td>
+ </tr>
+ <tr>
+ <td>Andre Fischer</td>
<td>10</td>
<td>2.6%</td>
- </tr><tr><td>Yuri Dario</td>
+ </tr>
+ <tr>
+ <td>Yuri Dario</td>
<td>7</td>
<td>1.8%</td>
- </tr><tr><td>Regina Henschel</td>
+ </tr>
+ <tr>
+ <td>Regina Henschel</td>
<td>6</td>
<td>1.6%</td>
- </tr><tr><td>Juan C. Sanz</td>
+ </tr>
+ <tr>
+ <td>Juan C. Sanz</td>
<td>2</td>
<td>0.5%</td>
- </tr><tr><td>Clarence Guo</td>
+ </tr>
+ <tr>
+ <td>Clarence Guo</td>
<td>2</td>
<td>0.5%</td>
- </tr><tr><td>Tal Daniel</td>
+ </tr>
+ <tr>
+ <td>Tal Daniel</td>
<td>2</td>
<td>0.5%</td>
- </tr></tbody></table></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
<td>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">By changed lines</th>
- </tr><tr><td>Jürgen Schmidt             </td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">By changed lines</th>
+ </tr>
+ <tr>
+ <td>Jürgen&nbsp;Schmidt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td>455499</td>
<td>88.1%</td>
- </tr><tr><td>Andre Fischer</td>
+ </tr>
+ <tr>
+ <td>Andre Fischer</td>
<td>26148</td>
<td>3.8%</td>
- </tr><tr><td>Pedro Giffuni</td>
+ </tr>
+ <tr>
+ <td>Pedro Giffuni</td>
<td>23183</td>
<td>3.4%</td>
- </tr><tr><td>Armin Le Grand</td>
+ </tr>
+ <tr>
+ <td>Armin Le Grand</td>
<td>11018</td>
<td>1.6%</td>
- </tr><tr><td>Juan C. Sanz</td>
+ </tr>
+ <tr>
+ <td>Juan C. Sanz</td>
<td>4582</td>
<td>0.7%</td>
- </tr><tr><td>Oliver-Rainer Wittmann</td>
+ </tr>
+ <tr>
+ <td>Oliver-Rainer Wittmann</td>
<td>4309</td>
<td>0.6%</td>
- </tr><tr><td>Andrea Pescetti</td>
+ </tr>
+ <tr>
+ <td>Andrea Pescetti</td>
<td>3908</td>
<td>0.6%</td>
- </tr><tr><td>Herbert Dürr</td>
+ </tr>
+ <tr>
+ <td>Herbert Dürr</td>
<td>2811</td>
<td>0.4%</td>
- </tr><tr><td>Tsutomu Uchino</td>
+ </tr>
+ <tr>
+ <td>Tsutomu Uchino</td>
<td>1991</td>
<td>0.3%</td>
- </tr><tr><td>Ariel Constenla-Haile</td>
+ </tr>
+ <tr>
+ <td>Ariel Constenla-Haile</td>
<td>1258</td>
<td>0.2%</td>
- </tr><tr><td>Steve Yin</td>
+ </tr>
+ <tr>
+ <td>Steve Yin</td>
<td>1010</td>
<td>0.1%</td>
- </tr><tr><td>Kay Schenk</td>
+ </tr>
+ <tr>
+ <td>Kay Schenk</td>
<td>616</td>
<td>0.1%</td>
- </tr><tr><td>Regina Henschel</td>
+ </tr>
+ <tr>
+ <td>Regina Henschel</td>
<td>417</td>
<td>0.1%</td>
- </tr><tr><td>Yuri Dario</td>
+ </tr>
+ <tr>
+ <td>Yuri Dario</td>
<td>268</td>
<td>0.0%</td>
- </tr><tr><td>tal</td>
+ </tr>
+ <tr>
+ <td>tal</td>
<td>16</td>
<td>0.0%</td>
- </tr><tr><td>Clarence Guo</td>
+ </tr>
+ <tr>
+ <td>Clarence Guo</td>
<td>11</td>
<td>0.0%</td>
- </tr></tbody></table></td>
- </tr></tbody></table></blockquote>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </blockquote>
<p> In truth, the above list is not just the most active OpenOffice developers — it is all of them; a total of 16 developers have committed changes to OpenOffice in the last year. Those developers changed 528,000 lines of code, but, as can be seen above, Jürgen Schmidt accounted for the bulk of those changes, which were mostly updates to translation files. </p>
<p> The top four developers in the "by changesets" column all work for IBM, so IBM is responsible for a minimum of about 60% of the changes to OpenOffice in the last year. </p>
<p> The picture for LibreOffice is just a little bit different; in the same one-year period, the project has committed 22,134 changesets from 268 developers. The most active of these developers were: </p>
<blockquote>
- <table readabilityDataTable="1"><tbody><tr><th colspan="2">Most active LibreOffice developers</th>
- </tr><tr><td>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">By changesets</th>
- </tr><tr><td>Caolán McNamara</td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="2">Most active LibreOffice developers</th>
+ </tr>
+ <tr>
+ <td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">By changesets</th>
+ </tr>
+ <tr>
+ <td>Caolán McNamara</td>
<td>4307</td>
<td>19.5%</td>
- </tr><tr><td>Stephan Bergmann</td>
+ </tr>
+ <tr>
+ <td>Stephan Bergmann</td>
<td>2351</td>
<td>10.6%</td>
- </tr><tr><td>Miklos Vajna</td>
+ </tr>
+ <tr>
+ <td>Miklos Vajna</td>
<td>1449</td>
<td>6.5%</td>
- </tr><tr><td>Tor Lillqvist</td>
+ </tr>
+ <tr>
+ <td>Tor Lillqvist</td>
<td>1159</td>
<td>5.2%</td>
- </tr><tr><td>Noel Grandin</td>
+ </tr>
+ <tr>
+ <td>Noel Grandin</td>
<td>1064</td>
<td>4.8%</td>
- </tr><tr><td>Markus Mohrhard</td>
+ </tr>
+ <tr>
+ <td>Markus Mohrhard</td>
<td>935</td>
<td>4.2%</td>
- </tr><tr><td>Michael Stahl</td>
+ </tr>
+ <tr>
+ <td>Michael Stahl</td>
<td>915</td>
<td>4.1%</td>
- </tr><tr><td>Kohei Yoshida</td>
+ </tr>
+ <tr>
+ <td>Kohei Yoshida</td>
<td>755</td>
<td>3.4%</td>
- </tr><tr><td>Tomaž Vajngerl</td>
+ </tr>
+ <tr>
+ <td>Tomaž Vajngerl</td>
<td>658</td>
<td>3.0%</td>
- </tr><tr><td>Thomas Arnhold</td>
+ </tr>
+ <tr>
+ <td>Thomas Arnhold</td>
<td>619</td>
<td>2.8%</td>
- </tr><tr><td>Jan Holesovsky</td>
+ </tr>
+ <tr>
+ <td>Jan Holesovsky</td>
<td>466</td>
<td>2.1%</td>
- </tr><tr><td>Eike Rathke</td>
+ </tr>
+ <tr>
+ <td>Eike Rathke</td>
<td>457</td>
<td>2.1%</td>
- </tr><tr><td>Matteo Casalin</td>
+ </tr>
+ <tr>
+ <td>Matteo Casalin</td>
<td>442</td>
<td>2.0%</td>
- </tr><tr><td>Bjoern Michaelsen</td>
+ </tr>
+ <tr>
+ <td>Bjoern Michaelsen</td>
<td>421</td>
<td>1.9%</td>
- </tr><tr><td>Chris Sherlock</td>
+ </tr>
+ <tr>
+ <td>Chris Sherlock</td>
<td>396</td>
<td>1.8%</td>
- </tr><tr><td>David Tardon</td>
+ </tr>
+ <tr>
+ <td>David Tardon</td>
<td>386</td>
<td>1.7%</td>
- </tr><tr><td>Julien Nabet</td>
+ </tr>
+ <tr>
+ <td>Julien Nabet</td>
<td>362</td>
<td>1.6%</td>
- </tr><tr><td>Zolnai Tamás</td>
+ </tr>
+ <tr>
+ <td>Zolnai Tamás</td>
<td>338</td>
<td>1.5%</td>
- </tr><tr><td>Matúš Kukan</td>
+ </tr>
+ <tr>
+ <td>Matúš Kukan</td>
<td>256</td>
<td>1.2%</td>
- </tr><tr><td>Robert Antoni Buj Gelonch</td>
+ </tr>
+ <tr>
+ <td>Robert&nbsp;Antoni&nbsp;Buj&nbsp;Gelonch</td>
<td>231</td>
<td>1.0%</td>
- </tr></tbody></table></td>
+ </tr>
+ </tbody>
+ </table>
+ </td>
<td>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">By changed lines</th>
- </tr><tr><td>Lionel Elie Mamane</td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">By changed lines</th>
+ </tr>
+ <tr>
+ <td>Lionel Elie Mamane</td>
<td>244062</td>
<td>12.5%</td>
- </tr><tr><td>Noel Grandin</td>
+ </tr>
+ <tr>
+ <td>Noel Grandin</td>
<td>238711</td>
<td>12.2%</td>
- </tr><tr><td>Stephan Bergmann</td>
+ </tr>
+ <tr>
+ <td>Stephan Bergmann</td>
<td>161220</td>
<td>8.3%</td>
- </tr><tr><td>Miklos Vajna</td>
+ </tr>
+ <tr>
+ <td>Miklos Vajna</td>
<td>129325</td>
<td>6.6%</td>
- </tr><tr><td>Caolán McNamara</td>
+ </tr>
+ <tr>
+ <td>Caolán McNamara</td>
<td>97544</td>
<td>5.0%</td>
- </tr><tr><td>Tomaž Vajngerl</td>
+ </tr>
+ <tr>
+ <td>Tomaž Vajngerl</td>
<td>69404</td>
<td>3.6%</td>
- </tr><tr><td>Tor Lillqvist</td>
+ </tr>
+ <tr>
+ <td>Tor Lillqvist</td>
<td>59498</td>
<td>3.1%</td>
- </tr><tr><td>Laurent Balland-Poirier</td>
+ </tr>
+ <tr>
+ <td>Laurent Balland-Poirier</td>
<td>52802</td>
<td>2.7%</td>
- </tr><tr><td>Markus Mohrhard</td>
+ </tr>
+ <tr>
+ <td>Markus Mohrhard</td>
<td>50509</td>
<td>2.6%</td>
- </tr><tr><td>Kohei Yoshida</td>
+ </tr>
+ <tr>
+ <td>Kohei Yoshida</td>
<td>45514</td>
<td>2.3%</td>
- </tr><tr><td>Chris Sherlock</td>
+ </tr>
+ <tr>
+ <td>Chris Sherlock</td>
<td>36788</td>
<td>1.9%</td>
- </tr><tr><td>Peter Foley</td>
+ </tr>
+ <tr>
+ <td>Peter Foley</td>
<td>34305</td>
<td>1.8%</td>
- </tr><tr><td>Christian Lohmaier</td>
+ </tr>
+ <tr>
+ <td>Christian Lohmaier</td>
<td>33787</td>
<td>1.7%</td>
- </tr><tr><td>Thomas Arnhold</td>
+ </tr>
+ <tr>
+ <td>Thomas Arnhold</td>
<td>32722</td>
<td>1.7%</td>
- </tr><tr><td>David Tardon</td>
+ </tr>
+ <tr>
+ <td>David Tardon</td>
<td>21681</td>
<td>1.1%</td>
- </tr><tr><td>David Ostrovsky</td>
+ </tr>
+ <tr>
+ <td>David Ostrovsky</td>
<td>21620</td>
<td>1.1%</td>
- </tr><tr><td>Jan Holesovsky</td>
+ </tr>
+ <tr>
+ <td>Jan Holesovsky</td>
<td>20792</td>
<td>1.1%</td>
- </tr><tr><td>Valentin Kettner</td>
+ </tr>
+ <tr>
+ <td>Valentin Kettner</td>
<td>20526</td>
<td>1.1%</td>
- </tr><tr><td>Robert Antoni Buj Gelonch</td>
+ </tr>
+ <tr>
+ <td>Robert&nbsp;Antoni&nbsp;Buj&nbsp;Gelonch</td>
<td>20447</td>
<td>1.0%</td>
- </tr><tr><td>Michael Stahl</td>
+ </tr>
+ <tr>
+ <td>Michael Stahl</td>
<td>18216</td>
<td>0.9%</td>
- </tr></tbody></table></td>
- </tr></tbody></table></blockquote>
+ </tr>
+ </tbody>
+ </table>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ </blockquote>
<p> To a first approximation, the top ten companies supporting LibreOffice in the last year are: </p>
<blockquote>
- <table readabilityDataTable="1"><tbody><tr><th colspan="3">Companies supporting LibreOffice development</th>
- </tr><tr><th colspan="3">(by changesets)</th>
- </tr><tr><td>Red Hat</td>
+ <table readabilityDataTable="1">
+ <tbody>
+ <tr>
+ <th colspan="3">Companies supporting LibreOffice development</th>
+ </tr>
+ <tr>
+ <th colspan="3">(by changesets)</th>
+ </tr>
+ <tr>
+ <td>Red Hat</td>
<td>8417</td>
<td>38.0%</td>
- </tr><tr><td>Collabora <strike>Multimedia</strike></td>
+ </tr>
+ <tr>
+ <td>Collabora <strike>Multimedia</strike></td>
<td>6531</td>
<td>29.5%</td>
- </tr><tr><td>(Unknown)</td>
+ </tr>
+ <tr>
+ <td>(Unknown)</td>
<td>5126</td>
<td>23.2%</td>
- </tr><tr><td>(None)</td>
+ </tr>
+ <tr>
+ <td>(None)</td>
<td>1490</td>
<td>6.7%</td>
- </tr><tr><td>Canonical</td>
+ </tr>
+ <tr>
+ <td>Canonical</td>
<td>422</td>
<td>1.9%</td>
- </tr><tr><td>Igalia S.L.</td>
+ </tr>
+ <tr>
+ <td>Igalia S.L.</td>
<td>80</td>
<td>0.4%</td>
- </tr><tr><td>Ericsson</td>
+ </tr>
+ <tr>
+ <td>Ericsson</td>
<td>21</td>
<td>0.1%</td>
- </tr><tr><td>Yandex</td>
+ </tr>
+ <tr>
+ <td>Yandex</td>
<td>18</td>
<td>0.1%</td>
- </tr><tr><td>FastMail.FM</td>
+ </tr>
+ <tr>
+ <td>FastMail.FM</td>
<td>17</td>
<td>0.1%</td>
- </tr><tr><td>SUSE</td>
+ </tr>
+ <tr>
+ <td>SUSE</td>
<td>7</td>
<td>0.0%</td>
- </tr></tbody></table></blockquote>
+ </tr>
+ </tbody>
+ </table>
+ </blockquote>
<p> Development work on LibreOffice is thus concentrated in a small number of companies, though it is rather more spread out than OpenOffice development. It is worth noting that the LibreOffice developers with unknown affiliation, who contributed 23% of the changes, make up 82% of the developer base, so there would appear to be a substantial community of developers contributing from outside the above-listed companies. </p>
<h4>Some conclusions</h4>
@@ -355,15 +569,16 @@ bark but the caravan moves on.</span>" That may be true, but, in this case, the
<p><a href="http://fakehost/Articles/637735/#Comments">Comments (74 posted)</a> </p>
<p> <b>Page editor</b>: Jonathan Corbet
- <br></br></p>
+ <br> </p>
<h2>Inside this week's LWN.net Weekly Edition</h2>
- <ul><li> <a href="http://fakehost/Articles/637395/">Security</a>: Toward secure package downloads; New vulnerabilities in drupal, mozilla, openssl, python-django ... </li>
+ <ul>
+ <li> <a href="http://fakehost/Articles/637395/">Security</a>: Toward secure package downloads; New vulnerabilities in drupal, mozilla, openssl, python-django ... </li>
<li> <a href="http://fakehost/Articles/637396/">Kernel</a>: LSFMM coverage: NFS, defragmentation, epoll(), copy offload, and more. </li>
<li> <a href="http://fakehost/Articles/637397/">Distributions</a>: A look at Debian's 2015 DPL candidates; Debian, Fedora, ... </li>
<li> <a href="http://fakehost/Articles/637398/">Development</a>: A look at GlusterFS; LibreOffice Online; Open sourcing existing code; Secure Boot in Windows 10; ... </li>
<li> <a href="http://fakehost/Articles/637399/">Announcements</a>: A Turing award for Michael Stonebraker, Sébastien Jodogne, ReGlue are Free Software Award winners, Kat Walsh joins FSF board of directors, Cyanogen, ... </li>
- </ul><p><b>Next page</b>: <a href="http://fakehost/Articles/637395/">Security&gt;&gt;</a>
- <br></br></p></div>
+ </ul> <p><b>Next page</b>: <a href="http://fakehost/Articles/637395/">Security&gt;&gt;</a>
+ <br> </p></div>
</td>