<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>SIL LSDev Linux Development</title>
	<atom:link href="http://linux.lsdev.sil.org/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://linux.lsdev.sil.org/blog</link>
	<description>Language software for Linux and Mac OS X</description>
	<pubDate>Fri, 01 May 2009 02:12:13 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Translation Editor running on Linux!</title>
		<link>http://linux.lsdev.sil.org/blog/?p=53</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=53#comments</comments>
		<pubDate>Wed, 29 Apr 2009 23:38:54 +0000</pubDate>
		<dc:creator>Neil Mayhew</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[FieldWorks]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Mono]]></category>

		<category><![CDATA[Progress]]></category>

		<category><![CDATA[TE]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=53</guid>
		<description><![CDATA[
Today was a milestone. We demonstrated the Linux version of FieldWorks TE to a group of people at the office chapel time. It worked well enough for the demo, in that it wasn&#8217;t slow and didn&#8217;t crash, and the people were impressed  
Progress has been very rapid in the past month or two, for [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://linux.lsdev.sil.org/blog/wp-content/uploads/2009/04/te-draft-300.png" alt="TE Draft View of Jonah in Sena" title="Draft view" width="300" class="alignright size-thumbnail wp-image-54" style="border:1px solid" /></p>
<p>Today was a milestone. We demonstrated the Linux version of FieldWorks TE to a group of people at the office chapel time. It worked well enough for the demo, in that it wasn&#8217;t slow and didn&#8217;t crash, and the people were impressed <img src='http://linux.lsdev.sil.org/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Progress has been very rapid in the past month or two, for several reasons, but today was the first time that we felt TE was ready to show to others. It was helpful to have the extra incentive of a scheduled demo for the final push to get things working on a non-developer machine.</p>
<p><span id="more-53"></span><br />
We plan to make a binary version available for the Windows TE developers at Jaars to look at, and the work we did for the demo will help with this. Soon, they&#8217;ll also be able to build copies from source for themselves.</p>
<p>Some of the reasons for the rapid progress are:</p>
<p>1. All the hard work that went into porting the infrastructure over the past two years.<br />
2. A decision to work with SWF for the UI for the time being, even though it has some shortcomings.<br />
3. The use of a Windows-hosted database across a network connection.</p>
<p>Some of the big things that are still missing are:</p>
<p>1. A local database.<br />
2. Proper text rendering using Graphite and Pango.<br />
3. A real side-bar implementation (awaiting development of a DotNetBar replacement).</p>
<p>This is still pre-alpha software, and depends on a pre-release version of Mono built from source, but we feel we have come a long way and that it&#8217;s time to begin reviewing our progress with other FieldWorks developers.</p>
<p>Links to screen shots:</p>
<div style="text-align:center">
<p><a href='http://linux.lsdev.sil.org/blog/wp-content/uploads/2009/04/te-draft.png'><img src="http://linux.lsdev.sil.org/blog/wp-content/uploads/2009/04/te-draft-150.png" alt="TE Draft View of Jonah in Sena" title="Draft view" width="150" class="alignnone size-thumbnail wp-image-54" /></a> <a href='http://linux.lsdev.sil.org/blog/wp-content/uploads/2009/04/te-consultant.png'><img src="http://linux.lsdev.sil.org/blog/wp-content/uploads/2009/04/te-consultant-150.png" alt="TE Consultant View of Jonah in Sena" title="Consultant view" width="150" class="alignnone size-thumbnail wp-image-54" /></a> <a href='http://linux.lsdev.sil.org/blog/wp-content/uploads/2009/04/te-keyterms.png'><img src="http://linux.lsdev.sil.org/blog/wp-content/uploads/2009/04/te-keyterms-150.png" alt="TE Biblical Terms View of Jonah in Sena" title="Biblical Terms view" width="150" class="alignnone size-thumbnail wp-image-54" /></a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=53</wfw:commentRss>
		</item>
		<item>
		<title>Why Firebird? Why not a Different RDBMS?</title>
		<link>http://linux.lsdev.sil.org/blog/?p=52</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=52#comments</comments>
		<pubDate>Mon, 29 Sep 2008 17:11:30 +0000</pubDate>
		<dc:creator>Steve Miller</dc:creator>
		
		<category><![CDATA[Cross-Platform]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[Decisions]]></category>

		<category><![CDATA[FieldWorks]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Portablity]]></category>

		<category><![CDATA[Technologies]]></category>

		<category><![CDATA[Firebird]]></category>

		<category><![CDATA[MySQL]]></category>

		<category><![CDATA[object-oriented databases]]></category>

		<category><![CDATA[PostgreSQL]]></category>

		<category><![CDATA[RDBMS]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=52</guid>
		<description><![CDATA[David asked, &#8220;I’m curious to know why Firebird has been chosen as a database engine [for FieldWorks] out of the many other RDBMSs out there, such as MySQL.&#8221;
I get this question from time to time, especially when I go to our Computer Technical Conference (CTC), which comes around every two years.  It is a fair [...]]]></description>
			<content:encoded><![CDATA[<p>David asked, &#8220;I’m curious to know why Firebird has been chosen as a database engine [for FieldWorks] out of the many other RDBMSs out there, such as MySQL.&#8221;</p>
<p>I get this question from time to time, especially when I go to our Computer Technical Conference (CTC), which comes around every two years.  It is a fair question, and since CTC is just a month away, I&#8217;m taking the opportunity to remember why we did what we did. I had to ask the people that made the decision, because I had a hard time remembering. It&#8217;s been a few years.</p>
<p>FieldWorks started out as a Smalltalk project. When the Smalltalk vendor went under (as I have heard), someone mapped the object data to SQL Server. This was SQL Server 7.0, I think, back before the turn of the century. (Literally.) We have since upgraded to SQL Server 2000, then 2005. (We don&#8217;t have any plans currently to move to 2008.) The application code was ported to C++, then newer code was done in C#. You&#8217;ve seen various entries from Mark and others about porting that.</p>
<p>I have made at least two studies over the years about which RDBMS to port to. I&#8217;m not sure MySQL even existed during the first study, but I know it wasn&#8217;t mature enough to do what we wanted at the second study. By the time MySQL had matured&#8211;how much may still be a matter for debate&#8211;we had already had work underway porting to Firebird.</p>
<p>At one time I had recommended we go with PostgreSQL, and we did head in that direction for a while. However, PostgreSQL needed Cygwin at the time, and Firebird already had a native Windows implementation. Also in Firebird&#8217;s favor was the fact that it could be embedded into the application, and this has always had a strong pull for some on the team. Also, it was thought that it would be easier to port the SQL that SQL Server uses to Firebird than it would be to port it to PostgreSQL. Finally, we had a volunteer who knew Firebird and was able to give a significant amount of time. We are in fact indebted to him for laying the foundation of the database port to Firebird.</p>
<p>So the team dropped PostrgeSQL in favor of Firebird.</p>
<p>We have looked at object-oriented datababses as well. None were open source during most of time we made our decisions. We have looked db4objects, but have decided to continue with Firebird for now. Perhaps the biggest reason is that the jump to another SQL RDBMS has already shown to be difficult. Jumping to an object-oriented database would be compound the difficulty.</p>
<p>We have tens of thousands of lines of SQL code for FieldWorks now. Most of it is now ported to Firebird. We still need to put it through unit tests and regression testing.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=52</wfw:commentRss>
		</item>
		<item>
		<title>Status of WorldPad on Linux</title>
		<link>http://linux.lsdev.sil.org/blog/?p=50</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=50#comments</comments>
		<pubDate>Fri, 29 Aug 2008 19:36:42 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[Cross-Platform]]></category>

		<category><![CDATA[Decisions]]></category>

		<category><![CDATA[FieldWorks]]></category>

		<category><![CDATA[GTK/GNOME]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Non-Roman scripts]]></category>

		<category><![CDATA[Progress]]></category>

		<category><![CDATA[Worldpad]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=50</guid>
		<description><![CDATA[Our team&#8217;s main focus has been to port the SIL FieldWorks suite of translation and linguistic programs from Windows to Linux.
We&#8217;ve ported the core C++ parts which are the foundation of all the FieldWorks applications. A big part of the remaining work is in C# to get Translation Editor and Language Explorer to build and [...]]]></description>
			<content:encoded><![CDATA[<p>Our team&#8217;s main focus has been to port the <a href="http://www.sil.org/computing/fieldworks/">SIL FieldWorks</a> suite of translation and linguistic programs from Windows to Linux.</p>
<p>We&#8217;ve ported the core C++ parts which are the foundation of all the FieldWorks applications. A big part of the remaining work is in C# to get Translation Editor and Language Explorer to build and run in Linux.</p>
<p>But tackling Translation Editor would be quite a big step and open up a lot of difficulties all at once. So first we&#8217;re working to port WorldPad. Although WorldPad won&#8217;t be as widely used as Translation Editor, our work on WorldPad is a stepping stone on the way to completing the Translation Editor because many pieces of WorldPad are shared by Translation Editor. And completing the Translation Editor will be easier if we first work on WorldPad.</p>
<p>Because WorldPad is older than Translation Editor, we&#8217;ve first changed some of the underlying technology to put us in a better position to transfer our work to Translation Editor. WorldPad in Windows is a C++ application wrapping <em>views</em>, a library in the FieldWorks code that allows fast display and editing of writing systems with complex scripts and other unique features required by minority language writing systems.</p>
<p>We&#8217;re writing another WorldPad, <em>WorldPadGTK</em>, using C# and embedded the <em>view</em> in a GTK window. WorldPad in Linux will be a C# GTK application wrapping <em>views</em>.<br />
<img id="image51" alt="WorldPadGTK Screenshot 20080829" src="http://linux.lsdev.sil.org/blog/wp-content/uploads/2008/08/wpgtk-20080829.png" /></p>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=50</wfw:commentRss>
		</item>
		<item>
		<title>Updated code repository to latest from Dallas</title>
		<link>http://linux.lsdev.sil.org/blog/?p=49</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=49#comments</comments>
		<pubDate>Thu, 14 Aug 2008 23:45:30 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[Cross-Platform]]></category>

		<category><![CDATA[FieldWorks]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Progress]]></category>

		<category><![CDATA[VCS]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=49</guid>
		<description><![CDATA[As much of our porting work has been dealing with Windowsisms in the lower levels of the FieldWorks code, which wasn&#8217;t expected to change a lot in the Dallas VCS, the code in our local VCS had grown quite out of date. Two and a half years out of date!
Since we&#8217;re now using areas of [...]]]></description>
			<content:encoded><![CDATA[<p>As much of our porting work has been dealing with Windowsisms in the lower levels of the FieldWorks code, which wasn&#8217;t expected to change a lot in the Dallas VCS, the code in our local VCS had grown quite out of date. Two and a half years out of date!</p>
<p>Since we&#8217;re now using areas of the code that have had a lot of changes during that time, there was an increasing need to update our local VCS to reflect the latest from Dallas.</p>
<p>First I migrated our VCS from CVS to SVN - a welcome change. <em>(I can rename directories now!)</em></p>
<p>Then we merged in the new code from Dallas, resolved the conflicting files (only 93), and made things still compile in Linux.</p>
<p>After having approached this with apprehension, I was thankful that it was easier than I had anticipated and only took two and a half weeks.</p>
<p>And now we&#8217;re up to date!</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=49</wfw:commentRss>
		</item>
		<item>
		<title>.NET LINQ to Firebird</title>
		<link>http://linux.lsdev.sil.org/blog/?p=48</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=48#comments</comments>
		<pubDate>Fri, 11 Jul 2008 22:30:50 +0000</pubDate>
		<dc:creator>Steve Miller</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Database]]></category>

		<category><![CDATA[FieldWorks]]></category>

		<category><![CDATA[Progress]]></category>

		<category><![CDATA[Technologies]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=48</guid>
		<description><![CDATA[Since we&#8217;re porting from SQL Server to Firebird, code that works on both RDBMSs is highly valuable. We want to connect to either using C#.
Microsoft&#8217;s ADO.NET Entity Framework does just that. One of the components is LINQ. Here is a beginner&#8217;s application to show how to do it with Firebird.
Download and run the latest Firebird [...]]]></description>
			<content:encoded><![CDATA[<p>Since we&#8217;re porting from SQL Server to <a title="Firebird" href="http://www.firebirdsql.org/">Firebird</a>, code that works on both RDBMSs is highly valuable. We want to connect to either using C#.</p>
<p>Microsoft&#8217;s <a title="ADO.NET Entity Framework" href="http://msdn.microsoft.com/en-us/library/bb399572.aspx">ADO.NET Entity Framework</a> does just that. One of the components is <a title="LINQ to ADO" href="http://msdn.microsoft.com/en-us/library/bb399360.aspx">LINQ</a>. Here is a beginner&#8217;s application to show how to do it with Firebird.</p>
<p>Download and run the latest <a title="Firebird Data Provider" href="http://www.ibphoenix.com/main.nfs?page=ibp_download_dotnet">Firebird Data Provider</a> for .NET and Mono.</p>
<p>Open Visual Studio 2008 (VS). You can try using 2005, but I couldn&#8217;t get it to work. Create a new project. (File/New/Project&#8230;) Under &#8220;Project types&#8221; select Windows. Under Templates select Console Application. Give it a name. (I used LinqToFirebird.) Give the project a location. I prefer to leave the checkbox &#8220;Create directory for solution&#8221; unchecked, to avoid a deeper directory tree than I want.</p>
<p>In  VS, go to the Solution Explorer. We&#8217;re going to add a reference to the Firebird .NET Data Provider. Right-click on References. A dialog will appear. Select the Browse tab. Go to the directory where you installed the provider and select FirebirdSqlData.FirebirdClient.dll</p>
<p>Now we get to code. In Program.cs, add the following above namespace at the top:</p>
<blockquote><p>using System.Data;<br />
using FirebirdSql.Data.FirebirdClient;</p></blockquote>
<p>In the Main method, use the following code. You will have to change the connection string to your own, of course. (The best site for database connection strings is <a title="ConnectionStrings.com" href="http://www.connectionstrings.com/">ConnectionStrings.com</a>.) Microsoft has a number of <a title="LINQ to Dataset examples" href="http://msdn.microsoft.com/en-us/library/bb399401.aspx">examples for LINQ</a>.</p>
<blockquote><p>FbConnection con = new FbConnection(<br />
&#8220;ServerType=0;User=SYSDBA;Password=masterkey;Dialect=3;&#8221; +<br />
&#8220;Database=C:\\Firebird\\Data\\FieldWorks\\FW01.FDB;&#8221;);</p>
<p>FbDataAdapter fbadapt = new FbDataAdapter(<br />
&#8220;SELECT * FROM RDB$CHARACTER_SETS;&#8221;, con);</p>
<p>// Table mappings<br />
fbadapt.TableMappings.Add(&#8221;Table0&#8243;, &#8220;CharSets&#8221;);<br />
DataSet dataset = new DataSet();</p>
<p>// Fill the dataset with a call to the database<br />
fbadapt.Fill(dataset);</p>
<p>// Query<br />
DataTable CharSets = dataset.Tables[0];<br />
var queryCharSets =<br />
from rCharSets in CharSets.AsEnumerable()<br />
select rCharSets;</p>
<p>Console.WriteLine(&#8221;RDB$CHARACTER_SETS:&#8221;);<br />
foreach (DataRow rCharSets in queryCharSets)<br />
{<br />
Console.WriteLine(rCharSets.Field(&#8221;RDB$CHARACTER_SET_NAME&#8221;));<br />
}</p>
<p>// pause<br />
Console.ReadLine();</p>
<p>CloseConnection(con);</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=48</wfw:commentRss>
		</item>
		<item>
		<title>Introducing Steve Miller</title>
		<link>http://linux.lsdev.sil.org/blog/?p=47</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=47#comments</comments>
		<pubDate>Fri, 11 Jul 2008 17:51:22 +0000</pubDate>
		<dc:creator>Steve Miller</dc:creator>
		
		<category><![CDATA[Database]]></category>

		<category><![CDATA[FieldWorks]]></category>

		<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=47</guid>
		<description><![CDATA[I&#8217;m a Michigander working in Texas. I&#8217;ve been working on databases for FieldWorks since 2001. Currently FieldWorks uses SQL Server. My role in the Linux team is to help port from SQL Server to Firebird.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a Michigander working in Texas. I&#8217;ve been working on databases for FieldWorks since 2001. Currently FieldWorks uses SQL Server. My role in the Linux team is to help port from SQL Server to Firebird.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=47</wfw:commentRss>
		</item>
		<item>
		<title>A significant milestone</title>
		<link>http://linux.lsdev.sil.org/blog/?p=46</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=46#comments</comments>
		<pubDate>Wed, 18 Jun 2008 04:08:49 +0000</pubDate>
		<dc:creator>Neil Mayhew</dc:creator>
		
		<category><![CDATA[FieldWorks]]></category>

		<category><![CDATA[Progress]]></category>

		<category><![CDATA[Worldpad]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=46</guid>
		<description><![CDATA[As a result of the breakthrough described in the last post, Brent was able to get a sample application running (HelloView.Net). It&#8217;s written in C#, runs on Mono, and uses the FieldWorks infrastructure packaged as COM objects. In particular, it uses the Views component of FieldWorks, one of the key pieces of the infrastructure, and [...]]]></description>
			<content:encoded><![CDATA[<p>As a result of the breakthrough described in the last post, Brent was able to get a sample application running (<em>HelloView.Net</em>). It&#8217;s written in C#, runs on Mono, and uses the FieldWorks infrastructure packaged as COM objects. In particular, it uses the Views component of FieldWorks, one of the key pieces of the infrastructure, and this is the first time that Views has ever run on a non-Windows platform.</p>
<p><span id="more-46"></span></p>
<p><em>HelloView</em> is really just a wrapper for a FieldWorks view containing a simple string. It&#8217;s the minimal FW program, although it relies on a significant proportion of the infrastructure. That&#8217;s why getting it working represents such a significant milestone. It&#8217;s the culmination of many man-months of work porting C++ code, work which had no visible results until now.</p>
<p>In parallel with the C++ porting, we have been working on the framework of a more significant FW application: a GTK and C# version of <a href="http://www.sil.org/computing/catalog/show_software.asp?id=68">WorldPad</a>. This uses the same underlying technology as HelloView, so it takes a relatively small additional step to make the same capability work in WorldPad, and thus demonstrate something rather more interesting.</p>
<p>WorldPadGTK will be the subject of another post.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=46</wfw:commentRss>
		</item>
		<item>
		<title>A long-awaited breakthrough</title>
		<link>http://linux.lsdev.sil.org/blog/?p=45</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=45#comments</comments>
		<pubDate>Tue, 17 Jun 2008 04:53:01 +0000</pubDate>
		<dc:creator>Neil Mayhew</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[COM]]></category>

		<category><![CDATA[Cross-Platform]]></category>

		<category><![CDATA[FieldWorks]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Mono]]></category>

		<category><![CDATA[Progress]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=45</guid>
		<description><![CDATA[Our porting work depends on having a link from C# to C++ using COM. This is a fundamental requirement, and without it we cannot proceed. Although we&#8217;ve had this working in small test programs for a long time, it would crash badly when we tried it with our application (WorldPad, part of FieldWorks). We were [...]]]></description>
			<content:encoded><![CDATA[<p>Our porting work depends on having a link from C# to C++ using COM. This is a fundamental requirement, and without it we cannot proceed. Although we&#8217;ve had this working in small test programs for a <a href="http://linux.lsdev.sil.org/blog/?p=22">long time</a>, it would crash badly when we tried it with our application (WorldPad, part of FieldWorks). We were fairly sure it was something we were doing wrong, but could never pin it down. Well, now Tom and Brent have found the solution!</p>
<p><span id="more-45"></span></p>
<p>The .Net specification provides a way for managed code (eg C#) to instantiate COM objects (eg C++) and call methods on them. This is very important in FieldWorks because the majority of the application code is C#, but makes use of some very powerful infrastructure code written in C++. The seamless joining of C# and C++ via COM in .Net is a huge advantage.</p>
<p>The Mono developers have thoughtfully provided the same capabilities in the Mono runtime as are available in .Net. This means that, on Windows, Mono works exactly as expected with Microsoft&#8217;s COM implementation. Surprisingly, the same capability also exists in the Linux version of Mono, except that there&#8217;s no COM implementation there. However, they have arranged things such that if a library exists with the right name, and provides exactly the right functions, then Mono will use that library to do COM on Linux.</p>
<p>This has been used by <a href="http://jonathanchambers.blogspot.com/">others</a> with a commercial Windows- to- Unix porting library, but never with an open-source library. We developed libcom to be just such a library, designed to be lightweight, with very few dependencies, and doing just one thing well. Because libcom implements the COM APIs exactly according to spec, and Mono uses them exactly according to the same spec, it turns out that Mono works perfectly with libcom. We are able to create and use COM objects implemented in C++ from C#, and vice versa. But only in small test programs. Until now.</p>
<p>In order for the managed runtime to know what interfaces and methods a given COM object supports, there needs to be a special .Net assembly, called an interop, that defines .Net classes with special attributes that mark them as &#8220;stand-ins&#8221; for their COM counterparts. The application uses these classes, and the runtime behind the scenes makes all the right magic happen (using Runtime-Callable Wrappers).</p>
<p>These interops are normally generated by a Microsoft tool called TlbImp, which works from a type library (TLB) that is produced from IDL compiled by the MIDL compiler. Unfortunately, many of the interfaces and methods used by FieldWorks are too complicated for MIDL/TLB, so SIL created a custom tool called IDLImp that compiles IDL into C# source that is then compiled with the normal C# compiler (Microsoft or Mono) to produce an interop DLL.</p>
<p>We were fairly sure that the interops that IDLImp was producing were not 100% compatible with Mono. Perhaps Mono was interpreting the .Net spec differently from Microsoft? More strictly, perhaps?</p>
<p>To find out, Tom and Brent took simple interops generated by both TlbImp and IDLImp and compared them. After a lot of detective work, they found that the TlbImp-produced interops had some extra attributes in them, and after adding these attributes by hand to the results produced by IDLImp, they were able to run our problem code successfully, without a crash.</p>
<p>This is a huge breakthrough! We have been roadblocked by this problem since before Christmas, and have had to work on other things pending a solution. We had lots of good things lined up ready to go, as soon as we could solve the COM problem. Well, now we can proceed at last. We still need to tweak IDLImp to produce the extra attributes in the interops, but that should be fairly easy.</p>
<p>Watch this space for further developments!</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=45</wfw:commentRss>
		</item>
		<item>
		<title>libcom 0.4.0 released</title>
		<link>http://linux.lsdev.sil.org/blog/?p=44</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=44#comments</comments>
		<pubDate>Thu, 27 Mar 2008 23:15:06 +0000</pubDate>
		<dc:creator>Mark</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[COM]]></category>

		<category><![CDATA[Cross-Platform]]></category>

		<category><![CDATA[Linux]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[Mono]]></category>

		<category><![CDATA[Progress]]></category>

		<category><![CDATA[Technologies]]></category>

		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=44</guid>
		<description><![CDATA[The libcom COM Support Library version 0.4.0 has been released. This is the first release of libcom. libcom is licensed under the LGPL.
libcom implements a subset of Microsoft COM (Component Object Model) and supports both C++ and C# (via Mono) COM clients and servers on Linux. libcom is similar to ole32.dll in Windows.
libcom can be [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://linux.lsdev.sil.org/wiki/index.php/Libcom">libcom</a> COM Support Library version 0.4.0 has been released. This is the first release of libcom. libcom is licensed under the LGPL.</p>
<p>libcom implements a subset of Microsoft COM (Component Object Model) and supports both C++ and C# (via Mono) COM clients and servers on Linux. libcom is similar to ole32.dll in Windows.</p>
<p>libcom can be downloaded from <a href="http://linux.lsdev.sil.org/wiki/index.php/Downloads">http://linux.lsdev.sil.org/wiki/index.php/Downloads</a>.</p>
<p><strong>Update:</strong> libcom now has its own web page at <a href="http://linux.lsdev.sil.org/wiki/index.php/Libcom">http://linux.lsdev.sil.org/wiki/index.php/Libcom</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=44</wfw:commentRss>
		</item>
		<item>
		<title>Bibledit in OLPC emulation</title>
		<link>http://linux.lsdev.sil.org/blog/?p=43</link>
		<comments>http://linux.lsdev.sil.org/blog/?p=43#comments</comments>
		<pubDate>Fri, 23 Nov 2007 21:08:15 +0000</pubDate>
		<dc:creator>Sue</dc:creator>
		
		<category><![CDATA[OLPC]]></category>

		<guid isPermaLink="false">http://linux.lsdev.sil.org/blog/?p=43</guid>
		<description><![CDATA[At the Bibledit web site here go to Download, Installation procedure and find instructions for installing Bibledit on the OLPC.  This was tested in the VMPlayer OLPC emulation (running OLPC build 625) and it was successful. We used the XO activity button at the Bibledit web site per the instructions. We did however do [...]]]></description>
			<content:encoded><![CDATA[<p>At the Bibledit web site <a href="http://bibledit.sourceforge.net/">here</a> go to Download, Installation procedure and find instructions for installing Bibledit on the OLPC.  This was tested in the VMPlayer OLPC emulation (running OLPC build 625) and it was successful. We used the XO activity button at the Bibledit web site per the instructions. We did however do our own build of Bibledit so as to have the current version. The Bibledit build was done on a separate computer and then transfered to the OLPC emulation.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.lsdev.sil.org/blog/?feed=rss2&amp;p=43</wfw:commentRss>
		</item>
	</channel>
</rss>
