<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: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 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @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;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.5pt;
        font-family:Consolas;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:Consolas;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.Section1
        {page:Section1;}
-->
</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-GB link=blue vlink=purple>

<div class=Section1>

<p class=MsoPlainText>Hi list, I thought I should note a few opinions/ideas down
for further discussion, in no particular order:<o:p></o:p></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Personally I think all parts of
the application should be split into an interface and an implementation. All
interfaces should only demand other interfaces in their contracts. This will
allow much easier replacement of core components in future. IOC/DI can be used
to bind the concrete implementations together. We should avoid building a
tightly coupled monolith.<br>
<br>
All interfaces should closely resemble their OSGeo counterparts - there is no
point in building a standard if by doing so you ignore the standard.<br>
<br>
Licensing should be thought out up front. The project will never be the go-to
source for .Net developers if there is the slightest hint of GPL and a lot of people
don&#8217;t understand LGPL either so that is also a turnoff.<br>
<br>
All external apis where possible should be parallelizable. E.g collections
should be synchronized. <o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Data access should be async.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>There should be a caching block
developed with multiple backends. Uses ranging from caching data/ partial
screen renders, wms/wfs output etc.<br>
<br>
Supported frameworks should be considered up front - my personal preference
would be to start with a clean slate at .Net 4 or at a minimum 3.5.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>If we hope to support MONO (which
I think we should) we must ensure that any rendering api's have a potential replacement
in Mono. Mono is currently compatible with .net 4.<br>
<br>
GDI+ is terrible in a server context - &quot;A Generic Exception Occurred&quot;
is the best way to ruin my day/week/month. A while ago I had a play with Cairo
and D2D both are promising - wip is available in the JDSymbolizer branch at <a
href="http://sharpmapv2.googlecode.com">http://sharpmapv2.googlecode.com</a>. D2D
is platform agnostic whereas the Cairo I was using was x86 only. It was also an
experiment to allow different rasterizers to be used in the same control and
also multi pass rendering ala OsGeo Symbology.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Reliance on native apps/dlls
should be avoided where possible and replaced asap when they are used to get a
result. They reduce the portability of the resulting framework and make building
for AnyCPU much harder as you get BadImageFormatExceptions thrown whenever an
x86 native assembly is loaded into an x64 app domain. This in turn makes the
build configs harder to maintain.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Any class expecting to retrieve
(vector/attribute) data from a datasource should demand IQueriable&lt;I/TFeature&gt;
rather than a FeautureProvider or similar. DataTable / Dataset should be
avoided. The query syntax should be either linq against TFeature and/or based on
expressions taken from the OSGeo Filter spec.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>All data classes should be
marked [Serializable].<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Where possible the classes
should be [CLSCompliant]<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Any style/symbology should be
based on the OsGeo symbology spec /SLD i.e multiple rules evaluated in a loop
for each feature allowing for complex styles to be built up.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Potential for 3D should be
considered and planned for if appropriate.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Silverlight/Moonlight has
massive potential for browser based gis / mapping / processing / grid computing.
Supporting it should definitely be planned for but it imposes its own forced async
style which may have implications elsewhere. Also win phone 7 will be Silverlight
based. Novell have MonoTouch and MonoDroid in progress for IPhone and Android respectively
and <a href="http://www.KoushikDutta.com">www.KoushikDutta.com</a> &nbsp;is
working on another free Android/Mono platform.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Labelling engine is extremely
important it should be capable of creating very crude/fast maps and also picture
perfect &#8211; what the general public expect.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>MS C#/dotspatial group style
guidelines should be followed -&nbsp; everyone&#8217;s code should look the
same. Perhaps a developer R#/stylecop profile should be created and enforced by
a CI server.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Source control should be backed
with a CI / Test server.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoPlainText><span style='color:black'>There should be an IRC channel
created or perhaps 2. #dotspatial and #dotspatial-dev. I suggest freenode.net
as #OSGeo and #SharpMap are already there.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'>Perhaps the logs should be
taken and made available somewhere.<br>
<br>
Documentation should be easy to find and of high quality. Perhaps the group
needs a sister website separated from codeplex where it is easier to manage the
wiki/ public contribution etc. The codeplex wiki is very limited in this
respect.<o:p></o:p></span></p>

<p class=MsoPlainText><span style='color:black'><o:p>&nbsp;</o:p></span></p>

<p class=MsoNormal>Any way got to do some work.. more to come...<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>If possible it would be good to arrange an informal meeting
sometime on irc. &nbsp;I am in London, FObermaier is in Germany and Pauldendulk
is in Holland so it may make sense to have it late afternoon here / morning in
the US<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

<p class=MsoNormal>All the best<o:p></o:p></p>

<p class=MsoNormal>jd<o:p></o:p></p>

<p class=MsoNormal><o:p>&nbsp;</o:p></p>

</div>

</body>

</html>