summaryrefslogtreecommitdiff
path: root/test/test-pages/lwn-1/expected.html
diff options
context:
space:
mode:
authorAndres Rey <[email protected]>2017-11-12 20:00:07 +0000
committerAndres Rey <[email protected]>2017-11-12 20:00:07 +0000
commit13f5628ae15e1fb43e457a8fd5161ad70ac7ffc1 (patch)
treee5b0efbc9edcb1524da65e2edfc4407df3594a84 /test/test-pages/lwn-1/expected.html
parent0dac0772bbb1e723557d9eca5c793d502a2b2e6e (diff)
Update test cases for new table properties cleaning
Diffstat (limited to 'test/test-pages/lwn-1/expected.html')
-rw-r--r--test/test-pages/lwn-1/expected.html356
1 files changed, 178 insertions, 178 deletions
diff --git a/test/test-pages/lwn-1/expected.html b/test/test-pages/lwn-1/expected.html
index 15ec81b..5818ba2 100644
--- a/test/test-pages/lwn-1/expected.html
+++ b/test/test-pages/lwn-1/expected.html
@@ -30,14 +30,14 @@ program</a> for third-party manufacturers interested in using the "Arduino" bran
<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
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>
- <a href="http://fakehost/Articles/637747/"> <img align="right" alt="[QGIS main interface]" border="0" height="264" hspace="5" src="http://fakehost/images/2015/03-qgis-map-sm.png" width="350"></img></a>
+ <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>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>
- <a href="http://fakehost/Articles/637748/"> <img align="left" alt="[QGIS query builder]" border="0" height="302" hspace="5" src="http://fakehost/images/2015/03-qgis-query-sm.png" width="300"></img></a>
+ <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>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>
@@ -45,11 +45,11 @@ function editor</a> for writing Python functions that can be called in mathemati
<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>
- <a href="http://fakehost/Articles/637749/"> <img align="right" alt="[QGIS simplify tool]" border="0" height="303" hspace="5" src="http://fakehost/images/2015/03-qgis-simplify-sm.png" width="300"></img></a>
+ <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>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>
- <a href="http://fakehost/Articles/637751/"> <img align="left" alt="[QGIS style editing]" border="0" height="286" hspace="5" src="http://fakehost/images/2015/03-qgis-style-sm.png" width="300"></img></a>
+ <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>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>
@@ -74,108 +74,108 @@ cut loose from Oracle</a><p> and found a new home as an Apache project. It is fa
<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><tbody><tr><th align="center" colspan="2">Most active OpenOffice developers</th>
- </tr><tr><td valign="top" width="50%">
- <table cellspacing="3"><tbody><tr><th colspan="3">By changesets</th>
+ <table><tbody><tr><th colspan="2">Most active OpenOffice developers</th>
+ </tr><tr><td>
+ <table><tbody><tr><th colspan="3">By changesets</th>
</tr><tr class="Even"><td>Herbert Dürr</td>
- <td align="right">63</td>
- <td align="right">16.6%</td>
+ <td>63</td>
+ <td>16.6%</td>
</tr><tr class="Odd"><td>Jürgen Schmidt             </td>
- <td align="right">56</td>
- <td align="right">14.7%</td>
+ <td>56</td>
+ <td>14.7%</td>
</tr><tr class="Even"><td>Armin Le Grand</td>
- <td align="right">56</td>
- <td align="right">14.7%</td>
+ <td>56</td>
+ <td>14.7%</td>
</tr><tr class="Odd"><td>Oliver-Rainer Wittmann</td>
- <td align="right">46</td>
- <td align="right">12.1%</td>
+ <td>46</td>
+ <td>12.1%</td>
</tr><tr class="Even"><td>Tsutomu Uchino</td>
- <td align="right">33</td>
- <td align="right">8.7%</td>
+ <td>33</td>
+ <td>8.7%</td>
</tr><tr class="Odd"><td>Kay Schenk</td>
- <td align="right">27</td>
- <td align="right">7.1%</td>
+ <td>27</td>
+ <td>7.1%</td>
</tr><tr class="Even"><td>Pedro Giffuni</td>
- <td align="right">23</td>
- <td align="right">6.1%</td>
+ <td>23</td>
+ <td>6.1%</td>
</tr><tr class="Odd"><td>Ariel Constenla-Haile</td>
- <td align="right">22</td>
- <td align="right">5.8%</td>
+ <td>22</td>
+ <td>5.8%</td>
</tr><tr class="Even"><td>Andrea Pescetti</td>
- <td align="right">14</td>
- <td align="right">3.7%</td>
+ <td>14</td>
+ <td>3.7%</td>
</tr><tr class="Odd"><td>Steve Yin</td>
- <td align="right">11</td>
- <td align="right">2.9%</td>
+ <td>11</td>
+ <td>2.9%</td>
</tr><tr class="Even"><td>Andre Fischer</td>
- <td align="right">10</td>
- <td align="right">2.6%</td>
+ <td>10</td>
+ <td>2.6%</td>
</tr><tr class="Odd"><td>Yuri Dario</td>
- <td align="right">7</td>
- <td align="right">1.8%</td>
+ <td>7</td>
+ <td>1.8%</td>
</tr><tr class="Even"><td>Regina Henschel</td>
- <td align="right">6</td>
- <td align="right">1.6%</td>
+ <td>6</td>
+ <td>1.6%</td>
</tr><tr class="Odd"><td>Juan C. Sanz</td>
- <td align="right">2</td>
- <td align="right">0.5%</td>
+ <td>2</td>
+ <td>0.5%</td>
</tr><tr class="Even"><td>Clarence Guo</td>
- <td align="right">2</td>
- <td align="right">0.5%</td>
+ <td>2</td>
+ <td>0.5%</td>
</tr><tr class="Odd"><td>Tal Daniel</td>
- <td align="right">2</td>
- <td align="right">0.5%</td>
+ <td>2</td>
+ <td>0.5%</td>
</tr></tbody></table></td>
- <td valign="top" width="50%">
- <table cellspacing="3"><tbody><tr><th colspan="3">By changed lines</th>
+ <td>
+ <table><tbody><tr><th colspan="3">By changed lines</th>
</tr><tr class="Even"><td>Jürgen Schmidt             </td>
- <td align="right">455499</td>
- <td align="right">88.1%</td>
+ <td>455499</td>
+ <td>88.1%</td>
</tr><tr class="Odd"><td>Andre Fischer</td>
- <td align="right">26148</td>
- <td align="right">3.8%</td>
+ <td>26148</td>
+ <td>3.8%</td>
</tr><tr class="Even"><td>Pedro Giffuni</td>
- <td align="right">23183</td>
- <td align="right">3.4%</td>
+ <td>23183</td>
+ <td>3.4%</td>
</tr><tr class="Odd"><td>Armin Le Grand</td>
- <td align="right">11018</td>
- <td align="right">1.6%</td>
+ <td>11018</td>
+ <td>1.6%</td>
</tr><tr class="Even"><td>Juan C. Sanz</td>
- <td align="right">4582</td>
- <td align="right">0.7%</td>
+ <td>4582</td>
+ <td>0.7%</td>
</tr><tr class="Odd"><td>Oliver-Rainer Wittmann</td>
- <td align="right">4309</td>
- <td align="right">0.6%</td>
+ <td>4309</td>
+ <td>0.6%</td>
</tr><tr class="Even"><td>Andrea Pescetti</td>
- <td align="right">3908</td>
- <td align="right">0.6%</td>
+ <td>3908</td>
+ <td>0.6%</td>
</tr><tr class="Odd"><td>Herbert Dürr</td>
- <td align="right">2811</td>
- <td align="right">0.4%</td>
+ <td>2811</td>
+ <td>0.4%</td>
</tr><tr class="Even"><td>Tsutomu Uchino</td>
- <td align="right">1991</td>
- <td align="right">0.3%</td>
+ <td>1991</td>
+ <td>0.3%</td>
</tr><tr class="Odd"><td>Ariel Constenla-Haile</td>
- <td align="right">1258</td>
- <td align="right">0.2%</td>
+ <td>1258</td>
+ <td>0.2%</td>
</tr><tr class="Even"><td>Steve Yin</td>
- <td align="right">1010</td>
- <td align="right">0.1%</td>
+ <td>1010</td>
+ <td>0.1%</td>
</tr><tr class="Odd"><td>Kay Schenk</td>
- <td align="right">616</td>
- <td align="right">0.1%</td>
+ <td>616</td>
+ <td>0.1%</td>
</tr><tr class="Even"><td>Regina Henschel</td>
- <td align="right">417</td>
- <td align="right">0.1%</td>
+ <td>417</td>
+ <td>0.1%</td>
</tr><tr class="Odd"><td>Yuri Dario</td>
- <td align="right">268</td>
- <td align="right">0.0%</td>
+ <td>268</td>
+ <td>0.0%</td>
</tr><tr class="Even"><td>tal</td>
- <td align="right">16</td>
- <td align="right">0.0%</td>
+ <td>16</td>
+ <td>0.0%</td>
</tr><tr class="Odd"><td>Clarence Guo</td>
- <td align="right">11</td>
- <td align="right">0.0%</td>
+ <td>11</td>
+ <td>0.0%</td>
</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>
@@ -183,132 +183,132 @@ cut loose from Oracle</a><p> and found a new home as an Apache project. It is fa
<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><tbody><tr><th align="center" colspan="2">Most active LibreOffice developers</th>
- </tr><tr><td valign="top" width="50%">
- <table cellspacing="3"><tbody><tr><th colspan="3">By changesets</th>
+ <table><tbody><tr><th colspan="2">Most active LibreOffice developers</th>
+ </tr><tr><td>
+ <table><tbody><tr><th colspan="3">By changesets</th>
</tr><tr class="Even"><td>Caolán McNamara</td>
- <td align="right">4307</td>
- <td align="right">19.5%</td>
+ <td>4307</td>
+ <td>19.5%</td>
</tr><tr class="Odd"><td>Stephan Bergmann</td>
- <td align="right">2351</td>
- <td align="right">10.6%</td>
+ <td>2351</td>
+ <td>10.6%</td>
</tr><tr class="Even"><td>Miklos Vajna</td>
- <td align="right">1449</td>
- <td align="right">6.5%</td>
+ <td>1449</td>
+ <td>6.5%</td>
</tr><tr class="Odd"><td>Tor Lillqvist</td>
- <td align="right">1159</td>
- <td align="right">5.2%</td>
+ <td>1159</td>
+ <td>5.2%</td>
</tr><tr class="Even"><td>Noel Grandin</td>
- <td align="right">1064</td>
- <td align="right">4.8%</td>
+ <td>1064</td>
+ <td>4.8%</td>
</tr><tr class="Odd"><td>Markus Mohrhard</td>
- <td align="right">935</td>
- <td align="right">4.2%</td>
+ <td>935</td>
+ <td>4.2%</td>
</tr><tr class="Even"><td>Michael Stahl</td>
- <td align="right">915</td>
- <td align="right">4.1%</td>
+ <td>915</td>
+ <td>4.1%</td>
</tr><tr class="Odd"><td>Kohei Yoshida</td>
- <td align="right">755</td>
- <td align="right">3.4%</td>
+ <td>755</td>
+ <td>3.4%</td>
</tr><tr class="Even"><td>Tomaž Vajngerl</td>
- <td align="right">658</td>
- <td align="right">3.0%</td>
+ <td>658</td>
+ <td>3.0%</td>
</tr><tr class="Odd"><td>Thomas Arnhold</td>
- <td align="right">619</td>
- <td align="right">2.8%</td>
+ <td>619</td>
+ <td>2.8%</td>
</tr><tr class="Even"><td>Jan Holesovsky</td>
- <td align="right">466</td>
- <td align="right">2.1%</td>
+ <td>466</td>
+ <td>2.1%</td>
</tr><tr class="Odd"><td>Eike Rathke</td>
- <td align="right">457</td>
- <td align="right">2.1%</td>
+ <td>457</td>
+ <td>2.1%</td>
</tr><tr class="Even"><td>Matteo Casalin</td>
- <td align="right">442</td>
- <td align="right">2.0%</td>
+ <td>442</td>
+ <td>2.0%</td>
</tr><tr class="Odd"><td>Bjoern Michaelsen</td>
- <td align="right">421</td>
- <td align="right">1.9%</td>
+ <td>421</td>
+ <td>1.9%</td>
</tr><tr class="Even"><td>Chris Sherlock</td>
- <td align="right">396</td>
- <td align="right">1.8%</td>
+ <td>396</td>
+ <td>1.8%</td>
</tr><tr class="Odd"><td>David Tardon</td>
- <td align="right">386</td>
- <td align="right">1.7%</td>
+ <td>386</td>
+ <td>1.7%</td>
</tr><tr class="Even"><td>Julien Nabet</td>
- <td align="right">362</td>
- <td align="right">1.6%</td>
+ <td>362</td>
+ <td>1.6%</td>
</tr><tr class="Odd"><td>Zolnai Tamás</td>
- <td align="right">338</td>
- <td align="right">1.5%</td>
+ <td>338</td>
+ <td>1.5%</td>
</tr><tr class="Even"><td>Matúš Kukan</td>
- <td align="right">256</td>
- <td align="right">1.2%</td>
+ <td>256</td>
+ <td>1.2%</td>
</tr><tr class="Odd"><td>Robert Antoni Buj Gelonch</td>
- <td align="right">231</td>
- <td align="right">1.0%</td>
+ <td>231</td>
+ <td>1.0%</td>
</tr></tbody></table></td>
- <td valign="top" width="50%">
- <table cellspacing="3"><tbody><tr><th colspan="3">By changed lines</th>
+ <td>
+ <table><tbody><tr><th colspan="3">By changed lines</th>
</tr><tr class="Even"><td>Lionel Elie Mamane</td>
- <td align="right">244062</td>
- <td align="right">12.5%</td>
+ <td>244062</td>
+ <td>12.5%</td>
</tr><tr class="Odd"><td>Noel Grandin</td>
- <td align="right">238711</td>
- <td align="right">12.2%</td>
+ <td>238711</td>
+ <td>12.2%</td>
</tr><tr class="Even"><td>Stephan Bergmann</td>
- <td align="right">161220</td>
- <td align="right">8.3%</td>
+ <td>161220</td>
+ <td>8.3%</td>
</tr><tr class="Odd"><td>Miklos Vajna</td>
- <td align="right">129325</td>
- <td align="right">6.6%</td>
+ <td>129325</td>
+ <td>6.6%</td>
</tr><tr class="Even"><td>Caolán McNamara</td>
- <td align="right">97544</td>
- <td align="right">5.0%</td>
+ <td>97544</td>
+ <td>5.0%</td>
</tr><tr class="Odd"><td>Tomaž Vajngerl</td>
- <td align="right">69404</td>
- <td align="right">3.6%</td>
+ <td>69404</td>
+ <td>3.6%</td>
</tr><tr class="Even"><td>Tor Lillqvist</td>
- <td align="right">59498</td>
- <td align="right">3.1%</td>
+ <td>59498</td>
+ <td>3.1%</td>
</tr><tr class="Odd"><td>Laurent Balland-Poirier</td>
- <td align="right">52802</td>
- <td align="right">2.7%</td>
+ <td>52802</td>
+ <td>2.7%</td>
</tr><tr class="Even"><td>Markus Mohrhard</td>
- <td align="right">50509</td>
- <td align="right">2.6%</td>
+ <td>50509</td>
+ <td>2.6%</td>
</tr><tr class="Odd"><td>Kohei Yoshida</td>
- <td align="right">45514</td>
- <td align="right">2.3%</td>
+ <td>45514</td>
+ <td>2.3%</td>
</tr><tr class="Even"><td>Chris Sherlock</td>
- <td align="right">36788</td>
- <td align="right">1.9%</td>
+ <td>36788</td>
+ <td>1.9%</td>
</tr><tr class="Odd"><td>Peter Foley</td>
- <td align="right">34305</td>
- <td align="right">1.8%</td>
+ <td>34305</td>
+ <td>1.8%</td>
</tr><tr class="Even"><td>Christian Lohmaier</td>
- <td align="right">33787</td>
- <td align="right">1.7%</td>
+ <td>33787</td>
+ <td>1.7%</td>
</tr><tr class="Odd"><td>Thomas Arnhold</td>
- <td align="right">32722</td>
- <td align="right">1.7%</td>
+ <td>32722</td>
+ <td>1.7%</td>
</tr><tr class="Even"><td>David Tardon</td>
- <td align="right">21681</td>
- <td align="right">1.1%</td>
+ <td>21681</td>
+ <td>1.1%</td>
</tr><tr class="Odd"><td>David Ostrovsky</td>
- <td align="right">21620</td>
- <td align="right">1.1%</td>
+ <td>21620</td>
+ <td>1.1%</td>
</tr><tr class="Even"><td>Jan Holesovsky</td>
- <td align="right">20792</td>
- <td align="right">1.1%</td>
+ <td>20792</td>
+ <td>1.1%</td>
</tr><tr class="Odd"><td>Valentin Kettner</td>
- <td align="right">20526</td>
- <td align="right">1.1%</td>
+ <td>20526</td>
+ <td>1.1%</td>
</tr><tr class="Even"><td>Robert Antoni Buj Gelonch</td>
- <td align="right">20447</td>
- <td align="right">1.0%</td>
+ <td>20447</td>
+ <td>1.0%</td>
</tr><tr class="Odd"><td>Michael Stahl</td>
- <td align="right">18216</td>
- <td align="right">0.9%</td>
+ <td>18216</td>
+ <td>0.9%</td>
</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>
@@ -317,35 +317,35 @@ cut loose from Oracle</a><p> and found a new home as an Apache project. It is fa
<table><tbody><tr><th colspan="3">Companies supporting LibreOffice development</th>
</tr><tr><th colspan="3">(by changesets)</th>
</tr><tr class="Even"><td>Red Hat</td>
- <td align="right">8417</td>
- <td align="right">38.0%</td>
+ <td>8417</td>
+ <td>38.0%</td>
</tr><tr class="Odd"><td>Collabora <strike>Multimedia</strike></td>
- <td align="right">6531</td>
- <td align="right">29.5%</td>
+ <td>6531</td>
+ <td>29.5%</td>
</tr><tr class="Even"><td>(Unknown)</td>
- <td align="right">5126</td>
- <td align="right">23.2%</td>
+ <td>5126</td>
+ <td>23.2%</td>
</tr><tr class="Odd"><td>(None)</td>
- <td align="right">1490</td>
- <td align="right">6.7%</td>
+ <td>1490</td>
+ <td>6.7%</td>
</tr><tr class="Even"><td>Canonical</td>
- <td align="right">422</td>
- <td align="right">1.9%</td>
+ <td>422</td>
+ <td>1.9%</td>
</tr><tr class="Odd"><td>Igalia S.L.</td>
- <td align="right">80</td>
- <td align="right">0.4%</td>
+ <td>80</td>
+ <td>0.4%</td>
</tr><tr class="Even"><td>Ericsson</td>
- <td align="right">21</td>
- <td align="right">0.1%</td>
+ <td>21</td>
+ <td>0.1%</td>
</tr><tr class="Odd"><td>Yandex</td>
- <td align="right">18</td>
- <td align="right">0.1%</td>
+ <td>18</td>
+ <td>0.1%</td>
</tr><tr class="Even"><td>FastMail.FM</td>
- <td align="right">17</td>
- <td align="right">0.1%</td>
+ <td>17</td>
+ <td>0.1%</td>
</tr><tr class="Odd"><td>SUSE</td>
- <td align="right">7</td>
- <td align="right">0.0%</td>
+ <td>7</td>
+ <td>0.0%</td>
</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>