This is a draft of a post that will appear on http://blog.openframeworks.cc/ when we release 0.9.0. It's meant to give a high level overview of some of the biggest changes since 0.8.4, and say thanks to the people who made it happen. The low-level details will still be added to the changelog.
This is one of the biggest openFrameworks releases to date, and will probably be one of the biggest ever as we move to a more regular release cycle.
Some stats: The previous version, 0.8.4, was released September 19, 2014, and the last major version bump 0.8.0 was released August 9, 2013. The 0.9.0 Milestone shows 250+ closed issues, 100+ closed PRs, and almost 3000 commits since the last release. Development has been lead by Arturo Castro (arturoc), with contributions from approximately 100 people.
One of the hard parts of getting started with C++ is building libraries. One reason OF was created was to make libraries more accessible, and allow people to easily work with different kinds of media. So we precompile libraries for all the platforms we use. But as the number of platforms has increased the number of libraries we need to compile has also increased, which means that when we want to update a library we have to carefully recompile it for all the different platforms.
To automate this process, in 2013 Dan Wilcox developed a tool called Apothecary, with the support of the Frank-Ratchye STUDIO for Creative Inquiry at CMU. Apothecary allows us to keep track of all the different repositories, build flags, and patches we make to different libraries in order to get them all building and running for different platforms. Then when we need to update a library to get the latest features, there's less repetitive work, and we don't need to track down the one person who knew how to build that library.
With 0.9.0 we've integrated Apothecary into the OF workflow by writing dozens of "formulas" (shell scripts) that describe how to build all the libraries that OF uses on almost every platform.
C++11, and from Poco to Boost
With 0.9.0 we are introducing C++11 support for all platforms, and switching from Poco to a combination of C++11 and Boost for internal code. Poco will still be shipped with OF to avoid breaking code that relies on it.
C++ has historically come with a very bare-bones set of utilities. If you wanted to use regular expressions, work with cross-platform file paths, do networking, or create cross-platform threads, you either wrote it yourself or found a library that implements these features. In early versions of OF, the answer was to implement it ourself: one of the older addons was called ofxDirList, and it was a DIY approach to listing the files in a directory that worked across systems. We thought that having fewer libraries would make OF less complicated.
Over time, we realized it would be better to focus on the things that made OF unique rather than re-inventing and debugging the same low-level features. The options were Poco or Boost, and we went with Poco because it wasn't as monolithic, and felt more approachable. In the last few years, C++11, a new version of C++ has become widely adopted, and many of its features have come from Boost. This means now we can replace some Poco code with standard functions, and OF can go back to being "less complicated". For things that aren't standardized yet, we've replaced Poco with Boost to make it easy to transition when those Boost features are eventually adopted.
openFrameworks now supports 64-bit compilation on OS X, which meant removing 32-bit only QuickTime video playback and capture code, and rebuilding all the OS X libraries. This was also an essential change to get C++11 available on OS X.
Travis-CI and appveyor
Zach Lieberman has rewritten the backend command-line project generator and the frontend GUI. It now has the ability to update project files for existing projects, something that's been possible with obscure tools for some time but hadn't been packaged into a more accessible experience. The GUI UX is still under development, but is being released with 0.9.0 as it provides more functionality than the previous project generator.
While ofxAddons is on a different cycle than the openFrameworks codebase, some big changes have happened since the last release. Most importantly, it loads a lot faster and is much easier to navigate. All these changes were made by James Hughes (jamezilla) earlier this year.
Insert before / after screenshots here.
ongoing / still in development
Changing the language of "section leaders" to "teams", starting to reach out to studios for partnerships, added code of conduct.
Full List of Contributors to 0.9.0
Aaron Freedman, Abhi, Adam Carlucci, AmnonOwed, Andreas Müller, Andy Duplain, Arthur Carabott, arturo castro, Bo Brinkman, Cameron Browning, Carsten Schwede, Charles Veasey, Christoph Buchner, Christoph Mauerhofer, Christopher Baker, Constantine Tarasenkov, Daan de Lange, Damian Stewart, Damien Lespiau, Dan Moore, Dan Wilcox, Daniel Rosser, Darío Hereñú, dmytroshp, Dominic Amato, elaye, Elie Zananiri, Elliot Woods, eranws, Felix Dubrownik, Felix Lange, Gal Sasson, Gorka Cortazar, Graham Reeves, Grégory DAVID, hardmanko, Hubris, Ingo Randolf, ISHII 2bit, Jakob Schindegger, jamet, Jason Knight, Jason Van Cleave, Jean-Pierre Mouilleseaux, Johan Bichel Lindegaard, Jonas Jongejan, Jonathan Dahan, Joshua Noble, julianadenauer, kentaroid, Kevin Pouget, Kojo Kumah, Kyle McDonald, Lennart Melzer, Liam Staskawicz, Lorenzo Mancini, lukasz karluk, László Kustra, Léo Colombaro, manish-juneja, Marcel Ruegenberg, Mark Hintz, Matt Felsen, Matt Felsen, Mattijs Kneppers, Memo Akten, Michael Hadley, Michael Hansen, NickHardeman, noyanc, nykwil, ofTheo, ofZach, Patrick Fürst, Pelayo Méndez, Petros Kataras, Philip Whitfield, Piotr Tarasewicz, random, rezaali, Riccardo Canalicchio, Robert Xiao, Sam Taylor, Sergio Basurco, skimon, Stefano, Sterling Crispin, Tal Lavi, Theodore Watson, Thomas Geissl, Tim Gfrerer, Timon Skerutsch, Timothy Scaffidi, Tom Butterworth, tpltnt, trentbrooks, Tristan Fisher, Valentino Dell'Aica, Vincent Donnefort, wronex
Check the number of commits since a tag: git log 0.8.4..master --pretty=oneline | wc -l