<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0cm;
font-size:10.0pt;
font-family:"Courier New";}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:Consolas;}
span.EmailStyle21
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:912008012;
mso-list-template-ids:-885080204;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:2088918965;
mso-list-template-ids:-529781668;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:\F0A7;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-CA" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Thank you Even,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">I appreciate this view and corresponding insight into the work of the GDAL sponsored maintenance – this is in addition to the actual work you’ve undertaken, and coaching of occasional contributors
and question askers like myself! I hope that in course of time the bug fixing ratio drops somewhat lower than half, and you get to enjoy building more enhancements and new things.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US">Best,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="margin-top:4.0pt;line-height:115%;text-autospace:none;vertical-align:middle">
<b><span lang="EN-US" style="font-size:9.0pt;line-height:115%">Matt<o:p></o:p></span></b></p>
<p class="MsoNormal"><span lang="EN-US" style="font-size:9.0pt">Geomatics Developer and Administrator
<span style="color:#2F5496">|</span> Environment <span style="color:#2F5496">|</span> T 867-667-8133
<span style="color:#2F5496">|</span> <u>Yukon.ca</u></span><span style="font-size:9.0pt"><o:p></o:p></span></p>
<p class="MsoNormal"><i><span style="font-size:9.0pt">Hours: 08:30-16:30, Mon-Wed: Office, Thu: Remote, Fri: Away.<o:p></o:p></span></i></p>
</div>
<p class="MsoNormal"><span style="mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span lang="EN-US">From:</span></b><span lang="EN-US"> gdal-dev <gdal-dev-bounces@lists.osgeo.org>
<b>On Behalf Of </b>Even Rouault<br>
<b>Sent:</b> Monday, March 27, 2023 9:35 AM<br>
<b>To:</b> gdal-dev@lists.osgeo.org<br>
<b>Subject:</b> [EXT] [gdal-dev] GDAL sponsored maintenance report: Aug 2021-March 2023<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">Hi,</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">After more than one year and a half of benefiting from the GDAL sponsored maintenance program, it is time to share with the community what work has been accomplished thanks to that
sponsorship. It is quite hard to summarize, as the amount of tasks reaches 1800 for a total of 1313 hours. So lots of small tasks that make the daily reality of maintaining a project like GDAL.</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">Their global repartition is the following one:</span><o:p></o:p></p>
<ul style="margin-top:0cm;padding-inline-start:48px" type="disc">
<li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">Bug fixing: 51% of actions, 55% of time spent (including 177 bug fixes related to issues found by oss-fuzz)<o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">Enhancements: 5% of actions, 15% of time spent<o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">CMake related work: 5% of actions, 10% of time spent<o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">Review of contributions: 20% of actions, 5% of time spent<o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">Release management: 2% of actions, 4% of time spent<o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">Bug triaging and analysis (without corresponding bug fix): 8% of actions, 3% of time spent<o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">Maintenance of continuous integration setup: 3% of actions and time spent<o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">Code enhancements/cleanups: 2% of actions and time spent<o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">Documentation: 1% of actions and time spent<o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l0 level1 lfo1;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif">Other activities: mailing list discussions, bug reports to other projects, meetings, etc.<o:p></o:p></span></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">This work has benefited mostly to GDAL (80%), PROJ (15%), libtiff (2%), openjpeg (1%) and more marginally to other projects associated with GDAL such as Xerces-C, poppler, libgeotiff,
cppcheck, netcdf, curl, libjxl and shapelib.</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">The CMake related work has been a major item of work for the mid 2021 - beginning of 2022 period. I cannot overstate the importance of the initial contribution of this work made
by Hiroshi Miura who brought most of the initial material. That said, without the sponsored maintenance program which helped polishing and making it production ready for all environments supported by GDAL, this would likely have remained a out-of-tree project.
I believe most stakeholders (contributors and users, at least the ones who build from source) are very satisfied with this transition from the historic build systems to a unified and more modern one, with consistent option naming. Building on Windows is in
particular much easier nowadays, in particular when leveraging dependencies from distributions like vcpkg or Conda Forge. For GDAL developers, the new build system offers integration with IDEs and solves long standing annoyances like missing header dependency
rules for partial rebuilds.</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">Although it doesn’t show up particularly in the above statistics, making sure that the continuous integration configurations remain “green” at all times is a constant source of attention.
Given the number of environments tested and the number of dependencies of GDAL, there is hardly a week where some action is not needed in that area to make sure that the code builds and compiles cleanly, tests pass, etc. We can now track a few rolling distributions
to detect as early as possible sources of incompatibilities with our dependencies, and act early: report issues to upstream if there are bugs, or do changes in our code & build scripts to take them into account.</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">Making sure that code contributions from others are reviewed in a timely manner is important for the contributor experience. The average delay for a submitted pull request (excluding
mine) to be commented by me (or merged if no comment needed) is 22 hours, and the median time 3h20 (statistics gathered on 601 pull requests since August 2021, source script at
<a href="https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgist.github.com%2Frouault%2F0fbd37f59b8e93ae63761468a5600262&data=05%7C01%7Cmatt.wilkie%40yukon.ca%7Ce886aa1296084d66bf1d08db2ee14820%7C98f515313973490abb70195aa264a2bc%7C0%7C0%7C638155317337928222%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=IA3VA815KMuovomwajlx062DQyDrBkXu%2FRtrclmJCfg%3D&reserved=0">
https://gist.github.com/rouault/0fbd37f59b8e93ae63761468a5600262</a>)</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">In the category of regular tasks, one can also mention: updating the EPSG dataset in PROJ (and coordinating with IOGP when detecting issues), refreshing vendored of copies in the
GDAL source tree (libtiff typically), making sure that new SQLite releases play nicely with PROJ which has some stressing SQL queries (we spot recently a performance regression in SQLite 3.41.0 and reported it to upstream)</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">The following RFCs have been implemented (not mentioning a few procedural ones) thanks to the sponsorship:</span><o:p></o:p></p>
<ul style="margin-top:0cm;padding-inline-start:48px" type="disc">
<li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l1 level1 lfo2;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif"><a href="https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgdal.org%2Fdevelopment%2Frfc%2Frfc87_signed_int8.html&data=05%7C01%7Cmatt.wilkie%40yukon.ca%7Ce886aa1296084d66bf1d08db2ee14820%7C98f515313973490abb70195aa264a2bc%7C0%7C0%7C638155317337928222%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=x5777yqaTDpQ%2FUElQi%2FZmyrxNybQ%2BaeuDzl2%2B95whHQ%3D&reserved=0"><span style="color:#1155CC">RFC
87: Signed int8 data type for raster</span></a><o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l1 level1 lfo2;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif"><a href="https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgdal.org%2Fdevelopment%2Frfc%2Frfc88_googletest.html&data=05%7C01%7Cmatt.wilkie%40yukon.ca%7Ce886aa1296084d66bf1d08db2ee14820%7C98f515313973490abb70195aa264a2bc%7C0%7C0%7C638155317337928222%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=3oAFB8Ps12CWXFGKUdxpkeWjrTjJBczDt%2BVCLC6KqZA%3D&reserved=0"><span style="color:#1155CC">RFC
88: Use GoogleTest framework for C/C++ unit tests</span></a><o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l1 level1 lfo2;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif"><a href="https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgdal.org%2Fdevelopment%2Frfc%2Frfc90_read_compressed_data.html&data=05%7C01%7Cmatt.wilkie%40yukon.ca%7Ce886aa1296084d66bf1d08db2ee14820%7C98f515313973490abb70195aa264a2bc%7C0%7C0%7C638155317337928222%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Lo12z9Gr4FAq9ipDlR5XdmS0ZA68t48lxrXQXieP4OM%3D&reserved=0"><span style="color:#1155CC">RFC
90: Direct access to compressed raster data</span></a><o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l1 level1 lfo2;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif"><a href="https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgdal.org%2Fdevelopment%2Frfc%2Frfc91_dataset_close.html&data=05%7C01%7Cmatt.wilkie%40yukon.ca%7Ce886aa1296084d66bf1d08db2ee14820%7C98f515313973490abb70195aa264a2bc%7C0%7C0%7C638155317337928222%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Fe7QgA1nYZzdVfqd4G%2B%2FTy1QJ9zl6fNZ1wPWmT%2FtZMU%3D&reserved=0"><span style="color:#1155CC">RFC
91: GDALDataset::Close() method</span></a><o:p></o:p></span></li><li style="color:black;margin-top:0cm;margin-bottom:0cm;mso-list:l1 level1 lfo2;vertical-align:baseline">
<span style="font-family:"Arial",sans-serif"><a href="https://can01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgdal.org%2Fdevelopment%2Frfc%2Frfc93_update_feature.html&data=05%7C01%7Cmatt.wilkie%40yukon.ca%7Ce886aa1296084d66bf1d08db2ee14820%7C98f515313973490abb70195aa264a2bc%7C0%7C0%7C638155317337928222%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=KZ80gxWjlmA%2Fy1z2hIvkHQ%2BiJa%2FGuZW9vNtO8vJhRYY%3D&reserved=0"><span style="color:#1155CC">RFC
93: OGRLayer::UpdateFeature() method</span></a><o:p></o:p></span></li></ul>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">Other recent significant work includes enhancements in Python exception handling (in preparation for enabling them by default in a future 4.0 release), and enabling them in the regression
test suite and utilities.</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p style="margin:0cm"><span style="font-family:"Arial",sans-serif;color:black">The following feature releases have been issued: 3.4.0, 3.5.0 and 3.6.0. And the following bug fixes releases: 3.3.2, 3.3.3, 3.4.1, 3.4.2, 3.4.3, 3.5.1, 3.5.2, 3.6.1, 3.6.2 and 3.6.3</span><o:p></o:p></p>
<p>Best regards,<o:p></o:p></p>
<p>Even<o:p></o:p></p>
<pre>-- <o:p></o:p></pre>
<pre><a href="https://can01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.spatialys.com%2F&data=05%7C01%7Cmatt.wilkie%40yukon.ca%7Ce886aa1296084d66bf1d08db2ee14820%7C98f515313973490abb70195aa264a2bc%7C0%7C0%7C638155317337928222%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=x2QWPiXocK%2B2RsqqpmHKISaPZoD%2BlXDH3lYx2OeaUTA%3D&reserved=0">http://www.spatialys.com</a><o:p></o:p></pre>
<pre>My software is free, but my time generally not.<o:p></o:p></pre>
</div>
</body>
</html>