Porting Word2MediaWikiPlus to VB.NET: Part 4

[This series has four previous articles: the prologue, Part 1, Part 2 and Part 3.] 

Proposed Class Hierarchy

I’m trying to think through how this will be basically grouped and structured.  This is the basic class hierarchy I’m thinking of implementing:

  • W2MW++: functions to perform the basic setup & teardown, general functions
  • W2MW++.Format: functions for converting the formatting & layout
  • W2MW++.Image: functions for manipulating images embedded in the Word document
  • W2MW++.Text:
  • W2MW++.Table
  • W2MW++.Wiki
  • W2MW++.Wiki.Publish: functions for making the remote calls necessary to publish the translated document to the Wiki

Aside: Searching SourceForge.net (D’oh!?)

It just occurred to me that I should probably dig through SF.net before diving into a headlong rush of code… it would really suck if I got halfway through, 40 hours into it and then found out that someone else had already developed a really robust Office add-in or set of libraries for MediaWiki upon which I could’ve built.  Although that would sure be in the spirit of the open source community… 😉

I went over to SF and searched on “wiki edit” and came up with very little, so I tried just “wiki” and came back with 60+ pages of results.  Filtering on Operating System = “All 32-bit Windows” reduces that list to 8 pages.  [It’s unfortunate that there’s no way to filter Programming Language = “{.NET languages}”, but so it goes in the land of SF – best I can do is re-run this three times, for C#, Visual Basic and Visual Basic.NET.]

Here’s some of the more interesting, potentially complementary codebases I’ve found so far:

  • WikiAccess Library: (C#, GPL)  Seems to have implemented a comprehensive set of methods and properties for accessing a MediaWiki-based site.  [This might just end up supplying the W2MW++.Wiki class I was thinking about.]
  • DotNetWikiBot Framework: (C#, MIT (X11) license) Seems to have a similarly-large set of methods & properties for accessing a MediaWiki-based site.
    • What’s even more coincidental is that the author (according to the embedded copyright) shares an almost-identical name (Vassiliev) with the author of WikiAccess Library (Vasiliev). 
    • I’m assuming it’s the same guy with two accounts, though I don’t know why he’d reimplement the same stuff over again.
    • However, I have to admit the CHM file documentation that’s included, as well as much greater amount of activity, makes me feel very good about importing the library as a foundation for this app.  [If I understand these licensing arrangements, I don’t have to worry about license conflict if I don’t re-use any of the source code, but only place a dependency on the compiled DLL.]
  • Wiki Word Importer: (VB.NET, GPL) An empty project.  Next!
  • Wiki Editing Suite: (VB.NET, GPL) A populated project, with completely barren source files.  Next!
  • wikiTech: (VB.NET, APL) Yet another empty project.  Next!
  • excel2Wiki: (Visual Basic, GPL) Empty project.  What a surprise – Next!
  • Wiki2HTML: (Visual Basic, LGPL) A VBScript that converts Wiki-formatted content to common HTML.
  • AutoWikiBrowser: (C#, GPL) A very well-staffed project with an amazing amount of code activity.  Has a page on Wikipedia as well, which describes the WikiFunctions.dll API library that they encourage others to use in their standalone projects.  Perhaps they’d be okay with including it here…?

Fascinating, just fascinating.  This is a real decision point for this project then:

  • Do we take a dependency on one or more external libraries?  If so, which one(s)?
  • If so, then how do we negotiate/maintain redistribution rights?  [Presumably it’d be a pain in the arse to force our users to go download and decompress the DLL(s) necessary from other packages.]
  • If not, do we import source code from one of these projects?  If so, do we only focus on GPL code, so that there won’t be any conflicts with the Word2MediaWikiPlus basis?

AutoWikiBrowser’s WikiFunctions Assembly

I’m pretty much decided on taking the dependency on AutoWikiBrowser’s WikiFunctions.dll (as it appears at this time to have the most robust support), so now it’s just a question of whether to add any others:

  • The AutoWikiBrowser talk archives from October 2006 indicate that DotNetWikiBot “…is significantly more advanced/complicated than WikiFunctions.Editor”.  I’ll see how much editing functionality is needed and only take the dependency on DotNetWikiBot if there are major functions that it has that we need.

I’ve left a note on the AutoWikiBrowser Talk page to inquire about redistribution rights, and on the assumption that I’ll be able to include this (or at least, that I’ll be able to find some way to minimize the pain of separately downloading the DLL), I’ll start working on this add-in now.


Join us again next time — same Bat time, same Bat channel!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s