Learning from Blender and VLC

From Audacity Wiki
Jump to: navigation, search

Two other vibrant cross platform Open Source projects are:

  • Blender - 3D Model Creator, animator and film maker
  • VLC - Media player, with work in progress, since 2009, on a video editor

What can we learn from these projects?

Work in progress.



Contents

Popularity and Funding

  • Audacity has around 18 million downloads per year. It is mainly used on Windows. Audacity gets a minimal level of donations. Advertising on the website brings in enough for hosting and conferences, but not enough to pay for one full time developer. There are very occasional commercial software developer contracts to adapt Audacity to specific needs. Examples include a karaoke version and a custom version to distribute with a stethoscope.
  • Blender has about 4 million downloads per year. Website and downloads are free of advertising. There is an invite to donate on the splash screen. Most revenue for developer funding appears to be generated by the Dutch animation studio that develops and uses Blender as a tool. There is a development fund which is contributed to by industry, notably by Valve. There are occasional projects to make a film using Blender that are crowdfunded by pre-purchase of the DVD and that act as development sprints. For example funding to improve hair/fur was done this way. Funding from EU media fund, from artistic and tourism grants are also used in these films. There was also a Kickstarter that raised $42,000, not by Blender, but that involved import/export to Blender as a reached stretch goal.
  • VLC has around 80 million downloads per year. Website, but not download page, are free of advertising. A great deal of the project involves work on codecs, that is video encoders/decoders. There is significant interest from industry in the most popular of these, as reducing encoding time and increasing compression reduce compute and bandwidth requirements. Videolan raised £47,000 on Kickstarter to make a Metro/Windows 8 version of their user interface.

VLC has automatic update reminders which increase the download count.

VLC is now LGPL licensed. It used to be GPL. Significant work was done to track down past contributors or re-write to achieve this. In part this was to pave the way for an Android version which could be adapted, for a fee, for proprietary versions for OEMs.

Project Stats from OpenHub

Stats as of Sept 2014
Started Lines of Code Contributors
(in last 12 months)
Audacity 2001 235,000 (SVN) 10
Blender 2002 1,3000,000 (Git) 111
VLC 1999 640,000 (Git) 142

More, and up-to-date stats and data from here.

Audacity excludes 3rd party libraries in the stats we show in OpenHub, which may lead our stats to be lower than other projects. Also our use of SVN means we don't track indirect contributors such as contributions to non-Audacity build tools.

In spite of the distortion, both Blender and VLC appear to have significantly more contributors.


Visibility

Social Media

  • Audacity has around 6,000 Google+ followers. Main user interest is in announcements of releases and new features.
  • Blender has around 6.000 Google+ followers. Show-reels are popular.
  • VLC has around 18,000 Google+ followers.


Website

  • Audacity has a simple static website, uses a vanilla media wiki (here and for manual) and uses a phpBB forum for users.
  • Blender has a very slick mobile-phone optimised website built on Bootstrap. They used to use mediawiki with custom black-and-orange css.
  • VLC has a website built on jQuery and custom php.


User Experience

User Interface


Audacity User Interface Blender User Interface VLC User Interface


  • Audacity is often cited for being a simple to use yet powerful program.
    • A common new user problem is not knowing to select audio before applying an effect.
    • Users don't like the installation of LAME being a separate step.
    • The 'discoverability' principle helps our design.
  • Blender interface is very busy, full of parameters with often lots of scrolling.
    • A common new user problem is not knowing how to select (right click)
    • Andrew Price has constructive youTube comments on how the interface could be re-organised.
    • Learning keyboard shortcuts is pretty important to effective use.
  • VLC
    • VLMC video editor, is under development built on the same code base as VLC.

Andrew's Blender suggestions show some of the issues with a more complex GUI than Audacity. As we add real-time we will be getting more complex. We can probably avoid all of the problems he's pointed out, and some he is less aware of, (he assumes a wide screen format), by combining his suggestions with our new GUI innovations.


Development

Version Control

  • Audacity: SVN at Google Code.
  • Blender: Git for code, SVN for prebuilt libraries.
  • VLC: Git for code, SVN for prebuilt libraries.


Bugtracker amd Code Review

  • Audacity: Bugzilla installation. We'd like a separate system for enhancement requests. Rietveld for code review (used mostly for +1 or -1's rather than review)
  • Blender: Uses Phabricator for bug tracking, code review, buildbot, legal docs, wiki.
  • VLC: Uses Trac.

Phabricator looks good but nor compelling enough to change to it yet. Certainly I would stay with MediaWiki for manual and general docs (there is no import script from MediaWiki). The different components do not seem to communicate with each other. For code review we are better off with free google hosting than with maintaining our own.


Communication

  • Audacity: audacity-devel mailing list. Chatty rather than code focused. Plans and brainstorming is perfectly OK. No active IRC.
  • Blender: bf-commiters. Similar to audacity-devel with more trimming of messages.
  • VLC: Devel mailing list also contains the commit patches. There is also an IRC.

Far better to keep chat and commit messages in separate email lists.


Meet ups


AU14.JPG Vlan2014.jpg

  • Audacity: GSoC Mentor Summit in 2008 and 2009. AU14 unconference in Preston (about 18 people).
  • Blender:
  • VLC: Meet up at FosDem and 6 months later at Videolan unconference (about 60 people). Usually this is in Paris.


GSoC etc

  • Audacity: GSoC in 2008 and 2009. We did not get enough long term retention of students. Since 2009 more students, especially in poorer countries, are gaming the system - there are also more opportunities for the best students to get internships.
  • Blender: In GSoC 2005 to 2014. 7 Students in 2014. Some outstanding projects, such as the one on NURBs trimming.
  • VLC: (VideoLan, FFMPeg) was in GSoC from 2007 to 2011 and GCI in 2011. Banned by Google in 2011, and still causing recriminations amongst developers 3 years on. They are successfully doing a GSoC-like OPW women in code program with well organised welcome pack for new students.


Compiling

Compilation for different platforms
General Windows Linux
Audacity Advice is to compile and get examples from wxWidgets 2.8.12 working first. Production versions of Audacity need a custom setup.h that enables accessibility in wxWidgets. MSVC 2008. Project files provided. (now) has automake, but we are rethinking that because of automake hell.
Blender Uses CMake or Scons. MSVC 2013 recommended. They use the professional version, which can compile 64 bit and is usable for commercial projects.
  • Git head had two syntax errors, a missing comma in a function call, and a const const pointer that MSVC choked on and were easily fixed.
  • I needed to disable OpenCollada (easy via CMake interface).
  • Needed an extra rebuild of the install target to get a python debug dll in the right place.

Overall very painless to set up.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum
VLC Windows: Autotools based. Built cross-compiled to windows using Linux toolchain (gcc-minGW).
  • The recommended route is to use a VM such as VMWare Player rather than Cygwin or MinGW directly under windows. Ubuntu/Debian seems to be preferred.
  • The VM Ware Ubuntu will in turn at some point use a Wine environment.
  • VMWare Player needed a bios setting change to host a 64 bit Ubuntu.
  • Microsoft true type fonts support in wine had a crazy dos dialog in the terminal window (no doubt using curses) for an EULA to accept. The OK button was unclickable, and return did not work. The correct magic is to press tab to give the <OK> button focus.
  • The build fails because a prebuilt component needs strtok_r and only strtok_s is available under windows. This looks to be a long running saga with mingw tools. Rather than patch the tools, I'll in time go for the solution of rebuilding the prebuilt component with its own strtok_r (examples are available on the internet).

Painful set up. Probably will do real Linux build on a real linux box first and then get back to this.

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum

One take home from this is that it isn't helpful to provide a plethora of possible build methods that are partially OK. Far better to have one recommended route for Windows 7, one for Ubuntu Linux. Look below for possible combinations....

  • {Unicode or ANSI} , {Ubuntu or SuSE or RedHat or Linux-Mint or Win Xp or Win 7 or Win 8}, {32 bit or 64 bit}, {Cygwin or MinGW or MSVC2008 or MSVC2013 or gcc4.7 or Clang}, {.dll/.so or static}, {release or debug}, {Autoconf or scons or cmake}, {sh or bash}, {python 2.7 or python 3.0}, {native or linux-in-vmplayer or wine-in-linux}.

Cmake would be good for us, giving a native MSVC project. Documentation in this wiki on how to build should show the recommended combination that most developers use. e.g:

  • Windows: Win 7 64-bit, MSVC 2013, .dll, cmake.
  • Linux: Ubuntu 64, gcc 4.7, .so, cmake.

Then if there are other combinations which have been tried, we should list them with the name/email of the relevant developer. Then anyone interested in trying an unsupported combination can contact that person. The idea is that anyone building knows how well tried or robust a build will be. I particularly like that cmake makes it easy to build outside the source tree, which is not so for MSVC by default.


Structure

  • Audacity: Moving towards using plug-ins
  • Blender: Consists of bf_ (Blender foundation) and addons. Also extensive use of python for scripting. The dna/rna concept is a neat ASN.1-like way of keeping binary file format compatibility even when data structures change between versions.
  • VLC: Based on LibAV for media codecs, plus a GUI layer as an application on top.


Platform Hopping

  • Audacity: Windows/Mac/Linux via wxWidgets (only). Touch version for Windows in the works.
  • Blender: Windows/Mac/Linux via OpenGL! Entire GUI is OpenGL.
  • VLC: Have separate Android/iOS development.


Skins

  • Audacity: not currently supported.
  • Blender: All icons are stored as SVG, converted to a bitmap and then used as a texture within OpenGL.
  • VLC:
Personal tools

Donate securely by PayPal, using your credit card or PayPal account!