The cost of fixing a computer, and Open Source Software

Note: I started writing this a while ago, but just finished it. This is made obvious by the time stamps of the tweets I reference.

Twitter is a great tool, but sometimes you need more than a 140 characters for a reply. This is one of those cases.

It all started with a retweet by Karen Lopez, a.k.a. @datachick:

@jlopez255: Starting today -“Name your own price computer repair”, U name the price for my labor and I will fix your computer. Parts extra.

Which lead to me putting forth the following propositions to Karen and Jennifer:

  1. It’s a problem that is is cheaper to buy a new computer than repair it for low end computers under 3 years old.
  2. We need to make repairing computers cheaper, because many individuals cannot afford what professionals rightfully charge for their skill level.
  3. OSS is better suited than closed course for bringing down the cost of computer repair.
  4. You can petition the Lord with prayer.
On point one I was preaching to the choir. On point number two I received no direct response. However, for number 3 Karen responded:
@zippy1981@jlopez255 I have not had great ease of use with OSS. For every great 1, there are 10 that require lots of Dev / tech skills.
I don’t refute this statement at face value, However, I do have the following commentary to offer backing up my third proposition.
First of all, lets limit the scope to the average personal machine owned by joe sixpack. Microsoft Office, or Open Office (or Libre Office) are power tools for these people. Other than an Office Suite, we are really talking about the web browser, and maybe the email client. For these users, a default Ubuntu install is more than enough. Most of their stuff is done on the web. Open/Libre Office are a little lacking in UX and features, but google docs makes up for the UX. Also, most of these users don’t want or need the missing features. In terms of web browsers and a window manager, the web browsers are exactly the same (yes I trained both my parents to use firefox), and the Ubuntu GUI is on par Windows 7 in terms of polish, with some interesting innovations such as how it handles full screen windows. Also, for netbooks, Ubuntu has a special install disc that tweaks the UI for the small screen.
Secondly, with Ubuntu, Linux is truly for end users. Rarely does something not work. When it fails to work, you might have to bust out the command line, but the procedures are no more complicated than what one would have to do on windows. Quite frankly, if you want a *nix OS that requires you to do a lot manually, try a BSD or Solaris.
Third, my point was OSS is better suited for reimaging hard drives cheaply than windows. Because OSS is free as in beer for all practical purposes, there are no licensing restrictions to enforce. Therefore, there are no restrictions on creative ways of deploying Linux automatically. Windows Deployment Services (WDS) and its predecessor Remote Installation Services (RIS) are expensive, and designed for enterprise deployment. Microsoft could develop a version of these aimed at mom and pop geeksquad equivalents. If such a program allowed you to entered license keys for windows, office, etc and it install fully patched versions of the licensed software, plus whatever third party stuff they wanted to add (and their was a gallery where you could pick third party free and paid software to install), that might compete with what can be achieved when your software is free as in freedom and beer. However, I honestly don’t see Microsoft doing this until someone does this with Linux first.
So my point was that OSS has better potential for automating PC repair compared to Windows. You can simplify the process with OSS which will allow less skilled people to perform PC repaired. These less skilled people will command lower fees.

Open Source Software Roundup July 2009 to December 2010

Originally this was supposed to be an end of year round up. However, two things happened. First, I did not finish it before the end of the year. Secondly, I realized that it would be better to list software I’ve discovered over the past 18 months as opposed to a year, due to various personal events that started in July 2009.

If I had to use one word to describe my relationship with technology in the past 18 months, it would have to be the Russian word Glasnov. That word, refers the open policies adopted by Mikhail Gorbachev that lead to the fall of the Berlin wall and communist Russia. I say this because I’ve used many open source programs for the first time in the past 18 months, and how I work with technology has changed greatly in that time. I therefore decided to present a list of some of the open source packages I think are very important. I’ve broken them up into two groups. The first group is programs I started using after July 2009. The second is programs I’ve been using since before then.

New Programs

Far Manager (website)

The Far Archive Manager is a filemanager originally developed by the author of WinRAR. It was recently made open source. It is a console mode orthodox file manager. I became attracted to Far for its ability to handle large directories and unc paths well. However, I became a true believer because of the plugins. There are plugins for everything. For example, the WinSCP plugin lets you connect remotely to scp and sftp shares, and the 7-zip plugin lets you manage archives as if they were directories. However, there are also plugins for the Service Control Manager and event viewer. The latest version even has UAC elevation integrated, although some plugins, notably the 7-zip one, does not. This means I can run far normally, download something to c:userszippyDownloads in Chrome, and copy it to c:Program Filessomething and I will get a UAC prompt. However, if I download a zip file I cannot copy its contents directly to c:program files.

Far 2.0 UAC Prompt

Ditto Clipboard Manager (website)

I’ve never use a clipboard manager before. Then Stan, the founder of this blog, told me to download Ditto. I don’t know how I lived life without it. Ditto keeps a stack of everything you copy to the clipboard. That stack can be accessed by pressing ctrl+`.  There are advanced options suck as searching the clipboard stack, but even this most basic mode of operation can make you more productive.

MongoDB (website)

What can I say about MongoDB? I was first introduced to MongoDB at NYPHP on October 27th 2010.  On that evening on the 12th floor of 590 Madison Avenue, Kristina Chodorow destroyed everything  I held right, holy and just about data storage and management. So I asked a lot of questions during the presentation, and convinced her into coming down to LILUG and LIPHP for encore performances. I decided there was some merit to all this heresy for some cases. However, I didn’t actually use MongoDB until May of 2010. Then on June 3rd Eliot merged my first patch into the MongoDB code base. I’m still not a MongoDB true believer, but it definitely has its purposes, and I recommend all DBAs should walk a mile in  its moccasins before hurling brimstone at it.

Git (website)

Contributing to MongoDB forced me to learn git, and for that I am forever greatful. Distributed version control is the way to go, especially for open source projects. Git is a little weird to use, but that is what happens when a Finnish operating system developer writes a version control system. The other thing that happens is you get a VCS that is very fast.

SConstruct (scons) build system (website)

Scons is like make, except its written in python. MongoDB uses scons as its build system. If I were starting a new C/C++ project I’d consider using scons as the build system. I struggle with editing the mongodb Sconstruct file since I don’t know python, but I was able to pick up enough python to be reasonably productive.

BouncyCastle for .NET (website)

I’ve used the PGP SDK in a previous life when I wrote ETL jobs. Recently, I have to generate a feed for someone else to ETL and they wanted it PGP encrypted. I discovered that there was a free, open source alternative  to the PGP SDK that was written in C#. This meant I did not have to mess with managed C++ or P/Invoke, in addition to not paying for PGP license.

GPG4Win (website)

We began to use PGP encryption to store some important documents at my company. As such I installed GPG. The GUI is a little lacking, but the command line version works great.

PHPManager for IIS (website)

PHP Manager is a plugin for IIS manager that allows you to manage your PHP installation on IIS. Quite simply, if you run PHP on IIS and you are not using this tool, you’re doing it wrong.

PHPManager lets you load and unload modules as well as edit all your php.ini settings. It also will tell you if you are doing things wrong in your configuration file, such as not setting a time zone. Finally, phpmanager has a “just open my PHP.ini file in notepad” button. I must stress the importance of installing this addin on any IIS server where PHP is installed.

GreenShot (website)

Greenshot is a great Screen Capture utility for windows. It lacks the video capture features of the closed source tool Jing, which I also use, but it cannot be beat for still capture. Greenshot has all the simple image editing you wold want from such an app. You can highlight, crop, obfuscate, and annotate your images. You can then save them or add them to the clipboard. The obfuscating is a great feature because sometimes you want to post a screen shot on your blog or a support forum, and usually there is sensitive information in it, like your companies code or a private email. Before greenshot, I’d fire up gimp to do this. Greenshot streamlines the process greatly.

Old Favorites

VIM (website)

Vim is my favorite text editor on any operating system. Version 7.3, the latest version, was released in August.

VideoLan (website)

VideoLan is a great no frills media player. However, as of late it is my main media player.

Thunderbird (websitezindus plugin)

I’ve been using gmail for years for my personal email. I really never saw a need for a traditional email client. Then I realized I wasn’t backing up my email. So now I install Thunderbird on all my machines and keep it running in the background to backup my gmail account. I also have zindus to backup my google contacts. While I should probably switch to a more lightweight method like fetchmail or mutt, thunderbird serves my needs for now.

GIMP (websitewindows downloads)

I have a confession to make. I don’t know how to use photoshop. I’ve been using gimp these years, so I think photoshop has a weird UI and gimp is normal.

Inkscape (website)

Inkscape is a vector graphics program. Its native format is SVG with some extensions. I used it to generate the graphics for the jquery.collapsiblePanel plugin.

Open Source Site Roundup 2010

Its the end of the year, and a great time to look back. In December 2007, I wrote an article about my favorite open source sites, that I am revisiting. It would be grossly inaccurate to call this an annual update, but if I do this again in 2011 I can call that article an annual update. So without further adieu, these are my favorite Open Source Sites for 2010.

Github (http://www.github.comMy ProfileJustAProgrammer Org)

Distributed version control initially bothered me on principle. I like centralized and federated systems. However, contributing to mongodb forced me to use git and github. This lead me to the realization that in DVCS, the centralized authority came from the one repository that the official builds were generated from. The other repository clones are simply sandboxes and don’t need to be controlled by the buildmaster.

However, github is much more than a git hosting service. It lets you form a community thats focused on the code. It lets you host downloads and have a project wiki so it can replace a site like sourceforge. Unlike sourceforge, it puts the repository at central stage. We here at justaprogrammer like github so much, we setup a github organization to host our open source projects.

Codeplex (http://www.codeplex.comMy Profile)

Between codeplex and Github, I have pretty much written off sourceforge. I think there is plenty wrong with codeplex, but its been getting better. For example, their SVN endpoints for their TFS repositories perform better than they used to. Also, the fact that they support, and sponsor, the DVCS Mecurial is great. Although I’ve not used it myself yet, it seems that you can do a one button clone of a codeplex project that uses Mercurial for SCM a la github’s clone feature.

Now the one obvious problem with github is that it is windows centric. I would not host anything on it that was not primarily a windows or .NET application.

Ohloh (http://www.ohloh.netMy Profile)

This is the only site on my 2007 list that stood the test of time. Ohloh is a unique site. It is a combination of social networking and open source software metrics. If you write open source software you can list it on the site, and have it scan your version control repository. It will report metrics about your software. It will also generate metrics about the lines of code you write across all open source projects on the site. You can also list software you use, and give other users on the site “kudos” if you enjoy their work. Finally, all these metrics are used to sort every user on the site by a single ranking system. The exact formula is a secret like those used to calculate credit scores.

AlternativeTo (http://www.alternativeto.netMy Profile)

This user supplied content site lets you search for alternatives to any program for any operating system. Its awesome for two reasons. First of all, site membership is OpenId based. Secondly, it distinguishes between freeware and open source. As you can tell if you look at my profile, I contribute to the site as well as use it. The majority of the software on it is desktop software, but the list of server software is growing as well.

Conclusion

My list has changed quite a bit in three years. Only one site remained on it, Ohloh. This shows that Open Source and the web have evolved in 3 years. I can’t wait to revisit this site in 2011. Until then I invite you, the reader to share the sites you enjoy in the comments below.

The great open source bounty experiment

Like Joel Atwood, I am a huge fan of paying for software, especially donating to OSS projects. I am also a fan of contributing patches to open source projects I use. Usually, my monetary donations are for projects I’ve used for years as a thank you for the value rendered to me by them. I have also offered money in the past in exchange for the implementation of feature requests. Sometimes my features were implemented, but my money has never been accepted. I am conducting an experiment that will hopefully change this. However, first some backstory.

The Backstory

When I began my current position as a “backend developer” for a Madison Avenue ad firm, I found myself one of two de-facto sysadmins for a Windows 2008 colo server. This server had a comercial software product installed on it called WinSSHD. We mainly used this product for its SFTP capabilities to publish websites to the server. However, WinSSHD is a fully featured ssh daemon, so I can ssh to my Windows box with putty and get a command prompt. From there, I can execute windows shell commands, or run vim, sqlcmd or powershell. In other words, I can administer my windows box in a civilized manner, or at least in a manner that my unix tendencies consider civilized.

However, all was not perfect, as is always the case with software.  I found an obscure bug that was quickly fixed, then I found two bugs that were actually protocol limitations. The first was you had to hit escape twice to enter command mode in my beloved vim, and the second was that function keys would not work, rendering my beloved farmanager useless.

BitVise, the makers of WinSSHD, offers a solution to this problem. That solution is to use their ssh client, Tunnlier. It implements a propietary terminal protocol they included in WinSSHD called bvterm. However, I want to use my beloved putty as the client. So I talked to bitvise and I talked to Simon Tatham, the maintainer of putty. Bitvise published bvterm on the spec page, and Simon took a look at the protocol. Simon said it would take some work, but he was supportive of someone else doing that work.

The Experiment

So the next step seemed obvious to me , setup a bounty, put up some money, and promote the hell out of it. I selected FossFactory as my bounty host. I made an account, registered my project, and put up $200. Simon has been very gracious in reviewing my bounty proposal, and clarifying his requirements for accepting this feature into putty.

So consider this blog post step one of promoting the hell out of it. I’ll be promoting it through as many channels as I think effective, and updating the justaprogrammer readership on the progress of my experiment.

Azure+MongoDb: Having my mind blown at Mongo Boston

Update: Originally the Mongo Boston talk on Azure was supposed to be given by David Makogon (blog) (twitter). He talks about the session and some upcoming articles he will write in this post.

I was at the thoroughly awesome Mongo Boston conference at the Micrsoft NERD Center this weekend. I had a great time at the conference, as well as the surrounding activities. Of all the talks during the conference, one stood out. It was given by Mark Eisenberg who does sales for Microsoft Azure. That talk was on running MongoDB in Azure.

For those who do not know, Azure is Microsoft’s cloud offering. While they offer you virtual hosts, its not a traditional VM slice offering. You don’t get to run processes with administrative access, and you don’t get RDP access.

A few things stood out about this talk. First, it was a well executed “initial conversation” sales pitch. However, it was aimed perfectly at the audience in the room: programmers, architects, and technical decision makers. Mark knew his stuff. I asked some pretty deep technical questions, and got actual answers. It was also refreshing to hear, “its probably better to use Azure to write new apps than to port existing apps.” Having a salesman set expectations so frankly is unfortunately unusual in the IT industry.

The second thing that stood out was how you run a standalone exe like mongod.exe on Azure. Since you do not have administrative access to the machine, you cannot deploy via MSI, and you cannot run in the context of a windows service. The mongod process is basically running in a command prompt on a console you don’t have access to. Also, you cannot create different users to run different processes. The assumption, since this is the cloud, is that you spin up a new instance for each process. To be quite frank, I found this quite appalling at first. I spent a good chunk of my early career doing helpdesk and later system administration for a small ISP. Although titularly I was in charge of Unix and iSeries machines, I helped out on the windows side of the shop as well. Sometimes we had to run windows apps on the console of a server, requiring that a user was always logged into the console of that server. Knowing first hand the problems this caused, I declared a crusade against such programs. Also, this means all the windows improvements I contributed to mongo, windows service related improvements, served no purpose in the cloud.

Now, I’ve always been very dogmatic about my development and operations practices, so I’m still adjusting to what a more cool headed developer would accept instantly. However, my emotions will eventually come to accept what my intellect knows to be true. The cloud is here, I can get on it, or become the best buggy whip manufacturer there ever was.

The third thing that stood out had very little to do with the specifics of mongod and Azure. While its quite obvious Microsoft wants you to develop for Azure using .NET, they care about properly supporting all the third party technologies that Azure supports. I felt more like I was being sold by Lou Gerstner era IBM, than modern day Balmer lead Microsoft. Azure is being sold as a service. While Microsoft naturally wants to supplement that with the sale of their software products, they mainly want you to run your software on their platform. The threat of vendor lock-in is still there, but it always is on any platform.

My new favorite tool, the Far File manager

Strange things excite me, things even other programmers would consider strange to be excited about. Every once in a while, something comes along that excites me in multiple ways. One of those things is the orthodox file manager, Far.

The far manager was developed by Eugene Roshal, who created WinRar. It was originally shareware, but has recently been made open source.

I’ve known about Far for a while. I first discovered it looking for a file manager that could handle a directory with thousands of files at a job where I was doing ETL operations. It was installed on my machine by a developer of ReSharper who was troubleshooting a very strange bug on my system remotely. Also I worked in a company where several Russian’s used it daily.

However, while I toyed with it several times, I never took the time to really get to know it until a few weeks ago. By really getting to know it I meant installing several plugins, and experiencing the “theres a plugin for that” joy several times over.

Overview

Far is a command line based file manager with two columns and a command prompt. The command prompt behaves similar to cmd.exe, but not exactly. For example, in a standard command prompt typing “cd e:foo” whike you are on the c: drive will change the current directory on the E: drive but you still have to type e: to get to that folder. In Far typing cd e:foo does both. One other difference, that bothered my unix sensibilities, is “cd ~” changes to the folder that far is installed to. In unix this changes to the users home directory so I was expecting similar behavior. There are probably many other useful command line enhancements that I’ve yet to discover yet as well.

Far Screenshot
Far File Manager

Installing Far and plugins.

Far is available on http://farmanager.com. There is a 1.7 and 2.0 version. The 2.0 version supports unicode asnd the 1.7 version us the legacy ascii version. You can get 64 bit binaries for both versions. You can install far via an MSI, or a 7-zip archive.

After you install Far, you will want to install several plugins. I will highlight my favorite ones here. ote that while binaries compiled against the far 1.7 SDK will work with Far 2.0, 32 bit plugins will not work with 64 bit far. For this reason you probably want to install the 32 bit version of Far, unless you are like me and like pain.

Except where mentioned, these plugins can either be found at the plugring site, or for 64 bit binaries, the evil programmers google code project. I will go through some of the plugins I like below.

7-Zip

As far as I know, there is no 64 bit version of this available yet. However, I probably just haven’t found it yet. If you install far without this plugin, you can browse the contents of most archives in Far. However, you will not be able to copy files out of them. I’ve yet to try getting the built-in archive support full working. However, with all the archives supported by 7-zip, I’m in no hurry to.

Event Viewer

This works like a text mode only version of eventvwr.exe. I’ve yet to find a truly compelling case to use it over the standar gui version. However, its nice to have an alternative tool for any job.

Service Manager

This is really convenient. It lists drivers and services temperately. It also allows you to edit things you can’t in the mmc snap-in, such as the path to the binary the service executes. Finally, it lets you create a new service. You rarely need to do this, but when you do its hard to find a good tool for the job.

User Manager

This one is really useful, especially on XP Home edition. Functionality is similar to the “Local Users and Groups” section of the Computer Management MMC snap-in on XP Pro. The thing I really love about it is you can set the “User must change password at next logon” flag on a user in XP Home Edition. I spent the good part of a train ride from Penn Station to Islip on Friday failing to achieve this in other ways. I’m not saying its the only way this task can be done. I’m just saying that this plugin will let me accomplish this task easily.

User Must Change Password At Next Logon

WinSCP

The arbitrariness of alphabetical order has put what is perhaps the most useful plugin last. There is a GUI scp/sftp client for windows called WinSCP. The author also made a Far plug-in based on the same code.

This plug-in, along with the 7-zip one, also take advantage of one of the most powerful intrinsic features of Far. With Far, you can copy any file from one panel to another, regardless of whether the panels contain a local folder, a unc path, the inside of an archive, or a sftp folder. Because of this, Far is a great tool for moving files to and from remote servers.

Conclusion

Far is a great file manager, and I will spend more time getting to know it. I think all programmers and sys-admins that work with Windows should get familiar with it as well.

CoApp: Open Source Package Manager for Windows

As I mentioned before, I am a big fan of msi installers on windows. So I was really excited to see Garrett Serack announce an OSS package management system called CoApp that he has been authorized to work full time on.

In my point of view, Garrett really gets it. I’m hoping as a side effect of this project, WiX will get all sorts of dependency handling improvements.

I’ll be watching how this develops very closely.

Trouble building PHP on Windows

Update: It seems that the facts presented to me in the initial bug report are not correct. I will be revising this article after the facts are settled. For now read the comments.

It all started with a simple bug encountered while trying to get PHP and WCF to play nice. Before you know it I was attempting to compile PHP on windows myself. That’s when I realized how deep the rabbit hole really goes.

These days I program in PHP and .NET for a living. In a past life I was a unix admin for small ISP where most of the internal unix infrastructure was FreeBSD while the managed customers tended to run Redhat.  Due to the unique path of my IT career, I usually don’t have a problem compiling open source software primarily targeted for unix on windows. PHP has proven to be a bit of an exception. However, with a little struggle, I got it to compile.

In this case the crux of the struggle was not a lack of documentation, but documentation outdated to the point of being wrong. This is perhaps the one exception to the rule postulated by Dick Brandon, “Documentation is like sex . . . when it is good, it is very, very good; and when it is bad, it is better than nothing.” Thankfully, Pierre of libgd fame pointed me in the right direction on the mailing list. So being a good netizen, I submitted a bug report so that someone with commit access to the php source repo could straighten the mess out. This was the response I received:

We don’t understand the build requirements or system.

You have to ask the Microsoft guys to update that file.
http://no.php.net/manual/en/install.windows.building.php was one of our
best Windows know-how (not-microsoft-employee) guy shot at documenting
the process, but the feedback he got from Microsoft employees was “this
is crap. its all wrong”.

Sorry, we simply do not know how to do this.

That was a little disheartening. I asked them to mark the readme file as outdated, and I asked them how to contact Microsoft. This was the response I received:

Updated the file to say its outdated.

As for contacting the Microsoft guys, try surfing around on
http://windows.php.net

We have tried multiple times to get these docs updated, with no luck so
far, and like I said; our last attempt was shot down and they wanted
those docs to be reverted.

I’m sorry, you are simply on your own here.

So it seems my only resort is to blog about it and hope someone from Microsoft is in earshot. If you care about PHP on windows, spread the word. Spread this article with twitter, digg, reddit, or just plain old email. If you have the ear of anyone in Microsoft give it a bend. I’ve never attempted blogger activism like this, but I don’t know what else to do. I much prefer to fix problems myself than delegating or inspiring. However, this is one case where I need to “have a little help from my friends.” I don’t even know what Microsoft finds wrong with the proposed updates to the documentation, so submitting updated documentation seems pointless.

Open Source on Windows

Today I attended LIPHP. While I began attending LIPHP since I was programming in PHP at the time, I am mostly a .NET programmer these days. The fact that I have recently inherited an abandoned OSS projet written in .NET, further entrenches me as an open source .NET programmer.

I was told by a fellow LIPHP member that I cannot truely write open source applications in .NET, or something to that effect. Naturally, this is where I attempt to disprove that.

If we study the history of open source and free software, we can see a gradual evolution marked by periods of puncuated equilibrium. RMS created the free software foundation to recreate a software ecosystem that he believed existed in the software industry earlier in his career. Linus Torvald releases a kernel that does all the things minix would not do. ESR coined the term ope source to reject the Free Software Foundation’s idealism in favor of pragmatism. Microsoft releases the WiX project on sourceforge and eventualyl launches codeplex. Java becomes more and more open source.

During this time, compromises had to be made for ideal situations to be realized. pieces of propietary unix had to be recreated piece by piece and released as open source. First the basic unix shell commands, followed by things like the text editor vi. Some peices fell out of favor as other alternatives developed. The linux kernel as opposed to the hurd. Open sourced sun Java code replacing reversed engineered clones.

Somewhere along the line the pc revolution and Microsoft happened. Unix is now completely open sourced. Sun has open sourced most of its code, including newly developed code such as ZFS and dtrace. But no one uses unix or its clones. They use Microsoft Windows now.

Of course that previous statement must be qualified. There is a sizable minority of desktops running some form of unix. Mainframes still exist, and unix has a strong server installation base. However, Microsoft has a dominante share of the desktop at the moment, and a good share of the server market.

So where does open source fit in in the Microsoft world. Well first of all, many opens source applications written for unix have been ported to windows. Secondly, many open source apps have been written primarally targeting windows. This much is obvious, but does nothing to counter the claims that my .NET code is any less open source than open source code that runs on unix.

So how do I counter his claims. First of all I can point out WINE and REACTOS. Wine allows you to run windows applications on linux. Its good enough these days to run World of Warcraft and internet explorer. It can also run important, boring business apps, but those two applications demonstrate the true power of Wine. ReactOS is a windows NT clone. It is buggy and development is slow. However, quality is continually improving, and while windows is a moving target, it has several advantages. First of all as windows matures, it adds few new core feature. Secondly, ReactOS uses Wine for its usermode dlls. Most Reactos programmers concentrate on kernel development.

Secondly I can point to Mono, the .NET implementation that runs on Windows and unix. Now in my particular cases, I write .NET apps that would be hard to port to mono, but not impossible.

Thirdly, I can point to the fact that users of my software gain the utility benifits of open source. While they have to invest in the sunk costs of the Windows OS, I avoid them specific other expenses. At the moment these are Visual Studio, Microsoft Access, and QueueExplorer.  Certainly I can function with more “pure” alternatives on windows. In fact I have in the past and continue to attempt to. However, at times external factors (those that pay me) compel me to use a Microsoft stack. Therefore, I spend some of my free time writing open source solutions that make it easier to support the Microsoft stack. In other words I scratch an itch.

These are a Few of My Favorite Open Source Sites

I’m a big fan of sites about open source. Especially those that categorize, index, and report information about them. I’ve probably spent more time marketing my pet Open Source project PlaneDisaster.NET on these sites then writing code for it. So I’ve compiled this list of sites I use.

SourceForge (http://www.sourceforge.net)

The true power of open source is allowing anyone to contribute your project. In order to have a successful open source projects, you need to build a community where users and contributors can collaborate. This means a source code repository, forums, bug tracking, a wiki, project webspace, and of course a system of mirrors to download project releases. One place that allows you to do all that for free is SourceForge. In recent years new players have entered the market including Microsoft CodePlex and Google Code. However, SourceForge is still the most popular.

Freshmeat.NET (http://www.freshmeat.net)

While Sourceforge will host anyones project, few released are handpicked to appear on their frontpage. The site that fills that void is FreshMeat. If you release a new version of your software, you can notify FreshMeat, and the announcement will appear on the SourceForge home page. Unfortunately for myself, it does not accept windows only software. They are a site that lists unix software, not open source software. This means that they will list closed source souftware, but not windows only open source software. Despite this policy, they will list open source operating systems, and you can specify that your software will work on windows if it also happens to have a version that works on some unix variant. Finally there is a special category for OSX software.

ohloh (http://www.ohloh.net)

Ohloh is a unique site. It is a combination of social networking and open source software metrics. If you write open source software you can list it on the site, and have it scan your version control repository. It will report metrics about your software. It will also generate metrics about the lines of code you write across all open source projects on the site. You can also list software you use, and give other users on the site “kudos” if you enjoy their work. Finally, all these metrics are used to sort every user on the site by a single ranking system. The exact formula is a secret like those used to calculate credit scores.

koders (http://www.koders.com)

A simple code search engine. I can honestly say I have yet to find source code with the site that I’ve used. However, I think the idea has potential. While there are better forms of code reuse such as static and shared libraries, sometimes you need a small snippet of code.

osalt Open Source as Alternative (http://www.osalt.com/)

This is a strange site. The way the site is supposed to work is that you select a piece of commercial software listed on the site and it lists equivalent open source software. While they have a form on the site for suggesting software there site, the content is highly editorialized. The content on most other sites on this list is more directly user generated. I think a more open format would lead to a site with more information. However, until a more open competing site opens up, this is best in breed by virtual of being the only one of its breed.

Conclusion

These are my favorite sites. Feel free to list yours in the comments. If I get enough feedback I will post a follow up article.