Off Topic-Taking an effort to Open Source

Topics: General Topics
Feb 4, 2008 at 10:09 PM
The SharpMap/NTS/GeoAPI/ProjNet stuff is our first experience in participating in OpenSource efforts.

Over the past several years, we have developed a COM framework for dealing with that data common to our ag industry, and this framework has lots of "plug-in" drivers that work with all of the proprietary formats used in our industry.

We are at a point that we want to take this effort to OpenSource, so other companies can share in the fun. First, it is COM, so that seems a little fraught with issuess. But, more... is there any good reference about things that we should consider before making this move? And, why would we choose CodePlex vs. Source Forge vs Google Code, etc?

Thanks for any thoughts you might have, and feel free to contact me via my profile if you prefer.
Feb 4, 2008 at 11:15 PM
COM is (in my opinion) actually quite nice...it's not difficult to take a COM library and make it accessible through .NET, which would be one of the first things I'd be interested in. :)

Definitely consider the license under which you put the code. You might want to get some legal advice before you pick a license. Don't go with a custom license; pick an existing license (e.g. MIT, LGPL, GPL, etc.). The reason for this is there are established legal precedents for existing licenses, and you'll have a better idea of what you're signing up for, what rights are granted to people consuming/using your code, etc. With some custom license, you won't have a clear understanding of what rights are granted to people using the project, and it makes it difficult for companies and individuals to absorb your code.

My $.02: don't do GPL, or any copy-left license. Most businesses don't want to touch those licenses with a ten foot pole, regardless of whether or not the whole copy-left movement is a good idea. One of the big things VCs look at when they consider funding is what sort of licenses a product must adhere to, and they don't look kindly on anything that even vaguely resembles GPL. I don't want to get into a discussion about why Richard Stallman is right or wrong; I just want to point out that traditional business models are really struggling with this notion of ownership.

Has your company decided to open source it, or are they just considering going with open source?
Developer
Feb 5, 2008 at 8:05 AM

Magnum4610 wrote:
And, why would we choose CodePlex vs. Source Forge vs Google Code, etc?


The choices are basically CodePlex vs GoogleCode.
Although CodePlex looks like the best way to publish microsoft-related projects, i love much more google code for a couple of reasons:
1) SVN is better than TFS.
2) SVN is better than TFS.
3) Light client (tortoisesvn+ancksvn vs TFS Client) for source control.
3) Website speed (CodePlex is very slow for my experience).
4) Code indexing for simple searches into the code.
5) SVN is better than TFS.
Feb 5, 2008 at 1:16 PM
@kidjan -- We are using a lot of COM Interop, and it is working quite well for us. It is making the transition to .Net much less painful. I was thinking more about issues of builds done by multiple companies. In .Net, I can have a copy of SharpMap that I modify a little bit and deploy it in my own application's folder, and not impact anyone else. With COM, I might have an app working well, and someone else modifies the open source copy and deploys it onto the same machine. Now, my app will automatically start using the modified version. This concerns me.

Thank you for the feedback on licenses.

I own my company, so it is my decision. What I want to do is get out from under the expense and responsibility of maintaining this set of components. I am currently providing them to my competitors for free, and it is time that they accept some responsibility for enhancments and new plug-ins if they want to continue using this framework. And there are other companies that might want to use this, but they are concerned that they loose their codebase if my company goes out of business.

@Diego -- Thank you for the feedback on SVN. I agree that SVN is much more pleasant on Google Code, than on CodePlex.
Feb 6, 2008 at 8:50 PM

Magnum4610 wrote:
@kidjan -- We are using a lot of COM Interop, and it is working quite well for us. It is making the transition to .Net much less painful. I was thinking more about issues of builds done by multiple companies. In .Net, I can have a copy of SharpMap that I modify a little bit and deploy it in my own application's folder, and not impact anyone else. With COM, I might have an app working well, and someone else modifies the open source copy and deploys it onto the same machine. Now, my app will automatically start using the modified version. This concerns me.

...that is a good point. If some programmer decides to commit the cardinal COM sin ("Thou shalt not modify established COM interfaces or behaviors"), and then registers that COM object under the same GUID.....things could get unpleasant fast. I guess I was thinking of some of the other COM-based libraries that I love (e.g. DirectShow.NET, as well as some of my own COM objects), but since MSFT doesn't release the underlying source code, this is a problem that hadn't occurred to me.

I think there may be some way to specify the binary you want to use rather than relying on the registered GUID, but I'm not totally sure about that.


What I want to do is get out from under the expense and responsibility of maintaining this set of components. I am currently providing them to my competitors for free, and it is time that they accept some responsibility for enhancments and new plug-ins if they want to continue using this framework. And there are other companies that might want to use this, but they are concerned that they loose their codebase if my company goes out of business.


I'm a little confused about why you would ever provide your competitor with free product, but....I'm assuming it's complicated.

Yeah, it sounds like you definitely don't want to be burdened with updating/maintaining the codebase. So my advice would be: make sure other people's unsanctioned changes (i.e. those that did not go through the open source project) will not affect your applications and projects, and if you can swing that, open source it.
Feb 6, 2008 at 8:55 PM

D_Guidi wrote:
1) SVN is better than TFS.
2) SVN is better than TFS.
5) SVN is better than TFS.


My personal preference is TFS, but I'd take SVN as well. IMO, this isn't a big factor in open sourcing something, but...just my $.02
Coordinator
Feb 8, 2008 at 1:15 AM
This is an interesting question. I am personally in the process of going through old code which I had plans for, but never got off the ground for one reason or another. It could benefit someone instead of laying around on my hard drive, goes one line of thinking, plus it might actually get improved over time. Another line of thinking, backed by much more experience, tells me that it is just more abandoned code to pollute the internet. On the other hand, with code indexing sites (like Koders and Google Code) becoming more prevalent, it could be less messy even if it is just static reference. How many times have I found some obscure bit of code in an otherwise abandoned library useful just to see how something is expressed or used? I wouldn't worry about it if it is COM - who knows, someone could rewrite it in pure managed code. I'd also stay away from GPL style licenses, and stick with something like Ms-PL or Apache or MIT/BSD or even LGPL. Profit and open source can (and probably should and further may even have to) mix.

As for version control, everyone has their preference, and reason for liking it. It is almost as vehement a belief as choice of programming language or development tool (which reminds me of a recent xckd). I agree with kidjan that it isn't a big factor. However, the community around it might be. It's too early to tell whether there is an ambient effect of having more .Net code on CodePlex, but things are starting to look that way, with all the references I'm starting to see at news sites I frequent. Certainly it is already on a different scale than GotDotNet ever was.

I like TFS as of version 2008, when they figured out that disconnected operation really is important after all. Of course, I use SVN almost exclusively at this time, but I've been keeping up with TFS, and like certain features it has like merge tracking (I know, I know, it's coming, but I've been using Subversion since v0.35.1 and I'm tired, tired I say, of manual merge tracking.), shelvesets (which are like personal branches, but easier to manage), fairly nice tool integration with Visual Studio (and yes, I also run the excellent VisualSVN), and work-item integration.

I also like that there is a choice of version control on CodePlex, and even though SVN support is immature, it is progressing. In the future it could even be able to run Git (which is currently a better technology for distributed projects with multiple lines of development) due to the interface work of SvnBridge. IMO, future benefit of CodePlex has greater value than present value of Google Code.
Feb 8, 2008 at 3:19 AM
Welcome back... and thank you for the feedback.

@kidjan -- Every hardware manufacture in agriculture has the best data format possible for collecting the data from a machine that is operating in a field (uh huh). My goal, 8 years ago, was to establish a "standard" format for representing a field operation. We defined it in XML, and make a COM library that implemented it and consumed it easily. Then we defined a plug-in interface so that companies could write the equivalent of "printer drivers" that would transform their proprietary formats into this more comprehensive device-indepent format ( like a SharpMap plug-in Data Provider) We made it all avaialble w/o license or royalty in order to encourage participation, plush people in ag are cheap. As near as I can tell, about 30 companies use our stuff to read the data, and two companies have stepped up to help write the "drivers". Why provide to competitors... so that I didn't have to spend the rest of my life writing code to transform proprietary formats to our format. Nice idea. Failed in reality. Data generators have a vested interest in making their data hard to access... so they can sell their own software. To the little companies that consume the data... we are heroes... So, it is time for them to write the drivers for the new data formats.

@codekaizen... one reason that I want out from under the COM version is that we have written an internal replacement in .Net that is about an order of magnitude faster, and more flexible. Now... do we take IT to open source? :)
Feb 8, 2008 at 7:34 PM

D_Guidi wrote:

Magnum4610 wrote:
And, why would we choose CodePlex vs. Source Forge vs Google Code, etc?


The choices are basically CodePlex vs GoogleCode.
Although CodePlex looks like the best way to publish microsoft-related projects, i love much more google code for a couple of reasons:
1) SVN is better than TFS.
2) SVN is better than TFS.
3) Light client (tortoisesvn+ancksvn vs TFS Client) for source control.
3) Website speed (CodePlex is very slow for my experience).
4) Code indexing for simple searches into the code.
5) SVN is better than TFS.

There is a new thing coming, called JIRA Studio (http://jira.com) which IMHO will be better than any other web sites used to host OSS projects. We use some of the Atlassian tools in my company and very satisfied until now. The same tools are used by Codehaus.

...
6) SVN is much better than TFS :)
7) Confluence Wiki is better than Codeplex
8) JIRA is better than Codeplex