Is it time to quit oF?

I’ve made about four projects with oF and mostly enjoyed it. At first, I wanted to improve my coding skills and practice while being creative and it quickly turned into a valuable artistic tool. The ease of using a Kinect was a big help in my first two projects.

But setting up projects is so hard sometimes. Getting the right addons and getting them to work with each other takes forever. And with multiple forks of an addon and OS-specific addons it gets more complicated.

Once I get all the add-ons working, development is a lot of fun, but for my current project, I feel like I’ve spent over two weeks already (while working a full-time job) just trying to get add-ons working. I’ve had an issue with with not being able to play HAP videos and use OSC at the same time (solved this one). I’m currently unable to play and record HAP videos in the same project. I’ve been unable to get ofxPd working (Pure Data being the audio software I have the most experience with). Etc. etc. It’s starting to feel endless and I’m always dependent on help from the addon devs or other users like @roymacdonald , who’s been a great help. And because everyone’s using a different OS or the maker of the addon is only sporadically available, I’m often unable to get answers. And I don’t have the skills to figure most of these things out on my own.

On the other hand, there’s TouchDesigner, which I’ve been using at work lately. I’ve come to dislike node-based programs (including PD, but I’m already in deep there) and enjoy using pure code more. I’m also sure oF programs are often faster than TD apps because they run in c++. But there seems to be no denying that TD, due to its more commercial model, has more out-of-the-box functionality without the need to wade through addon/compatibility hell.

I was just wondering how hard it would be to do what I want to (record and play multiple hap files live) in TouchDesigner so I opened a new project and was able to record and play multiple hapQ files simultaneously with smooth performance. This took me like two minutes to set up. TD is bad for audio, but with OSC functionality I might be fine just using Pure Data for audio. AND I can probably use my job’s commercial license for performances if I need HD output.

Anyway, I’m writing this post because I feel like I’ve really wanted to use oF and tried to use it, but I’m so frustrated. Based on what I’ve written here, is there any reason not to give up? The coding-practice thing alone doesn’t seem to be worth it at this point, and I can practice some python in TD.

5 Likes

hey,
I totally feel what you say. I used a lot Quartz Composer back in the day but at some point Apple stopped maintaining it leaving me having to code my own stuff. I found OF and fell in love with it and its community. But now I do see how tools as TD are way much more attractive than OF in a lot of senses.
Yet, I do use TD a lot, and often mix it with OF.
But at the end it all has to do with what you want to achieve and what you are interested in. I think that there is no need to reinvent the wheel, so I will just use to the tool that gets me to the desired results faster, which might be OF, TD, or any other. If you see that TD gets to where you want to go faster and easier than OF, then you should use that. There is no need to stick to OF just because, and I feel that it is totally fine to move on to something else.
I am sure you must have learnt a lot while using OF and now you might even have a much better understanding of how a lot of the things in TD work internally and will help you a lot.
All the best on whichever path you choose to follow.

8 Likes

This post raises a crucial question about the friction of setting up (or raising back from the dead) an openFrameworks project. i have been more actively doing things with OF in the past weeks and often find myself spending significant time on figuring out linking issues instead of inventing code (and then actually making art).

The Addon concept is probably what enabled OF to take hold. But it’s brittle, and it gets more and more difficult to figure out the proper way to bundle an addon (should we include the external source (thus having to track the releases), or compiled libs (having to source binaries), or rely on platform package managers (apt, brew, pacman) to get things in the correct places. etc. Considering the matrix of IDE, platforms, distributions and CPU architectures, if you want to support a “proper addon” (that is more than a single header-only include) it’s a lot of work. Hap is a good example of something that should “just work” but is not (and it is certainly not the addons maintainers’ fault!).

This discussion is beyond openFrameworks and involves the C++ ecosystem, which is a hard one. But compared with Rust’ cargo, the Swift packages, and all the “modern” management of software dependencies, i sometimes feel i’m losing momentum fast when struggling with getting something to run again, or deal with a dependency update, or move something from mac to linux.

That being said, “competing” with TD (or patching in general) is sane and necessary and juggling the node vs text paradigms will always create an interesting tension. Both are needed. TD has reached a critical mass and does most everything, but even if you can drop to python or GLSL or C++ to implement something, it’s a specific way of working. And you still need to visually wire things. I have greater patching fatigue than linking fatigue (it’s not great to consider levels of fatigue…). But i’m often finding myself that i could already be done with X if i had tackled it within another environment.

If OF wants to survive it needs figure out how to maximize the collaboration (both at the core and addon levels) which requires to look very proactively at how things will work with C++ in the coming years, and anticipate as much as possible the future fluid workflow. Modules (C++20) should become a thing. CMake/pkg-config exists. Efforts such as cppfront (GitHub - hsutter/cppfront: A personal experimental C++ Syntax 2 -> Syntax 1 compiler) are tackling the problem – beyond evolving the syntax, it tries to figure out things about linking and include – covering what the ProjectGenerator+addons (or CMake) are doing, but (eventually) at the standards level.

The panorama has evolved considerably in the last 15 years and maybe (?) there is also a question of scope/intent: what should be openFrameworks? (i’m thinking about pedagogy and easing into the setup/update/draw model, vs a “glue” for advanced users to bind things within an event loop). I have my own interests, but the capacity of the project as a whole to survive will depend on its ability to draw people to contribute, and that starts by not losing people to friction.

4 Likes

I think a good frame for this conversation is, what are the pain points and how can we help alleviate them.

One thing I will remind everyone is everything you see here is for free. That’s an insane quality to open source software. Everything is free. The time that people like @roymacdonald dedicate to answering questions, the addons which may or may not frustrate you, the tool itself, etc. It’s all coming from a place of generosity. I think it’s really important to mention that.

I think tool vs tool comparisons are fine, but my general advice is for everyone to use a wide range of toolkits and feel like they can jump from one to another or even combine them in interesting ways. the idea of “quitting” one tool vs another seems kind of strange to me. I hit issues in tools all the time – I do a project in p5js but find some issue so I switch to three, etc. It’s good to be flexible and feel like there are wide range of tools that are good at somethings and not others.

sometimes the price you need to pay for a tool like OF is frustration or actual time in getting things to work. You pay for this generosity in kind with pull requests and bug reports or suggestions about how to make things better. This may be too high of a cost, or you may have stumbled into some dark alley with OF in terms of trying to do something particularly difficult. That’s totally understandable. But I think a better question of should I quit or not is, how can I help fix this? I think it’s good to understand there may be use cases for which TD is a better fit, or some other tool, but I feel like in general it’s good to remember that no one here does anything other than out of a spirit of generosity, and it’s good to try to respond in turn.

18 Likes

Hey, thanks to everyone for the thorough replies. You all raise great points about the pros and cons of oF.

It turns out TD isn’t the magical fix I’d hoped. Despite seemingly having the necessary building blocks, putting them together resulted in a lot of slow-down. I’ll keep both programs as an option for now and see which tool can bring me closer to my goal.

1 Like

Hi @burton while what you say is very true it is also very important to acknowledge what @zach mentions. The ideas for what is needed to improve OF are already there but as everyone works for free here it is really hard to move fast. For instance, I haven’t been able to work on the OF core for a while simply because I have had no time.

And as @zach also mentions, the idea of quiting is strange. Also, trying out as much different tools there are out there is probably the best idea to get to understand these and which might be the better one for the task at hand. And, the more tools you learn how to use, the easier it gets to use a new one. :slight_smile:

3 Likes

I love this sentiment and I feel like it captures a lot in one statement. I would likely not have learned to code if OF didn’t exist. And I keep choosing it for the reason above.

And I’ll extend zach’s notion of “free” a bit to the “free of” stuff that goes along with OF. The cross-platform nature means that OF is free of processor, hardware, and os constraints. The source code is open, well commented, and free of obscurity. The license is free of usage constraints. The OF distribution is concise, free of clutter, and relatively free of deprecations. The core has the basics, with a satellite set of included addons to complement. The addon system allows OF to be free of limitations, to be flexible, adaptable, and to evolve. And finally the forum is awesome and (essentially) free of judgement, exclusion, and snarky malarkey. So I love these “free of” aspects of OF; for me, they add tons of value.

5 Likes

My two cents: Solving problems with addons and libs etc gets easier and easier as I move on. This has given me some gerat skills that I would not get otherwise, specifically I have been able to create addons or use other software libraries that dont exist for OF or for any other platform. For sure using a node based platform wont have these issues, but it would be hard to be able to work with something like the point cloud library or a myriad of other software tools libraries that offer very specific functionality. This gave me a freedom in my work that no other platform could.

The free factor is also huge (although I made sure to setup the monthly donation to OF). I also love that all the tools that make up OF are open source, it lets me learn so much more about making things.

This aspect is the biggest difference, I will try and make things that are much more specific, and interesting because I have often been lost learning with OF.

In the end the skills I learn from these processes are totally transferable to other contexts, this information is how to write code, and how to link libraries and use more complex parts of software tools. These skills have a very broad context that can help yoiu make things, solve problems and likely get a job.

Knowing how to use Touch designer or any other software is a very narrow skillset that is always at the mercy of a single small company.

6 Likes

In only wanted to say that i fully agree with @fresla comments.

I learned a lot using oF not only strictly related to oF but also on how to link, setup, etc etc in different platforms, design patterns and a lot of things that can be used also in other situations.

Personally i never had any problem with an addon that cant be solved, there are addons for almost everything and the best is that if you don’t find one you liked, you just can make your own. Take a library, look at use examples and usually is easy to make a wrapper to use it in oF.

I never used td so my opinion is limited but tie to a company product i don’t think is a good idea, since few years ago i began to work with machine learning and i apply same concept. I like tf but i also use torch, ncnn, mnn, openvino… so any of those drops, no problem, now depending on the requisites i use one or another.

Black boxes app are only good when everything works, if you have a problem… you have to wait for a 3 part company to fit it, personally i don’t like that approach

2 Likes

The idea behind quitting is: if two softwares have similar capabilities, isn’t it more valuable to invest all of your time in one and become very proficient in it rather than be continuously stuttering with both of them? Of course, their capabilities aren’t exactly the same and it’s possible to get good at both, but my recent dilemmas have made me consider this.

@fresla I’m honestly kind of lazy about digging deep into addon code because I just want to get to making things. But I’ll confess that advice from @danomatika on overriding my compiler’s objections via explicit typecasting gave me an idea of how to solve another compatiblity issue… which seems simple in retrospect, so maybe it’s not as hard as it seems.

I really appreciate everyone’s positivity, explanations for why they like oF and willingness to help.

1 Like

Tools like this take alot of work to create and maintain, even if things work well on the surface. oF provides enough to get going quickly but, by it’s nature, cannot hide many of the lower-level steps such as linking from its users. It takes time to learn C++, compilers build systems, etc but this knowledge is also applicable beyond the oF world and will help you to understand other platforms. My advice to beginners is to remember: “it’s not easy, but it’s not hard.”

Things like Unity and Touch Designer are great tools but I have always avoided using them because, at the end of the day, everything you make with them is dependent upon a commercial company. Neither are open source and your creativity is tied to them existing. It may take longer to make something with an environment like oF, but I have projects which are 10 years old at this point that I can continue to update and build. I have Pure Data projects which are older.

As for your problem with ofxPd, it’s likely something I have long fixed in the libpd repo but have not updated in the ofxPd repo. I am behind with libpd-work right now and my suggestions were more to get an idea of what was going on, not meaning to imply you have to fix everything yourself. I don’t use Windows day to day so it’s good to know when issues arise.

7 Likes

Touch Designer boasts wonderful capabilities, I use it too for some projects, mainly for some specific media realtime processing.
But from my coder point of view most of times it’s a “bizantine” environment that makes creative work cumbersome and intricate (built on a half baked metaphore, with a counterintuitive layer of abstraction, I may continue the rant for hours…). And, at the end of the day, it does cost some good money.
On the other hand often with some lines of C++ and the help of OF, which is completely free, I get same things done in minutes. This helps a lot when you are in “the flow” and ideas may get broken by losing time on incomprehensible details.
Obviously I speak of my particular case. Being a creative, for me OF, even after all these years, is still the main way to achieve results quite easily, in a straightforward workflow and in a reasonable amount of time. Several times I started first steps of a project with TD and then did the rest with OF by making the two parts communicate via OSC, because with TD I was not able to get what I needed in a meaningful way.

5 Likes

I think a lot of great comments have already been made, but I just want to add that having a tool like openframeworks is pretty special. The openness and foundation on C++ (and multiplatform aspect of it) allows to basically do any project. I think this is a huge win for creativity with the medium of computing. Other tools push people to create projects that are just a reflection of the tool (e.g. 3rd person controller in Unity) and it’s hard to deviate from the templates.

Quoting Alan Kay “Simple things should be simple, complex things should be possible.” and I think for me OF is the closest tool to embody this philosophy.

5 Likes

As a further abstraction: I use OF a ton for sketching ideas and prototyping but not in C++… I write projects in Lua which is run by a custom interpreter for OF I built some years ago:

What’s nice about this is that I have a tool which fits my workflow for experimentation and integration with other tools such as Pure Data with OSC. At the same time, I am leveraging all of the work by the community which went into OF and know I can deploy any of these Lua script-based projects on a different platform, ie. the classic “dev on Mac, deploy on Linux.”

I often think about making my own tool which doesn’t use OF but I always come back to the fact that there is no good reason to reinvent the wheel… better to make new things and keep the algorithms easy to read, understand, and port to new platforms, as required. :slight_smile:

1 Like

@danomatika Ah, I’m using PD with OSC for this project too, so maybe I’ll check your repo out sometime! Right now need to sort out what core tools I’ll be using. Using a modern webcam in oF on Windows is apparently not possible without a huge framerate drop, which is a substantial problem.

In TouchDesigner the camera works fine… I really don’t want to use TD, but if it’s the only way to have 30fps HD camera feed, I might not have a choice… And this is ironic because the community just helped me find a solution for the other problem I was having.

Someone… please save me from TouchDesigner…

@s_e_p what if you captured video somewhere else and sent the result to OF via spout ? If you need pixel data, you may need to read the pixels out of texture memory which could be a little slow (this may help GitHub - satoruhiga/ofxFastFboReader: Read pixel data using PBO)

1 Like

@zach Thank you for the suggestion… though I have to take a moment to laugh. I’ve met the developer of that addon irl- he works with my company sometimes and he quit oF to focus on TouchDesigner because he was tired of messing with addons.

Anyway, I’ll keep that in mind. Seems silly to use oF + TD if I could do everything with TD. I haven’t tried the jpeg sequence loop in TD yet though, so if that doesn’t work well in TD I may have to.

please use TD then! everyone here is just trying to help…

3 Likes

@zach Sorry if I’m coming across as entitled or negative. Just experiencing some cognitive dissonance due to wanting to use oF more but being limited by OS compatibility issues. And then the coincidence of my knowing that guy was actually funny… The oF community is great and one of the reasons I’m still here.

(@theo came up with a fix! Thank you!)

what the point in asking for a tool to be like the other tool ?

2 Likes