Discussion of bringing improvements to openFrameworks

I began playing with OF about a year ago, and have a few observations I’d like to discuss. As a beginner, I was frustrated by a lot of dead ends and wasted time, so now that I’m not quite a beginner (though still pretty close), I’d like to try to help address some of those problems.

I want to stress that I do not in any way mean to be critical of any developers or people who have put in hard work for oF. I am only trying to help improve oF by compiling a wishlist of updates and changes, with the hopes that we can divvy up the work and get some cool stuff happening.

In general, these suggestions feel somewhat trivial taken one by one. However, I’d like to point out a difference I felt when learning Processing vs. learning openFrameworks. For some reason, I felt like I ‘got’ Processing much, much sooner than openFrameworks (I still don’t quite feel like I ‘get’ openFrameworks development). This could be a simple extension of the difference of the relative ease of Java vs. C++, but if we’re honest, there are some things we can do as a community to make openFrameworks easier for beginners.

Also, I want to make a note that I think there seems to be a specific need for documentation for people who are not quite beginners, but not quite experts either. In other words, people who have installed one of the IDEs and gotten a program to compile and run, but don’t know what to do next. Maybe they’ll learn to include an addon into a new project, but then it’s not clear just how cool openFrameworks can be. Perhaps a good set of offcial tutorials (much like the “Learning” section of Processing.org) would be helpful for this reason.

Finally, I want to find out how to stay up with cool working going on in the openFrameworks community. For example, version 007 seemed to just appear one day; how can a community member keep up with current work? Who are good people to follow and how can we follow them? Where does the ‘real’ activity take place (IRC, forums, private, etc)? In other words, I would say that more transparency would be ideal, so that outsiders can gather recent information and get a sense of that the OF community really is active.

[list]

  • Front page of website has not changed in about two years
    Last update to “news and updates” was from December 27th, 2009, and the video was uploaded 4 years ago! It gives the (false) impression to newbies that oF is not a very active platform.

  • about > news page is outdated and seems to have some formatting issues

  • addons section has many issues, and is hard for newbies to figure out

  • “overview” page mentions that “each addon page will include detailed instructions”, yet every addon that is listed is not linked to anything. Also the list seems to be missing several current addons like ofxAccelerometer and ofxSynth
  • “contributed addons” page seems quite incomplete, with many of the links going to a confusing page stating that the addons page is not being maintained any longer, and that developers should host their addons and add them to…the addons page that isn’t being maintained? James George and Greg Borenstein have created a really sweet website for oF addons at ofxaddons.com, but newbies would have no idea it exists from interacting with the site.
  • “installing & using addons” video is quite helpful, but could really use a text version as well for situations when users just want to quickly skim or reference something and not play a 7 minute long Flash video. A text description of the currently correct way to add addons into the common IDEs, which can be quite confusing to a beginner.
  • docs pages are functional, but could use more examples
    This is something that can really be inspired by Processing’s approach - as a beginner, knowing how to call a function and what parameters you pass isn’t always the most helpful. The examples at Processing.org serve to demonstrate plainly what exactly the function does, and provides some context about when to use the function and where it fits.

  • gallery is interesting, but not very comprehensive or detailed
    Seemed to me that there is a lot of content that is dangled out there, but not explained very much, or at least it can be hard to see exactly how openFrameworks was involved. This isn’t really a critical section, though, so its not a big deal.

  • community section could use some TLC

  • “people” page lists some astoundingly important people (arturo, theo, Golan Levin, etc). However, if you don’t know who any of them are, you have to hover over every single one to see the name and decide whether you want to click and see a tiny bit of content or not. It might be a good idea to put all of the content on one page. Names and bios float next to all the images, so you can browse through the whole thing at once, or even search for a person by name more easily.
  • “meetings and workshops” page…is this being maintained? Seems like it might be dead
  • rss feeds don’t seem to be working
    The “news” and “projects gallery” feeds are dead links for me, but even if they did work, has the content been updated enough to warrant an RSS feed?

[/list]

Once these issues have been discussed for a while, I think some discussion needs to take place about actually doing something about them. It would be unreasonable to heap any of this “extra” stuff onto the core developers of OF, so I’d like to suggest that a team of trustworthy volunteers in good standing in the OF community be assembled to tackle the issues discussed.

It’s obvious that OpenFrameworks is an extremely powerful and valuable tool, and the community works quite well, and yet the platform doesn’t have as strong of a following as something like Processing. While it cannot be expected to really reach that level of involvement, maybe some thought should be taken to reaching out to educational contexts, as Processing has done. Its becoming more and more common for Processing to be used in teaching basic programming to undergraduate students, so what about developing a support system in the community for educators looking to teach their students about C++ and the unique things that openFrameworks can do well? What do you think?

Hi h4t!
Thanks for your valuable and well-rounded feedback, you raise some very valid points.
Fortunately, nearly all of those points have already been identified as problems, and are being tackled currently. There is work happening on a new website, you already found ofxaddons.com, which will be incorporated in some way, and the code documentation is currently being overhauled. Currently, this is in no shape for public consumption, so there’s nothing official to see yet.

Regarding some newbie-intro-stuff, have you already seen http://www.roxlu.com/blog/entry/145/openframeworks-007-presentations/page/ ? (currently seems to be offline)

For judging progress, the most effective means for now is to follow the commits happening to the https://github.com/openframeworks/openFrameworks repository, and to read the forum. Most discussion about these issues you mentioned happens on the forum.

I don’t think many will disagree with many of your points and the good news (from what I have observed) is that there are efforts being made against most of them.

(As bilderbuchi said as I was typing this) Some of your points are discussed in a few topics in the OF Development forum but I think a lot of effort was getting 007 released and now a lot of focus it getting it documented and into a structure that can be automated (like ofxaddons) to allow things to move a bit faster.

A lot of the day to day activity can be seen on github - here are few to follow
Documentation:
https://github.com/joshuajnoble/ofReference (see below)

New site:
https://github.com/arturoc/new-OF-site

ofxaddons
https://github.com/atduskgreg/ofxaddons.com

As for education I have seen quite a few good collections of tutorials that were support materials for workshops that hopefully make their way into the new OF site

https://github.com/obviousjim/OF3dWorkshop
https://github.com/obviousjim/OFIntros
http://pkmital.com/home/cema-workshop/
https://sites.google.com/site/ofauckland/

As for the good people to watch here is who I follow via github… many are active on twitter as well
https://github.com/jvcleave/following

Just wanted to add that my ofRefernce is being deprecated (i.e. I’m about to delete it) and I’ve been focusing on getting documentation into arturos project. The documentation there is going to be very solid and both beginner and intermediate focused.

awesome discussion.

one of the biggest strengths and weaknesses of openFrameworks is that it’s based on oral tradition. it got started with zach creating code just for his students, and slowly the project got bigger. the “oral tradition” moved from the classroom to the forum. and now, there are people getting started with OF who have no idea about zach or theo, they just know that people are making cool things with OF. maybe they don’t even know about the forum. so it’s more important than ever that “intermediate” users (like you say, who have something compiling but aren’t sure what to do next) have the documentation they need. the OF website looks like the primary resource, so it should act like it. josh and arturo are leading this effort right now.

as for where the “real” action happens, the answer is: on the forum, and on github. sometimes private emails get exchanged when there’s a serious philosophical issue that needs to be discussed, but most of the development happens in the open. 007 looks like it ‘appeared out of nowhere’ mostly because there is no release schedule – but if you were watching github you would have seen the development. “0071” is brewing as we speak :slight_smile: https://github.com/openframeworks/openFrameworks/tree/develop

Oh yeah, if anyone is curious, I am actually a graduate student at the University of Nebraska at Kearney, which is a part of the country that has absolutely no exposure to this new ‘wave’ of open-source software and hardware (Arduino, openFrameworks and Processing, especially). I personally just love to play with this tech for fun, but I find myself drifting into an educational capacity simply because of the vacuum that exists here: I have to explain to most people HOW I’m creating things for them to understand WHAT I create a lot of the time. For this reason, I’m obviously very interested in helping openFrameworks become more accessible to people. I taught a class last spring that I designed all about Arduino and Processing, and felt that openFrameworks would be “too much” to teach undergraduate Computer Science students at my university (students here are not as proficient as students at larger universities).

It looks like a common point here is that a lot of activity is happening in github. Github is great, but keep in mind its a ‘power user’ / hardcore programmer kind of environment. For outside observers, like casual users and hobbyists, github can be a little intimidating and hard to dive into.

@joshuajnoble: what is ofReference? By the way, your Programming Interactivity book is like a bible to me. Whenever anyone shows an interest in Arduino, Procesing or oF, I usually tell them to buy your book and read it cover to cover. I’ve even assigned it as a textbook for a class in the past!

@kyle - I did not know that! I was curious about how openFrameworks came to be. I can say that as an outside observer that although Processing has a huge following, it seems like oF keeps popping up at the core of an astounding number of really awesome works. It’s obviously used by some very capable people, but its almost like there is a bit of mystery about it all.

I think one of the most beneficial things that can happen would be for all of the fundamental OF codebase to be demonstrated to users through well documented examples, not just given to them as a collection of folders and files. I point to the Processing.org documentation where they have very short, simple examples for every oF function available in the docs section. The main OF docs page is really great, but when you click on any of the functions, you get a cryptic block of text that doesn’t really help the user understand what it is used for. A small image demonstrating the output of the function and a super minimal chunk of code (maybe a .cpp and a .h column) would go a long, long way for users.

I’ve actually seen students learn things about Processing almost instantly by just being able to copy and paste bits of code and try to get them to work together. As an in-class workshop near the beginning of the class, I had my students open a pre-made example in Processing, then mess with it using things they find in the Processng.org docs to make something weird. The results of this one 50-minute workshop were actually pretty surprising: http://cs.unk.edu/~webb/2011/02/works-created-from-processing-hacking-workshop/

This particular topic interests me enough that I would even go so far as to volunteer my time in creating some Processing.org-style examples sometime.

The ofAuckland site link looks fantastic (https://sites.google.com/site/ofauckland/), I think something like this would be great to have integrated into the OF main site.

i totally understand where you’re coming from, h4t – but i’m also not sure that OF will ever be like processing in the ways you describe.

i can see the documentation having images that say “here’s what this function does”. but OF is necessarily more verbose than processing most of the time, so i don’t see people copying and pasting example code.

personally, i learned a big chunk of what i know from processing. the processing reference is hugely important to me. i still refer to it, and i could probably write a big chunk of it from memory. i secretly wish OF was more like processing in a lot of ways. actually, i made this once http://kylemcdonald.net/forof/processing-vs-of.html because i was thinking about that distinction.

anyway, it’s great to get insight from people who are new to OF, or teaching OF with mixed results – keep it coming!

Don’t forget that the ability of a processing example to run in the browser does wonders for visibility. The things I make in processingJS are seen by 100 times more people than the oF programs I code for gallery work.

Are there folks who go from no coding experience to C/C++ coding in oF? I would have been dead in the water without years of boring C skills backing me up through compiler nightmares. I discovered oF before I found processing. I think I described processing as, “Just like Openframeworks but easier in some ways!”

I guess what I am saying is that I feel oF is a tool for people who already know what’s out there in creative coding, but want C programs at the end. It is part of an ecosystem of toolsets with specific strengths and weaknesses.

The website could use a makeover, but it isn’t 100% necessary to try to be processing, when processing and oF exist in a big soup of programs like this that reach back to logo/starlogo.

Also don’t forget:
http://www.flickr.com/groups/openframeworks/

I guess what I’m saying is, people who know to seek will find this highly capable tool and all the others like it.

http://kylemcdonald.net/forof/processing-vs-of.html

This warms my heart.

I completely agree with both of you that openFrameworks shouldn’t just morph into a C++ version of Processing. I only bring up the Processing platform documentation as an example of something that we might be able to learn some things from and adapt for our own needs. I’m also trying to argue that making these kinds of changes to the website invites more people to use your tool, which in turn creates a larger community, which can create a better tool, etc, etc. OpenFrameworks will never be Processing in the way that C++ will never be Java, of course. But regardless of whatever platform we’re talking about (python, Fortran, whatever), good lessons and documentation creates happy users. Happy users spread their excitement, and that excitement will eventually arc around to enrich the community and platform. Personally, I’d like to see some of these changes happen so I can teach more students about openFrameworks easily, and make it easy for them to jump in and experiment with things they can’t easily do in Processing like computer vision. A simple set of beginner lessons and tutorials like that ofAuckland site can go a long, long way in helping people jump into this awesome platform.

Consider another platform that has decent documentation, Cinder. It’s my understanding that Robert Hodgin and others created Cinder as a personal exercise, but also because they were dissatisfied with documentation in the OF platform (I could be completely wrong though, that’s just what I thought I read a while back). While not complete or all that mind-blowing, there are some really interesting things about how they try to teach their users about C++ in a way that is quite different than how Processing does it. Check out http://libcinder.org/docs/v0.8.3/hello-cinder-chapter1.html for example. Sure its not perfect, but it is highly visual, easy to follow and the author explains things beyond just “copy this and run it again.”

So like I said, I don’t want to suggest that we should try to make openFrameworks look like a step-brother of Processing, but rather bring openFrameworks to the next level by making as many things easily accessible as possible (videos, on-going projects, lessons and tutorials for education, etc). The hardcore users should definitely continue to use the tool however they please, and keep doing what they love doing. But helping to make openFrameworks more accessible for education and casual users can’t be a bad thing, can it?

That flickr group looks great by the way, I wonder if there’s a way to syndicate (or whatever the word is) the content into the OF website somehow. It would definitely show newbies that OF is indeed a very active community with some really, really cool work going on.

So like I said, I don’t want to suggest that we should try to make openFrameworks look like a step-brother of Processing, but rather bring openFrameworks to the next level by making as many things easily accessible as possible (videos, on-going projects, lessons and tutorials for education, etc).

These things are definitely in the works. I’m working on better documentation whenever I get time and the tutorials are something that I have a plan for. However, the “take this and run it” approach is really effective too and I have to say: the apps/examples are excellent for learning, teaching, and sometimes just referring back to.

That flickr group looks great by the way, I wonder if there’s a way to syndicate (or whatever the word is) the content into the OF website somehow. It would definitely show newbies that OF is indeed a very active community with some really, really cool work going on.

This is also going on, linking stuff from Creative Applications and maybe some other sources to give people an idea of what everyone is really doing with OF.

I couldn’t agree more h4t and there’s several other forum topics that have expressed similar issues, but have died a bit.

I agree that documentation, examples, and tutorials are served well on the web (especially for new people). Cinder tutorials are a great example regarding c++. I don’t think just because you can’t show a live example in the browser is reason enough not to have example/tutorials online. I mean, there’s all types of tutorial websites that utilize images to demonstrate a more involved process. A couple years ago there was an effort to put tutorials on the WIKI, but that process died after a while and WIKI navigation can be a little chaotic.

I think one of the biggest issues is demonstrated in this post. There’s 5-10 various links with valuable information regarding OF, but they’re all going to different locations. I think centralizing the effort and bringing these resources together should help with a lot of these issues presented in the original post. Of course this ultimately comes back to having someone update the main website.