Showing posts with label open source. Show all posts
Showing posts with label open source. Show all posts

Sunday, October 12, 2008

Open Source Saves Money!

Open source software is one of the primary areas where you can save a lot of money - mainly in license fees. Don't translate that to mean "free" though. True - the software itself may be free but in many cases you'll need a little bit higher level IT person to put it use. That can make it somewhat of a trade-off. In the long run and with the right IT staff, you'll see a big savings in your IT budget.

Here's a simple example. Using list prices from Microsoft's own site, I save about $1,000 per server by using Linux as my operating system instead of MS Windows 2003 Server. With close to 200 servers, that's $200,000. That's just the OS and doesn't include fees for CALs, terminal services, databases (with their own CALs), etc. Add in the constant upgrade cycle and it's easy to see a pretty good savings every two to three years (depending on how often you upgrade).

Here is another just to show this does not apply to only servers. Again, using list prices from Microsoft and also Corel, a commercial office suite has a typical price of $400 and $270 respectively. A highly compatible offering from OpenOffice is free. Put that on 100 user workstations and you still get free over a potential cost of $27,000 to $40,000. I do understand that with volume licensing it's likely not going to cost quite that much BUT, it's still more than zero.

Open Source Advantages
Besides having a significantly lower cost, open source has a lot of advantages. It's highly configurable and customizable (not necessarily the same thing), with the right skill set you can fix your own bugs or add additional functionality, you have the backing of a world-wide support network of experts, good documentation (usually), control of your systems and there is the feeling of community collaboration and contribution for the good of all. Let's expand on these briefly below but first, it's important to mention that many open source projects have commercial backers or even owners. For example: Red Hat backs Fedora Linux; Sun owns MySQL.

Configurable and Customizable
Most open source offerings are highly configurable. You want that web server to run on port 46123 - you can do it (not that you should). You want the file server to use central authentication, you can do that too. You want the office application to save everything as MS Office files - yep, not a problem either.

Customizing is similar. You can often replace logos, layouts, field names and similar to match your organization. You can make that helpdesk application look like you built it in house.

Fix it yourself
Since you have access to the source code, bug fixing can be done in house. Of course, you'll need to have someone who has the skillset to do so, but a common concern is whether or not bugs will get fixed in a timely manner or what happens if you come to depend on that software but it gets discontinued. Either way, there's always a do it yourself option. With commercial software, you don't have that option even if the product is discontinued.

World-wide support
Through forums, chat rooms, wikis and email, there is a world-wide network of support options. The open source community is very good at "giving back" by supporting each other. Usually you can submit bugs right to the developers and even participate in the community through testing, documentation and supporting others.

Documentation
I've found most open source software to have pretty good documentation (yet another way you can contribute). The is usually found on the source web site as html HowTo's or similar. In addition to that there are usually searchable forums, list servers (you can subscribe to) and similar.

Control
This should probably be listed as one of the first advantages. Most IT shops like to have control over their systems. It is what allows them to ensure consistency, reliability and control costs. With open source you are not mandated to vendor upgrades or even patches (yes - you should do this, but sometime there are good reasons not to). You may have something that works great on software version 1.2.3 but upgrading to version 2.3.4 might break something. It happens quite frequently. The vendor wants you to upgrade for several reasons - revenue (they get more) and support (they don't want to support old versions). Both reasons are valid. Afterall, they are in business to make money and older software gets harder and harder to support often at a cost that is not being recovered (since you didn't upgrade).

With opensource you have more freedom to delay upgrades or changes. You also can test things out a lot easier (meaning you don't have to convince the vendor that you need a 90 or 120 day eval). Control means you do things on your schedule and chances are high that there will be plenty of others doing the same. Support will still be available through that same network. Of course, if you hang on to something for ten years, you may find help rather sparse as each year goes by. Even in the open source world, things don't last forever.

Collaboration and Community
You're so busy keeping your own stuff going, who has time for collaboration with strangers? Well, no one said it had to be 40 hours a week. You'll find that this will be an off and on kind of thing unless you really want to become a dedicated supporter of open source (which, of course, is great). Some people do this a few hours a month or year - others do so for many hours a day. Either way, it's through this collaboratin that open source even exists. It's up to you if you want to be apart of it or not. The more everyone gives, the more all get back.

Confession: I haven't contributed near as much as I would have liked. My own contributions have been suttle in helping others with their own implementations of various software packages as well as contributing in the earlier days of Samba when they first implemented talking to ADS. I posted one of the early HowTo's on implementing Samba with ADS which is now very out of date, but helpful at the time.

Highly Useful Open Source Services
If you do even a simple search for open source software, you'll get back a ton of results. So, what's good? Here's a quick list of packages I've used and implemented on my company's network with a short summary and a web link.
  • Linux - This is a Unix-type operating system initially started by Linus Torvalds. There are many many flavors. My preferred (for longevity of the product) is one of the main stream flavors (called distros or distributions) such as Fedora or Debian. You'll find that there are hundreds, many of which only last a few years and then disappear from the "in-style" scene. You may notice that many distros are built on one of these "main" distros. They all have their strengths and weaknesses so research them before you pick one. Then stick to the one you like. It's easy to be swayed to the flavor of the month, but you're better off learning one distro really well and staying with that one. Note: Linux is a very good desktop operating system also. Your server distro and your desktop distro may not neccessarily be the same.
  • Samba (one of my favorites) - Windows file services using CIFS/SMB protocols. This replaces any of your windows files servers and can integrate into your Active Directory Domain. It works very well! The hard part here is figuring out your ACLs but that is well documented. I've got over 40TB (that's terabytes) of network storage using only Samba.
  • AoE - ATA over Ethernet which is similar to iSCSI. Although more of a protocol than software, it is now part of the kernel (a good thing) and allows you to address networked block devices as local storage services. This allows you to build your own SAN or NAS storage system. This is how my 40TB in Samba are addressed. We use Coraid devices for the physical storage arrays using RAID 5.
  • OpenOffice - A replacement for Microsoft or WordPerfect Office. It is very compatible (although not 100%) with MS Office (even the latest version). It has surprisingly opened old WordPerfect documents that I've received or found laying around. Most incompatibilites I've found are with highly complex documents (like newsletter layouts) and with complex Exel macros. Each iteration gets better (even the smaller updates) so this is one you'll want to update often. It's worth it.
  • Nagios - Is a host, service and network monitoring program. This is a great program to have monitor all of your network services (both internal and external). It will alert you via email or text messaging any time there is a hiccup in anything you have it watch. You can script it to take certain actions as well as set the timing for when you should get alerts. It can do escalations as well and is highly configurable. This is one of my most critical servers.
  • MRTG / Cacti - Both of these are network service graphing programs. You can set these up to track all kinds of statistics about your network, servers, services and even web pages. It's an invaluable tool for making sure things are working correctly but more than just being "up." We use this in conjunction with Nagios although on larger networks these should be on separate servers as both can be machine intensive. This is an essential tool for providing information to management regarding performance, uptime, availability, etc.
  • postgres / mysql - Both of these are open source databases. Highly functional, widely used with all of the things you would expect and need in a database system.
  • Slony - Database replication system. Can replicate DB's from one to many and includes support to do automatic failover.
  • Apache / Tomcat - Web services for both linux/unix and Windows NT. Replacement for IIS (unless you need IIS specific services such as ActiveX)
  • Helpdesk Software - there's quite an array of offereings here many of which are suitable for both an internal (employee/staff use) deployment as well as for your customer support team. A few I think are quite good include: OTRS and SugarCRM (also a commercial product) with full CRM functionality.
  • CVS / SVN - Version control software primarily used in the development of a software product. SVN is the successor to CVS (now deprecated) and handles binaries much better than CVS. Now, even multimedia products, such as those my company develops, can all keep source files in a central and common version control system. There are client applications for Windows, MAC and Linux desktops.
Hidden Costs
It's important to understand that free does not necessarily mean free lunch. It usually does mean there's no monetary payment for the software. You even get the source code if you want it. What's not free is your own time and effort to set it up and maintain it with related costs. These are often referred to as "soft costs." You're already paying your IT guy anyway so it's not like you will see an invoice for an expense. But there will be time and effort involved and you will still have hardware costs. Much of what I've experienced is that open source is no more difficult to setup than packaged software - especially when it comes to servers since these can be more complex than a simple desktop OS.

Licenses
There are still licenses involved in most cases, just no cost for it. Most of the licensing says you can use it however you want with no cost BUT if you change it in anyway or if you redistribute it you have to give back to the source. OK - that's two issues: first, if you change it, you should donate back the changes you made along with documentation and the purpose of the change; second, if you redistribute it, you cannot charge for it. Also, if you make changes and then redistribute other restrictions may apply. If you think about it, that's fair. Why should you profit from the work of someone else? This is an oversimplification so start here for more information and check the applicable license of the product involved.

Open Source Problems
The above sounds all rosy with that warm fuzzy feeling, but what's the trade off? There are a few and still worth it in most cases:
  • Compatibility - Open source software is not always 100% compatible, especially on desktop software. I love OpenOffice but I'll be the first to tell you that there can be problems. Most of the time they are rare. Server side software tends to have less of this because it's often backed by a very large development community or even a commercial entity. Also, some open source products are always playing catch-up. Samba is an example of that. Any time Microsoft releases an update or even a patch, it often breaks something in Samba. That community then has to scramble to release a fix. They are very good and fast at doing that but you still have to keep that in mind before you start applying patches to your domain servers. Testing is key. Test first to make sure it will work, then deploy. You should do that anyway!
  • Technical Support - In most cases you won't have a phone number to call to get help. On the bright side, you also won't have that per incident support cost or an annual maintenance contract to pay. So, how do you get help, especially if you've got a fire to put out? This is where it's important to keep up with relevant forums, list servers and similar to know what's going on. All of these tools will come in handy should you have a problem. You'll be surprised at how fast the community will get back to you. Also, in many cases, there are pay-for-support options when it comes to enterprise level applications. They may not always be from the source of the product but they're out there. Again, testing is key!
  • Not ready for the masses - As with any product, commercial or othewise, you should test it before implementing. Testing involves more than just setting it up to see if it works. Have some of your power users (meaning the ones that use it the hardest or the most) try it out. Put it through its paces. Not all software is ready for mass consumption. Pay attention to version numbers. Most producers will readily admit that if it's a less than 1.0 release, it's probably not ready for mass deployment no matter how tempting and usable the current release may appear.
  • Standardization - Again, regardless of what vendor or product you deploy, you should standardize on one thing. You don't want to give some users MS Office, others WordPerfect and others something else. They should all use the same thing and same version. On your network, you should do the same. If you settle on Fedora, then only use Fedora as your network server OS. Don't mix and match unless there is a good reason for it. This applies to OS'es, databases, office products, etc. There will be exceptions but keep them to a minimum.
If you've made it this far, hopefully you see by now how open source can help trim and even eliminate many of your IT expenses saving that budget for other things. I've found that generally speaking, everything is a trade off and there's no exception here. You need to decide for yourself where open source fits in to your environment and where it does not. I will say again, that it takes a pretty technical person, particularly on the server/network side, to deploy and maintain a large open source infrastructure. They especially have to be comfortable with the command line and a text editor). But, it will be worth it and even if you end up paying a higher salary (or salaries depending on how big your organization is), you will still save money in the long run. Also, open source does not mean "cheap." There is a lot of very good open source software out there that rivals and even excels over commercial offereings. Research it, test it and then deploy it. Maybe you'll even get a bonus for saving the company money while increasing reliability.

The Frugal IT Guy.