I've been working on a huuuuge project in the financial industry (> 100.000 man days, several hundred millions euros budget) for almost 3 three years, from early 2003 to late 2005 and we used a lot of open source software there. Let me list a few (at least a few critical ones):
- Maven 1.0 beta 8 - for the build of a decent amount of LOC (from the start of the project)
- Hibernate 2 - we needed lazy loading, L2 cache (introduced in 2004)
- EHCache - for the second level cache (we implemented and contributed JMS replication after too much fight with JGroups)
- Quartz - for job scheduling and as parallelization framework
- etc
This application will live for the next 15+ years, more than many products vendors. Opensource software was thus perceived kinda less risky than many commercial alternatives (when they even existed). Money was not really a decision factor, we just wanted the best things we could get plus some confidence that the products would be supported or maintainable in several years. The choices above met these criteria.
Some benefits:
- These pieces were doing their job.
- No time wasted at reinventing them (no Not Invented Here syndrome).
- These pieces of software are widely used so well tested/debugged.
- Maintenance is mostly done by... the community.
- We were able to fix things ourselves.
- The code will be there as long as needed (in the project source repository).
Some of these moves were audacious for a financial organization but so is this organization and they're not #1 by accident. Their leaders (note that I didn't say managers) were just great, they had some real entrepreneurship spirit, took their responsibilities (vs CYA or someone to blame) and they got the right people, trusted them, empowered them (if you want to build a cathedral, you get cathedral builders, not stone cutters). What they created was the best workplace I've known until now, my greatest experience.