<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">






<!--[if gte mso 9]><xml>
 <o:DocumentProperties>
  <o:Revision>0</o:Revision>
  <o:TotalTime>0</o:TotalTime>
  <o:Pages>1</o:Pages>
  <o:Words>373</o:Words>
  <o:Characters>2128</o:Characters>
  <o:Company>University of Dundee</o:Company>
  <o:Lines>17</o:Lines>
  <o:Paragraphs>4</o:Paragraphs>
  <o:CharactersWithSpaces>2497</o:CharactersWithSpaces>
  <o:Version>14.0</o:Version>
 </o:DocumentProperties>
 <o:OfficeDocumentSettings>
  <o:AllowPNG/>
 </o:OfficeDocumentSettings>
</xml><![endif]-->

<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:TrackMoves/>
  <w:TrackFormatting/>
  <w:PunctuationKerning/>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:DoNotPromoteQF/>
  <w:LidThemeOther>EN-GB</w:LidThemeOther>
  <w:LidThemeAsian>JA</w:LidThemeAsian>
  <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
  <w:Compatibility>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:SplitPgBreakAndParaMark/>
   <w:EnableOpenTypeKerning/>
   <w:DontFlipMirrorIndents/>
   <w:OverrideTableStyleHps/>
   <w:UseFELayout/>
  </w:Compatibility>
  <m:mathPr>
   <m:mathFont m:val="Cambria Math"/>
   <m:brkBin m:val="before"/>
   <m:brkBinSub m:val="&#45;-"/>
   <m:smallFrac m:val="off"/>
   <m:dispDef/>
   <m:lMargin m:val="0"/>
   <m:rMargin m:val="0"/>
   <m:defJc m:val="centerGroup"/>
   <m:wrapIndent m:val="1440"/>
   <m:intLim m:val="subSup"/>
   <m:naryLim m:val="undOvr"/>
  </m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
  DefSemiHidden="true" DefQFormat="false" DefPriority="99"
  LatentStyleCount="276">
  <w:LsdException Locked="false" Priority="0" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
  <w:LsdException Locked="false" Priority="9" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
  <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 1"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 2"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 3"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 4"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 5"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 6"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 7"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 8"/>
  <w:LsdException Locked="false" Priority="39" Name="toc 9"/>
  <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
  <w:LsdException Locked="false" Priority="10" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Title"/>
  <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
  <w:LsdException Locked="false" Priority="11" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
  <w:LsdException Locked="false" Priority="22" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
  <w:LsdException Locked="false" Priority="20" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
  <w:LsdException Locked="false" Priority="59" SemiHidden="false"
   UnhideWhenUsed="false" Name="Table Grid"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
  <w:LsdException Locked="false" Priority="1" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 1"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
  <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
  <w:LsdException Locked="false" Priority="34" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
  <w:LsdException Locked="false" Priority="29" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
  <w:LsdException Locked="false" Priority="30" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 1"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 2"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 2"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 3"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 3"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 4"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 4"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 5"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 5"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
  <w:LsdException Locked="false" Priority="60" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="61" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light List Accent 6"/>
  <w:LsdException Locked="false" Priority="62" SemiHidden="false"
   UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="63" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="64" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="65" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="66" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="67" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
  <w:LsdException Locked="false" Priority="68" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
  <w:LsdException Locked="false" Priority="69" SemiHidden="false"
   UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
  <w:LsdException Locked="false" Priority="70" SemiHidden="false"
   UnhideWhenUsed="false" Name="Dark List Accent 6"/>
  <w:LsdException Locked="false" Priority="71" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
  <w:LsdException Locked="false" Priority="72" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
  <w:LsdException Locked="false" Priority="73" SemiHidden="false"
   UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
  <w:LsdException Locked="false" Priority="19" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
  <w:LsdException Locked="false" Priority="21" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
  <w:LsdException Locked="false" Priority="31" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
  <w:LsdException Locked="false" Priority="32" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
  <w:LsdException Locked="false" Priority="33" SemiHidden="false"
   UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
  <w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
  <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
 </w:LatentStyles>
</xml><![endif]-->

<!--[if gte mso 10]>
<style>
 /* Style Definitions */
table.MsoNormalTable
        {mso-style-name:"Table Normal";
        mso-tstyle-rowband-size:0;
        mso-tstyle-colband-size:0;
        mso-style-noshow:yes;
        mso-style-priority:99;
        mso-style-parent:"";
        mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
        mso-para-margin:0cm;
        mso-para-margin-bottom:.0001pt;
        mso-pagination:widow-orphan;
        font-size:10.0pt;
        font-family:Cambria;
        mso-ascii-font-family:Cambria;
        mso-ascii-theme-font:minor-latin;
        mso-hansi-font-family:Cambria;
        mso-hansi-theme-font:minor-latin;
        mso-ansi-language:EN-GB;
        mso-fareast-language:JA;}
</style>
<![endif]-->



<!--StartFragment--><p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none;
text-autospace:none"><span style="mso-bidi-font-size:12.0pt;font-family:Helvetica;
mso-bidi-font-family:Helvetica;mso-ansi-language:EN-US">Dear All-</span>&nbsp;</p><p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none;
text-autospace:none"><span style="mso-bidi-font-size:12.0pt;font-family:Helvetica;
mso-bidi-font-family:Helvetica;mso-ansi-language:EN-US">As Curtis mentions, OME
as a whole is aware of the importance of maintaining the current version of
Bio-Formats-- it's used by a large number of people, and is the mainstay of
alot of scientific work. Also, and perhaps most importantly, sending us data so
we can validate where a problem lies would be very helpful. Many times, we've
found performance problems relating to underlying assumptions we've made in
file converters that have nothing to do with the runtime environment.</span></p><p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none;
text-autospace:none"><span style="mso-bidi-font-size:12.0pt;font-family:Helvetica;
mso-bidi-font-family:Helvetica;mso-ansi-language:EN-US">That being said, there
has been, and clearly will be, significant interest in a fully native C++
solution for Bio-Formats. In weighing the reasons to do this, there may (or may
not be) performance, ease of use, integration, and many other factors that need
to be considered. Regardless, here’s the bottom line-- we aim to make
Bio-Formats the single solution for scientific image access, and we'll do what
is necessary to make that happen.</span></p><p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none;
text-autospace:none"><span style="mso-bidi-font-size:12.0pt;font-family:Helvetica;
mso-bidi-font-family:Helvetica;mso-ansi-language:EN-US">Curtis rightly points
out that doing this work is a significant resource issue. Glencoe Software has
committed significant salary resources over the last 4 years to Bio-Formats and
indeed has been the main source of funding for work on Bio-Formats. This
commitment will continue and may even grow. The Dundee OME group has been
funded by the Wellcome Trust to provide a fully native Bio-Formats solution.
This award also provides funds for the Madison OME group to be working on OME
ImageJ functionality with Dundee and a major goal of this work is robust
support of Bio-Formats from all applications regardless of language and
interface. So, we have the resources to build tools for the community and to
drive interoperability across the bioimaging sciences, and that includes
ensuring native access to Bio-Formats.<span style="mso-spacerun:yes">&nbsp;</span></span></p><p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none;
text-autospace:none"><span style="mso-bidi-font-size:12.0pt;font-family:Helvetica;
mso-bidi-font-family:Helvetica;mso-ansi-language:EN-US">Across the project, we
are now filling the open positions, and will soon be in able to build the detailed technical plans for this work. Your and the wider community's
feedback on a native Bio-Formats solution is most welcome. We'll do what needs
to be done to make Bio-Formats work for as many applications as possible. Keep
an eye on the OME Roadmap pages (<a href="http://trac.openmicroscopy.org.uk/ome/roadmap"><span style="color:#003E9E">http://trac.openmicroscopy.org.uk/ome/roadmap</span></a>)
for info on our work.</span></p><p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none;
text-autospace:none"><span style="mso-bidi-font-size:12.0pt;font-family:Helvetica;
mso-bidi-font-family:Helvetica;mso-ansi-language:EN-US">In the meantime, send
us your thoughts and comments. Please do continue to send us problem files, and
we will, as always, identify any problems, fix whatever we can, and release
these fixes in the latest builds.&nbsp;</span></p><p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none;
text-autospace:none"><span style="mso-bidi-font-size:12.0pt;font-family:Helvetica;
mso-bidi-font-family:Helvetica;mso-ansi-language:EN-US">As always, thanks for
your support.<o:p></o:p></span></p><p class="MsoNormal" style="mso-pagination:none;mso-layout-grid-align:none;
text-autospace:none">Cheers,</p><div>Jason</div><div><br></div>

<!--EndFragment--><div><div>On 16 Oct 2011, at 21:06, Curtis Rueden wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Hi Anne et. al,<br><br>I am CCing the OME-devel list, since your question is relevant there too.<br>
<br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">Indeed, there is talk of creating a C-version of BioFormats. &nbsp;I'm copying Curtis Rueden of the U Wisc LOCI team that develops BioFormats in case he can comment on the timeline and/or likelihood.<br>

</blockquote><br>This has been a perennial issue since Bio-Formats began. As you know, we are very cognizant of the need for software to interoperate well cross-platform and cross-language—fostering such interoperability is one of Bio-Formats's most important goals. Hence, there has been much discussion and consideration of how best to accomplish it.<br>

<br>We believe that Java provides the best fit for the Bio-Formats project (see FAQ entry: <a href="https://www.openmicroscopy.org/site/support/faq/bio-formats/why-is-bio-formats-written-in-java">Why is Bio-Formats written in Java?</a>). Remaining cross-platform is a top priority for us, as is the integration with OMERO and ImageJ.<br>

<br>We have explored many ways to provide access to Bio-Formats from C, C++ and Python (see FAQ entry: <a href="https://www.openmicroscopy.org/site/support/faq/bio-formats/how-can-i-invoke-bio-formats-from-my-language-of-choice">How can I invoke Bio-Formats from my language of choice?</a>), and we now have multiple practical solutions which provide a starting point for developers (see <a href="http://loci.wisc.edu/bio-formats/bio-formats-c-bindings">Bio-Formats C++ Bindings</a>, <a href="http://loci.wisc.edu/bio-formats/itk">ITK integration</a>, Lee Kamentsky's <a href="http://pypi.python.org/pypi/javabridge/0.2">javabridge</a>). But it is a complex issue, very difficult to make totally turn-key. We know that more can be done, and we have plans to expand these approaches and documentation to make it as easy as possible to integrate with Bio-Formats from non-Java code.<br>

<br>We have also discussed the idea of a C or C++ version of Bio-Formats, as you mention (see FAQ entry: <a href="https://www.openmicroscopy.org/site/support/faq/bio-formats/are-you-considering-translating-bio-formats-to-any-other-languages">Are you considering translating Bio-Formats to any other languages?</a>). There are two possible approaches: 1) maintain a parallel version in C/C++; or 2) migrate Bio-Formats to C/C++ completely and provide Java bindings on top. Either way would require thousands of person-hours to translate the existing codebase into C/C++, but option #1 creates an especially pernicious maintenance problem in that changes to the software—including both bugfixes and improvements—would need to be done twice, once for the Java version and once for the C/C++ version. We simply do not have the resources for that. So that leaves option #2, which would essentially turn the current situation upside down: Java developers would be asking for a pure-Java version, because cross-platform integration with Bio-Formats would become much more difficult.<br>

<br>Either way, before investing such a large amount of time, it is important to fully understand and agree on the rationale for the change. What goals are we trying to accomplish? Is it mainly to improve Bio-Formats's time performance? If so, then I assert that a C/C++ version would not be significantly faster, since <a href="http://drdobbs.com/java/184401976?pgno=15">Java's I/O performance is comparable or even superior to C/C++'s</a> (see FAQ entry: <a href="https://www.openmicroscopy.org/site/support/faq/bio-formats/isnt-java-too-slow">Isn't Java too slow?</a>). Or is the major goal to ease integration with CellProfiler's Python codebase? If so, let's discuss further from that perspective.<br>

<br><blockquote style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;" class="gmail_quote">Also, we were discussing whether the very slow performance on large image sets due to over-use of the stat() command was fixed, which I think it is.<br>

</blockquote><br>The best way to solve performance problems with Bio-Formats is to report a bug and send an example dataset. The vast majority of the time, the issue is with a specific file format reader having an inefficient algorithm, which could be easily improved given a test case illustrating the problem.<br>

<br>Side note: if your team has the time to investigate performance issues themselves, the quickest way to find the bottleneck is often to read the problem file with the "showinf" command line tool, and press Ctrl+\ in the console during the slow initialization or plane extraction. A full Java stack trace will appear including line numbers, which generally identifies the bottleneck section of code. Optimizing these sections of code is the pretty much the same in every programming language: avoid repeated small unbuffered reads, avoid unnecessary seeks, avoid unnecessary nested loops and "per-pixel" operations, etc.<br>

<br>In summary, we are committed to doing whatever we can to facilitate the use of Bio-Formats in a broad array of contexts. If that means a full language translation of Bio-Formats, then so be it. However, our current belief is that such an effort would be neither advantageous nor time-efficient compared to other solutions.<br>

<br>Regards,<br>Curtis<br><br><br><div class="gmail_quote">On Sat, Oct 15, 2011 at 6:54 AM, Anne Carpenter <span dir="ltr">&lt;<a href="mailto:anne@broadinstitute.org">anne@broadinstitute.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

Indeed, there is talk of creating a C-version of BioFormats. &nbsp;I'm<br>
copying Curtis Rueden of the U Wisc LOCI team that develops BioFormats<br>
in case he can comment on the timeline and/or likelihood.<br>
<br>
(Curtis, we've been discussing the image reading libraries underlying<br>
CellProfiler, currently BioFormats + PIL, and the idea was raised of<br>
adding use of the Bio-Image C/C++ library which may be faster in some<br>
instances. We were wondering the timeline of BioFormats being done in<br>
C/C++ and also whether there is any existing or planned collaboration<br>
with the Bio-Image project. Also, we were discussing whether the very<br>
slow performance on large image sets due to over-use of the stat()<br>
command was fixed, which I think it is.)<br>
<a href="http://biodev.ece.ucsb.edu/projects/imgcnv/wiki/libioimg" target="_blank">http://biodev.ece.ucsb.edu/projects/imgcnv/wiki/libioimg</a><br>
<font color="#888888"><br>
Anne<br>
</font></blockquote></div><br>
_______________________________________________<br>ome-devel mailing list<br><a href="mailto:ome-devel@lists.openmicroscopy.org.uk">ome-devel@lists.openmicroscopy.org.uk</a><br>http://lists.openmicroscopy.org.uk/mailman/listinfo/ome-devel<br></blockquote></div><br><div>
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="font-family: Helvetica; "><br class="Apple-interchange-newline"><br class="khtml-block-placeholder"></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">**************************</span></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Arial">Wellcome Trust Centre for Gene Regulation &amp; Expression</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Arial">College of Life Sciences</font></div><div style="font-family: Helvetica; "><font class="Apple-style-span" face="Arial">MSI/WTB/JBC Complex</font></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">University of Dundee</span></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">Dow Street</span></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">Dundee&nbsp; DD1 5EH</span></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">United Kingdom</span></div><div style="font-family: Helvetica; "><br style="font-family: Helvetica; "></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">phone (01382) 385819</span></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">Intl phone:&nbsp; 44 1382 385819&nbsp;</span></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">FAX &nbsp; (01382) 388072&nbsp;</span></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">email: <a href="mailto:jason@lifesci.dundee.ac.uk">jason@lifesci.dundee.ac.uk</a></span></div><div style="font-family: Helvetica; "><br style="font-family: Helvetica; "></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">Lab Page:&nbsp;</span><a href="http://www.lifesci.dundee.ac.uk/gre/staff/jason-swedlow">http://www.lifesci.dundee.ac.uk/gre/staff/jason-swedlow</a></div><div style="font-family: Helvetica; "><span class="Apple-style-span" style="font-family: Helvetica; ">Open Microscopy Environment: <a href="http://openmicroscopy.org">http://openmicroscopy.org</a></span></div><div style="font-family: Helvetica; ">**************************</div><div style="font-family: Helvetica; "><br class="webkit-block-placeholder"></div><div style="font-family: Helvetica; "><div>The University of Dundee is a Scottish Registered Charity, No. SC015096.</div></div><br class="Apple-interchange-newline"></span><br class="Apple-interchange-newline"></div>
</div>
<br></body></html>