Build vs. Maintenance – OSS vs. MS

Like anyone reading this dross, I spend my days getting a monitor tan.

Unlike most geeks, however, I don’t see the whole OSS vs. MS thing as a religion. Software are tools; use the proper tool for the proper job (if possible; often not but that’s a whole ‘nother entry).

I was thinking about this recently, having finished up quick Perl and ColdFusion demos for (different) clients.

With the work I’ve done and I’ve seen – and there has been more than a fair amount of each – I am starting to see a general pattern for the use of OSS vs. MS technologies. This is a great oversimplification, but bear with me.

I’m seeing the following:

  • MS tools/technologies: Used with tech groups that are not as skilled technologically; used to quickly launch applications/build sites for clients.
  • OSS tools/technologies: Used by tech-savvy and tech-skilled groups; tools used to simplify ongoing project work and to automate maintenance tasks (backups, weblog parsing…)

Yes, let the flames begin!

OK, let’s defend what I’ve said:

  • Skill level: Some users of MS products are people that can kick my tech butt all over the kernel; however, you don’t have to grok server/DB/code innards to use MS products. That’s part of their appeal. Let’s take MS SQL Server as an example: Beyond queries/stored procs, all other tasks are GUI driven: Add user, create DTS, drop table etc. Wizards and clickable/right-clickable icons are all that’s needed to keep this (pretty damn good) DB running. If you really know what you’re doing, it makes a world of difference, but the point is you don’t have to know what you’re doing. Ditto for IIS, InterDev and so on. On the other hand, even setting up Apache on Linux can be daunting – you might even have to use vi to manually edit a httpd.conf file?? What does that even mean?? With OSS, you pretty much have to know what you’re doing – there is the man file, but you can’t right-click on anything at the command line to get a nice dialog box with help. While this required knowledge is a good thing in most cases, it’s also a barrier to entry – a bad thing.
  • Use: Launch: If you want to get a database-driven site launched – say, for a demo – in the fastest time, I still maintain ColdFusion is the best (I’m lumping this in with MS, for this example ONLY – it’s a no-brainer tool). It eliminates all the database connectivity issues for you, and – in conjunction with MS SQL Server – allows you to bang a site out in record time. Also, there is the hosting issue: If you run on an NT server, it will support ASP; Unix sites will not necessarily support PHP (for example). Launching an OSS site is usually a little more complex: Often (usually) have to build the DB tables with scripts (not a GUI!), have to deal with the differences between, say, Perl and PHP as far as DBI is concerned and so on. Overall, slower. And if you go the Java route….way slower, be it servlets/EJB/JSP or some combo.
  • Use: Maintenance: As soon as you get into the maintenance mode – assuming there IS such a need/interest, OSS kicks MS butt all over the place. One word: Scripting. OSS is sorta based on this (CLI); MS is not (GUI). I run both NT (2000) and Linux boxes at home; all backups and other maintenance needs are handled where ever possible by Linux: Just more straightforward and flexible (Perl script, Bash shell script, flexible CRON…).
  • Caveats: Many caveats have been listed above; please note. Basically, this entry is to show how/why certain projects are begun in a given language (greatly simplified…). For demo or stuff that y0ou need to just launch and not extend much…duh! – Do it as easily as possible. If there will be a need/many needs to expand/extract/maintain the site, other tools – possibly complex – may be better suited. Again, this entry is a vast overview.

As noted above, this is a vast generalization, but I think it’s true.

And that doesn’t make either OSS or MS better/worse than the other.

And it doesn’t mean MS tools can’t be used for enterprise sites, or OSS is only for experts and so on. I’m just seeing trends…

The tool for the job, remember? I’m just seeing the job clearer now; before, I saw only the tools clearly.