RSpec began life in 2005 as an experiment by Steven Baker, with early contributions from Dave Astels and Aslak Hellesøy. David Chelimsky joined the team that summer, and accepted leadership of the project in 2006. David also built rspec-rails, which provided tight integration with Ruby on Rails.
RSpec 1.0 was released in May of 2007, and included many of the features that are still present in RSpec today. RSpec 1's runner had many great features but had reached a point where it was slow and hard to continue evolving it.
In late 2008, Chad Humphries built Micronaut, a new spec runner, to address these problems. Micronaut also included a new metadata system that provided much greater flexibility than RSpec 1 had.
In early 2010, after the release of RSpec 1.3, David and Chad began working on RSpec 2. The project got split into separate, modular pieces that could be used individually or all together. Micronaut was used as the basis of rspec-core, the new runner. RSpec 2 was released in October 2010 after nearly a year of effort.
In November 2012, after leading the project for 6 years, David decided to move on to other things. He asked Myron Marston to take over as lead RSpec maintainer and Andy Lindeman to take over as lead rspec-rails maintainer.
Work on RSpec 3 began in July 2013 and it was released in June 2014. RSpec 3 was a bit of a "spring cleaning" for RSpec, removing much cruft (some of which dated back to RSpec 1!). It also provided verifying doubles, composable matchers, a new syntax that allows RSpec to be used with no monkey patching, and many other new features. Andy Lindeman retired from the team and asked Aaron Kromer to take over as rspec-rails maintainer.
Today, RSpec continues to improve and evolve thanks to the input of a large community and the work of hundreds of contributors.