So this is a great conversation thread that you guys are starting.  I have a lot of experience with working more towards the pure windows forms application side of things, and less so as far as setting up web stuff, so we can use ideas about how we need to tweak things for optimal compatibility with as many folks as possible.  I agree with the principals outlined in the previous posts and much of this is simply good coding convention.  I have been using resharper in order to set up some formatting rules, but I suspect that people won&#39;t necessarily want to pay for it, so if you know of something else to help with that, I&#39;m interested.  I like trying to set things up so that people can use C# express in order to work with the libraries, however, I am getting reports that people writing plug-ins might not be able to have their plug-in launch an external program for debugging from the express version.  Also, I&#39;m not sure about the implications with trying to use system.Reflection for run-time referencing in other platforms.  Is it ok to use, for instance, a plug-in architecture for referencing OGR/GDAL, or should we be thinking in terms of porting content to C#?  <br>
<br>So we currently have source code that is good for accessing shapefile data in C#, but it doesn&#39;t offer anything close to what OGR or other vector providers could do.  It also relies heavily on the unmanaged GDAL libraries in order to support various image/raster data formats, via a plug-in architecture.  Unfortunately, according to your comments, it also makes use of DataTables.  (It can either load all the data at once for small dbf files, or can set up a page query to take advantage of the virtual data tables in .Net, but it does not take advantage of the new IQueriable structures or linq)  I like linq, but what I have done with it tends to work extremely well for scenarios where the developer knows the schema ahead of time, and I&#39;m not sure how well it works in situations where you were dealing with the unknown schema.  However, I&#39;m sure there is a way to make all that work, I just haven&#39;t done much of it yet, but would not mind tailoring our data access libraries to move more in that direction.<br>
<br>Once Dan sets up an IRC line, I will be happy to get on it.  I&#39;m not a current IRC user, (we used Windows Live Messenger).  However, I have no problem switching over to that. <br><br>I&#39;m really looking forward to getting our libraries out there in a way that is more useable and more versatile for everyone.  I also appreciate the time that you guys are putting in in order to take this idea seriously.<br>
<br>Ted Dunsford (Shade1974)<br><br><br><br><br><div class="gmail_quote">On Tue, Jun 1, 2010 at 10:12 AM, John Diss <span dir="ltr">&lt;<a href="mailto:john.diss@newgrove.com">john.diss@newgrove.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">








<div link="blue" vlink="purple" lang="EN-GB">

<div>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">Hi Dan please see comments inline:</span></p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">Also you may be interested in Mono.Addins and MEF for your
plugin architecture consideration.. alternatively spin up new App Domains to
host your plugins.</span></p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: rgb(31, 73, 125);"> </span></p>

<p><span style="color: black;"><br>
All external apis where possible should be parallelizable. E.g collections
should be synchronized.</span></p>

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal">Cool, but not sure how feasible. Thoughts?<span style="color: rgb(31, 73, 125);"> </span></p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">I am thinking along the lines of the new
System.Collections.Concurrent namespace. Computers aren’t getting any
faster - we need to make sure we can use as many cores as possible to get the
speed gains we need.</span></p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">Parallelization is also very hard to retrofit so if we can get a
plan in early we will benefit.</span></p>

</div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: black;"> </span></p>

<p><span style="color: black;">Data access should be async.</span></p>

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal">Especially for web based data access. Maybe not for file
based? </p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">IMO all IO bound access should follow the same pattern : web, db
or file. There is no point hitting datasources sequentially when you can do so
in parallel. </span></p>

</div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: black;"> </span></p>

<p><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.</span></p>

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal">Not sure exactly what the implications are... but
interesting idea. </p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">Basically have a generic caching block with rules for scavenging
and a variable backing store which can be plugged into any part of the
processing /rendering pipeline. It could be equally at home as an in-memory cache
of features on a layer or as an image cache speeding up identical wms requests.
– There is some work on this in the <a href="http://asp.net" target="_blank">asp.net</a> bits of SharpMap2 but it
could be made more generic..</span></p>

</div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: black;"><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.</span></p>

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal">We were targeting 3.5 because it would be more likely to be
mono compliant... (does MONO really support all of .NET 4 now?) <span style="color: rgb(31, 73, 125);"> </span></p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">Miguel certainly seemed to think so in a vid I saw recently.. <a href="http://mono-project.com/Compatibility" target="_blank">http://mono-project.com/Compatibility</a>
tells a slightly different story - but being an OSS project the documentation
is out of date and probably wrong </span><span style="font-size: 11pt; font-family: Wingdings; color: rgb(31, 73, 125);">J</span><span style="font-size: 11pt; color: rgb(31, 73, 125);"> I will try and locate the
vid.</span></p>

</div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: black;"> </span></p>

<p><span style="color: black;">If we hope to support MONO (which I think we
should) we must ensure that any rendering api&#39;s have a potential replacement in
Mono. Mono is currently compatible with .net 4.</span></p>

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal"> Any ideas on how much of .NET 4 is implemented in MONO
now? </p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">See above – I think they are also working on making the GC
better.</span></p>

</div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: black;"> </span></p>

<p><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.</span></p>

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal">Not sure I understand... can you explain further? </p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">It was partly a spelling mistake on my part: should have been
IQueryable&lt;IFeature&gt; which is basically the underpinning of Linq. <br>
The OsGeo filter spec details a dialect for describing a query which is similar
to the System.Expressions namespace used in defining Linq queries. Both would
also provide an easy mechanism for serializing/persisting queries. <br>
Datasets and DataTables are very heavy/ verbose and don’t exist on
certain platforms. Pretty much all the trends as far as I can see, is to kill
them off in favour of domain entities / ORM. DataTables / Datasets are also
frowned upon in WCF which is another set of technology that could be very
useful in this field. We have an expression model in SharpMap 2 but it is a bit
clunky at the moment and disconnected from linq.</span></p>

</div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: black;"> </span></p>

<p><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" target="_blank">www.KoushikDutta.com</a>
 is working on another free Android/Mono platform.</span></p>

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal">What are all the implications of supporting Silverlight and
Moonlight? Is it possible to have a standard .NET DLL that can be used in a
Silverlight application? </p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">The binaries are compatible at .net 4 not so previously afaik. Silverlight
is both a super and sub set of  WPF so there are differences. System.Data
is one key difference. IMO WPF and Silverlight will merge into one over the
next couple of releases. </span></p>

</div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

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

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal">Agreed. Is it possible to do this kind of enforcement using
Codeplex? </p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">I don’t think codeplex allows this. I have heard good
things about Jetbrains’ TeamCity  and lots of people use CruiseControl.
BTW jetbrains give away R# licenses.</span></p>

</div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: black;"> </span></p>

<p><span style="color: black;">Source control should be backed with a CI / Test
server.</span></p>

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal">Can this be done on Codeplex? </p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">Not afaik.</span></p>

</div><div class="im">

<div>

<p class="MsoNormal"> </p>

</div>

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: black;">Perhaps the logs should be taken and made
available somewhere.</span></p>

</div>

</div>

</blockquote>

</div><div><div class="im">

<p class="MsoNormal">Yeah, any ideas on how to do this other than just through
the codeplex log browser? </p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

<p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);"> </span></p>

</div><p class="MsoNormal"><span style="font-size: 11pt; color: rgb(31, 73, 125);">I actually meant the IRC logs.</span></p>

</div><div class="im">

<blockquote style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: -moz-use-text-color -moz-use-text-color -moz-use-text-color rgb(204, 204, 204); padding: 0cm 0cm 0cm 6pt; margin-left: 4.8pt; margin-right: 0cm;">


<div>

<div>

<p><span style="color: black;"><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.</span></p>

</div>

</div>

</blockquote>

<div>

<p class="MsoNormal">Yes agreed. This is the number one complaint I believe of
any/every open source GIS project that there isn&#39;t adequate high quality
documentation. We&#39;ve registered &quot;dotSpatial.org&quot; so maybe that should
point to a non-Codeplex server where we can maintain documentation and project
description/etc. Then have pointers to the Codeplex site for source code,
issues and forums. What do you think of this approach? Would you (John or
others) be interested/willing to help decide what would go such a separate
site? layout, etc?</p>

</div>

</div></div>

<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="color: rgb(31, 73, 125);"> </span></p>

<p class="MsoNormal" style="margin-bottom: 12pt;"><span style="font-size: 11pt; color: rgb(31, 73, 125);">I am happy to help out
wherever I can..</span></p>

</div>

</div>


<br>_______________________________________________<br>
DotNet mailing list<br>
<a href="mailto:DotNet@lists.osgeo.org">DotNet@lists.osgeo.org</a><br>
<a href="http://lists.osgeo.org/mailman/listinfo/dotnet" target="_blank">http://lists.osgeo.org/mailman/listinfo/dotnet</a><br>
<br></blockquote></div><br>