(You may also be interested in my post Free Software and Services for Open Source Projects.)

In a recent blog post, Scott Hanselman suggested:

We don’t sing contributor’s praises for their hard work and success while their software works, instead we wait until a single line (albeit one of the more important lines) fails to live up to expectations.

I don’t completely agree with this; I often see people praising open source software (and I didn’t see anyone really pointing fingers over Heartbleed), but I do think the general point that open source software is taken for granted and under-appreciated is valid.

This got me thinking about some of the open source software I use; some as part of my job delivering commercial applications and some at home when I’m just playing around. I thought it’d be good to blog a list of my favourites; maybe it’ll help others discover them. Much of it is pretty well known (some even from MS/Google), but I thought I’d include all my favourite stuff for completeness.

I may have missed some; but there’s a lot of great stuff out there. If I remember anything cool Ive missed, I’ll try and add it in.

If you have a blog (or even Google+ ;-)) I invite you to do the same!

(In alphabetical order; with no grouping, and often their own marketing speak!)

  • 7-Zip - A file archiver with a high compression ratio. There’s a portable version I use to avoid having extra stuff installed, but still allowing the higher compression of .7z when required.
  • AngularJS - A toolset for building the framework most suited to your application development. I’m currently playing around with this prototyping some ideas for a possible vNext of a big project at work; I think the future of web apps is (sadly ;)) in client-side JavaScript with API backends.
  • Bootstrap - A popular front-end framework for developing responsive, mobile first projects on the web. This is great for getting something looking decent very quickly, especially for non-designers (programmers!).
  • Chosen - A jQuery plugin that makes long, unwieldy select boxes much more user-friendly. These look really nice; especially compared against the default selects in some of the latest browser versions!
  • ELMAH - An application-wide error logging facility.
  • F# - A functional-first programming language that interops relatively nicely with .NET. This could be the key to getting current-.NET devs interested more in functional ideas.
  • FAKE - A cross platform build automation system (F# Make). Haven’t used this seriously yet; but looking for someone to replace all the built steps on our build server with a single script that can be run on dev machines to give a like-for-like build.
  • Glimpse - Inspects web requests as they happen, providing insights and tooling that reduce debugging time.
  • Jasmine - A nice behavior-driven development framework for testing JavaScript code.
  • Jekyll - A blog-aware, static-site generator (powering this blog for free, via GitHub Pages!)
  • Karma - JavaScript test runner that executes tests in multiple browsers and gives instant feedback (now with Visual Studio integration ;)).
  • Knockout - A JavaScript library that helps create rich, responsive display and editor user interfaces using two-way data-binding. This helps de-couple JavaScript from the DOM, making things much simpler!
  • Mercurial - A distributed source control management tool. This is much easier IMO to use than Git; though sadly I don’t think I can convicne the masses ;)
  • Node.js - A platform built on Chrome’s V8 JavaScript runtime for building fast, scalable network applications. Great package manager, and really useful for non-browser based JS execution.
  • NuGet - A package manager for the Microsoft development platform including .NET. This is basically the first place I look for any third party library these days.
  • Reactive Extensions - A library for composing async/event-based programs using observable sequences and LINQ-style query operators.
  • remark - A simple, in-browser, Markdown-driven slideshow tool targeted at people who know their way around HTML and CSS (I blogged more about this yesterday).
  • Selenium - Automates browsers to aid testing of web applications. If we’re going to start writing more client-side JavaScript for our web apps; we need to get better at testing them!
  • SignalR - A library for ASP.NET developers that makes it incredibly simple to add real-time web functionality to applications.
  • StructureMap - A dependency injection / inversion of control tool for .NET.
  • TickSpec - A lightweight F# BDD framework.
  • TypeScript - A typed superset of JavaScript that compiles to plain JavaScript.
  • Web API - A framework that makes it easy to build HTTP services that reach a broad range of clients, including browsers and mobile devices.
  • xUnit - A community-focused unit testing tool for the .NET Framework.