ofxAddons is directory of extensions and libraries for the openFrameworks creative coding toolkit. Compiled fresh from Github daily.

What are openFrameworks addons?

An addon is code that extends openFrameworks in some way. There are usually two main reasons to make an addon:

  1. Bring in an external library or framework and allow it to easily be integrated into openFrameworks projects, eg: ofxKinect for using the kinect in openFrameworks, or ofxMidi for sending midi commands
  2. Make some complicated task simple and reusable for yourself and other openFrameworks programmers, eg: ofxQuadWarp by julapy or ofxControlPanel by ofTheo for user interfaces.

How do I install an addon I found on this site?

You can checkout a copy of the code using git. The name of each addon links to its github repository. You can use the Download Zip button Howto download or copy the URL bar, open up a terminal, move to your local openFrameworks addons directory and clone it:

$ cd of_preRelease/addons/
$ git clone https://github.com/obviousjim/ofxSomeAddon

Once you've got the code using either of these methods you should be able to open up the project files in the examples folders of the addon (note that some addons may be not have an example) and build->go to see them work.

Addons can be included in new openFrameworks projects through the Project Generator or you can just copy the example folder into a new apps/ folder and modify it from there.

If the addon doesn't build right away, it may require or be dependent on other addons or libraries. Those should be described by the addon developer in their README file. If there are no project files or the addon is structured in a way that makes openFrameworks show up missing when you open them, please email the addon developer pointing them to this page so they can change the structure to make it easier for people to use.

Being included on the site is no guarantee that the code works or is useful. We couldn't possibly test and run them all ourselves, so it's between you and the developer to sort out issues if they don't work.

Can you explain the information included on ofxAddons?

The title of each addon links to its repository on github.com. Below each is a description (extracted from github) followed by the creator and information about how long ago the code was updated, the latest version of openFrameworks that was released at the time of the last update (note that it is likely but not guaranteed to work with that version) and the number of github stars. If the addon includes an example and makefile, it is indicated. In addition, all forks of the repository that either have been updated more recently than the original or have more stars than the original are listed. Each contributor has an individual page that lists the addons they have developed. The data on the page is updated once per day.

Should I turn my openFrameworks thing into an addon?

The best addons make something that was hard easy. They allow you to do complicated things with really little code. If you have just conquered a big library, algorithm, or invented a new process you should consider making it an addon. If you're still wondering, maybe these questions will help:

  1. Does your addon do something that you think other people would like to do too?
  2. Make sure your addon doesn't already exist by looking at ofxaddons.com.
  3. If a similar thing does exist but you think you did it better, consider forking the existing addon into your github account and modifying it.

How do I make an openFrameworks addon?

folder structure for an addon looks like this:
of_preRelease/
  addons/
    ofxMyAddon/
      src/
        ofxMyAddon.h
        ofxMyAddon.cpp
        ...
      libs/
        libwhatever/
          src/
            lib_implementation.h
            lib_implementation.cpp
            ...
          includes/
            libwhatever.h
            ...
          lib/
            osx/
              static_libwhatever.a
            linux/
              static_libwhatever.a
            ... //other platforms
      example-anExample/
        src/
          main.cpp
          ofApp.h
          ofApp.cpp
          ... //other source
        MyAddonExample.xcodeproj
        ... //other project files for other platforms
      bin/
        data/
          necessaryAsset.txt

Everything should go into of_preRelease/addons/. The name of the repository should be ofxMyAddon. The point being when someone clones your git repository into their addons/ folder your examples will run without having to shuffle any files around.

Wait can you explain that more?

  • The folder under of_preRelease/addons should be the same name as the addon. This is also the git repository name.
    of_preRelease/addons/ofxMyAddon/
  • Beneath it there should be at least two sub folders for the source and examples:
    ofxMyAddon/src
    ofxMyAddon/example
  • If you have multiple examples for your addon, make sure they are prefixed with example-xxxx:
    ofxMyAddon/example-simpleExample
    ofxMyAddon/example-moreComplicatedExample
  • If the addon is for interfacing with external libraries include the source or any static libs for these in a libs folder
    ofxMyAddons/libs
  • The src folder should contain your addon source
    ofxMyAddon/src/ofxMyAddon.h
    ofxMyAddon/src/ofxMyAddon.cpp
    ...
  • The example folder should contain the example source and project files (the same style that you would normally find in apps/examples/someExample
    ofxMyAddon/example/MyAddonExample.xcodeproj
    ... //other project files for other platforms
    ofxMyAddon/example/src/main.cpp
    ofxMyAddon/example/src/ofApp.h
    ofxMyAddon/example/src/ofApp.cpp
    ...
    ofxMyAddon/example/bin/data

Is my addon done yet?

  • Do you describe what your project does in your description and README?
  • Do you list what operating systems you are supporting?
  • Do you have example projects?
  • Do your examples compile against the latest openFrameworks distribution downloaded from the of website?
  • Did you give credit and links to whoever wrote the original code your addon includes?
  • Are you clear about how your addon is licensed? Be straightforward if you don't want people to use it commercially. Also make sure that your dependent libraries have licenses that you are respecting.

How can I add continuous integration test to my addon?

Adding continuous integration testing (aka CI) to your addon allow people to know if the addon is working with the last stable version and with the last master branch of opneFrameworks.

To add CI, you need to:

From there on any commit will test that addon for every supported platform against both master and stable branches of OF.

Once your addon tests are working you can add a badge to your readme files so people using your addon can see the build status.

For travis you can just copy and paste the following markdown, changing "ofxAruco" with the name of your addon and changing the URL with that one of your addon:

[![Build status](https://travis-ci.org/arturoc/ofxAruco.svg?branch=master)](https://travis-ci.org/arturoc/ofxAruco)

which will look like: Travis badge

For appveyor you can find the badge code at https://ci.appveyor.com/project/your-username/name-of-your-addon/settings/badges

If your addon has another addon as dependency, for example, ofxCV, you need to add this dependency to the .travis.yml file, in the install section

install: 
  - cd ~
  - git clone --depth=1 --branch=$OF_BRANCH https://github.com/openframeworks/openFrameworks
  - cd openFrameworks
  - scripts/ci/addons/install.sh
  - git clone --branch=master https://github.com/kylemcdonald/ofxCv addons/ofxCv

You also need to edit the .appveyor with a slightly different syntax

install:
- cd ..
- git clone --depth=1 --branch=master https://github.com/openframeworks/openFrameworks
- git clone --depth=1 --branch=master https://github.com/kylemcdonald/ofxCv openframeworks/addons/ofxCv
- call openFrameworks\scripts\ci\addons\install.cmd

How do I submit my addon to this page?

You don't have to! Uploading it to github is enough, as long as you have the 'ofx' prefix in your repository name then we'll find it. Feel free to file an issue on github if you want to tell us about it and let us know what category it belongs in.

How do I add a thumbnail for this page?

Include an image file (270x70) in the root of your repository named: ofxaddons_thumbnail.png

How do you find all these addons?

We wrote scripts to discover addons on github.com. The scripts look at the repository name and description for things like 'openFrameworks' and 'ofx'. We have manual admin tools to discard the results that aren't openFrameworks related, empty, or blatantly incomplete. The ones we keep are tagged with categories after doing a bit of research about them.