Launched in 1994 and headquartered in Amsterdam, Blender is free and open source 3D computer graphics software, with the aim of supporting the entirety of the 3D pipeline. With Blender, users can model, sculpt, texture, and shade 3D objects, or meshes — vertices connected by edges. These objects can then be rendered to a still image, or rigged and animated for export to a video file. The render results can be manipulated further in Blender’s image and video editors. Besides the three-dimensional space, Blender also supports 2D drawing and animation with its grease pencil tool. On top of this, Blender sports a Python scripting API. Blender itself is written in C, C++, and Python.
Blender founder Ton Roosendaal launched his own animation studio in 1989, called “NeoGeo” and which mainly focused on product visualization. According to Roosendaal, they could afford only one computer for animation work, but animation software costed another 30,000 guilders. He therefore decided to write his own in-house 3D tool during the evening hours, which eventually grew to become Blender. In 2002, after trying to market Blender, his investors got cold feet, and Roosendaal had to file for bankruptcy. To prevent his software — for which he naturally cared deeply at that point — from being taken hostage by the investors, Ton founded the Blender Foundation: through a “Free Blender” campaign, €100,000 were raised to continue Blender as an open source, community-driven project. The campaign succeeded and since then Blender is maintained under the GNU General Public License. It has grown immensely in popularity, with an estimated 1 to 3 million Blender users.1
In 2007, the Blender Foundation established an office, the Blender Institute.2 Through the institute, the goals of the Blender Foundation can be coordinated efficiently and core Blender developers are brought together. Every 1-2 years, an “open [creative] project”, usually a short film (though a feature film is planned), is created by the Blender Institute to showcase Blender’s abilities and stimulate its adaptation. At this time, 18 people are in full-time employment at the Blender Institute.
The team consists of:
- Bertan Konuralp
- Jaap Heijligers
- Jason Xie
- Emiel Bos
Blender, Blender by the Numbers. https://www.blender.org/press/blender-by-the-numbers-2019/. Last accessed on 2019-03-01. ↩
Blender aims to “build a free and open source complete 3D creation pipeline for artists and small teams, by publicly managed projects on blender.org”. That is, Blender wants to offer functionalies of the entire 3D creation pipeline. This “3D creation pipeline” refers to all the stages towards 3D pre-rendered or real-time imagery: modeling and/or sculpting, rigging, animation, simulation, rendering, compositing, motion tracking, and even video editing.
After having analyzed Blender’s context in the first essay and its codebase architecture in the second, we take a look at the quality of the codebase in this third essay. Because Blender is already over 25 years old, and because of the complicated nature of the functionality it aims to deliver, we initially expect Blender to have a large amount of technical debt — the degree of inaccessibility, or, the number of “deficiencies in internal quality that make it harder than it would ideally be to modify and extend the system further.” In order to ensure a certain code quality, Blender maintains some rules, such as “no code gets in trunk without documentation” (meaning that contributors have to document new functionality in the Blender Documentation), no new warnings are allowed, and code style has to remain consistent within files . Numerous other guidelines can be found at .
This essay will outline how and to what extent Blender is variable. This “software variability is the ability of a software system or artifact to be efficiently extended, changed, customised or configured for use in a particular context”, and this means we will take a look at how many different “instantiations” of Blender are possible, and how these are obtained. We start with identifying these variable components, also referred to as “features”, and modeling those in a feature model.