This post is about customizing Microsoft .Net applications for clients. But first, I want to give some background on how my two software companies have thrived by providing customization through source code changes.
Both companies (Probe, an airline software company started in 1982 and TempWorks in 1994) offer their software products largely on an open-source basis. Open-source, contrary to conventional wisdom, does not necessarily mean free (as in beer), nor does it necessarily mean lacking copy protection or lacking certain modules for which the source is not provided. Instead, open-source connotes for me the ability of clients to largely modify a system to meet their needs through source code changes.
As such, Iberia Airlines has been able to use and modify my airline package almost 23 years with occasional upgrades and re-merging of difference files. It's not always a perfect system, but with good tools and good relationships, it's worked well. At TempWorks, we've been upgrading staffing companies in a similar fashion for 12 years.
Our competitors have tried (in vain) to differentiate themselves by saying that they can configure their software to meet different needs without source changes, but this amounts to a straw-man fallacy because all good software comes with the ability to configure. We just go the extra step in making relationships work through both configurability and open-source.
So what does this have to do with .Net? Two things. First, software systems, including our .Net products, are becoming more sophisticated, and it's no longer true that a guy with a beer and a Cobol compiler can make serious changes in the course of a one night stand. Second, Microsoft has stepped up to the plate to address this issue by providing customizability in other ways. Foremost among them is 'localization', a process that allows non-coding changes to alter both the appearance and behavior of an application.
In this video clip, I show how a site can customize our recently released scheduler product using localization: