What if programming were just like connecting dots, and drawing conclusions to solutions? In a way, it already is. That sounds simple enough, until you try to do it. Try to debug it, try to fix it, try to keep your sanity. Even for the most experienced among us, it can be a challenge.
Code should flow like ideas
The team at NoFlo, which recently launched their kickstarter campaign, have a fresh take on an old idea. Flow Based Programming has been around for awhile, invented in the 70’s by J Paul Morrison of IBM. The concept is simple enough: take programming to flow charts, and vice versa. Programming itself is a like an algorithm, and flow charts are the cleanest way to present them. By combining the two, we have a very intuitive way to both map out a project and see it through, in a very cohesive way.
Henri Burius, founder of NoFlo, has that original concept of bringing the whiteboard to the desktop in mind. When you map out a project, you connect ideas with lines to one another, and decide how it should work. In those early planning stages, you know just what you want the project to be about and how it should perform. Sometimes, when it gets to programming, things get lost in translation. From the Kickstarter page:
If you’re a programmer, deep down, you know code is bad, it rots, and with each new line your software accrues complexity debt. New code means more bugs, more refactoring and more time needed to bring someone else up to speed.
NoFlo is trying to open up the world to a smoother programming experience. The real brilliance behind NoFlo is keeping it simple for the user, whether it be a programmer or layperson. Allowing us to take something from concept to practice in as few steps as possible means the original vision can be more readily realized.
When I spoke with the NoFlo team, I wanted to know why this concept, which has been kicked around since before many of us were born, was ready for primetime now. They noted that FBP was already being used. Dan Trocchini, founder of The Grid and on NoFlo’s core team, says “The flow-based revolution has already happened, but successful implementations are highly specialized and industry-specific, so the news rarely percolates to the developer community at large. Literally every tool in the fx-driven pipeline of modern Hollywood use flow-based tools that go under names like, “Nodal Editors.”
Quartz-esque, but much better
If NoFlo sounds a bit like Quartz Composer, the object oriented program no longer supported by Apple, that’s fair. NoFlo just takes that concept a touch further. From the NoFlo team:
Quartz Composer is probably the closest thing out there to the NoFlo Environment, but it's not as developer friendly and only suitable for prototypes not production ready software. The few Flow-based tools relevant to developers like Yahoo! Pipes and Quartz Composer have mission-critical flaws; they don't give easy ways for developers to drop down from the visuals and hack on custom components and they do not respect modern software dev idioms like testing and git. FBP is a general paradigm, likewise, Nolfo is a generalized application development platform, with clear escape hatches to code. NoFlo is tightly integrated with Github and we built-in a TDD workflow. Something not highlighted in our Kickstarter video is the way programmers can code in NoFlo.
NoFlo really does represent a needed shift in the way we work, but not the way we think. For me, the real question became what would happen to those programmers who have such a strong grasp on what is going on now, should a system like NoFlo catch on. Dan Tocchini from NoFlo tells me that “NoFlo can be incrementally integrated into an existing code-base, it’s not all or nothing. NoFlo graphs can be used as a service or embedded in existing code. It still takes practice to become familiar solving high-level problems using visual graphs, but it takes much more effort to become adept at solving those same high-level problems with procedural text.” He went on to point out that programmers would have much more time to create component libraries, should a system like NoFlo catch on widely.
It’s great to see a system where everyone wins, really. We all get a more approachable way to solve problems, which is what any program or app is really designed to do. The hardcore programmers get to work on deeper stuff, and the designers of the world can get working on a product themselves, at least on a entry-level basis. NoFlo is an exciting concept, one which I hope catches on widely, and quickly. For more info, check out their Kickstarter campaign. They’re halfway to their goal already, so the project is pretty much in the bag, but your support is still appreciated. As Android fans, we should embrace that the Android stretch goal is much lower than the iOS mark, and work to make it happen for them, and us.