9 ms·
NoFlo: Help Everyone To Understand And Visualize Code
- ttty 13y agoI've been looking for this for a long long time!!
- bergie 13y agoHere is the link to the Kickstarter, since TechCrunch seems to be having issues with that: http://www.kickstarter.com/projects/noflo/noflo-development-environment http://www.kickstarter.com/projects/noflo/noflo-development-... I'll be happy to answer any questions on NoFlo or the campaign here after I sleep a bit :-)
- sarreph 13y agoAwesome project; deserved a post!
- JPKab 13y agoSo I first encountered your project a while ago, and it looks like its come a long way. Congrats! Just curious, but can you point to any folks who are using NoFlo (not necessarily the new visual editor tool) for ETL? I do a lot of ETL type work, and would love an excuse to begin to use Node/Javascript instead of Python. Python is awesome of course, but there are certainly advantages to Node's event-driven architecture that would help me, since a lot of times I'm processing huge CSV files that can't fit into memory. I think NoFlo, combined with the new visualization tool, would have a very big advantage in ETL. ETL workflows are one of those things that are so often shared with executive types in a visual format anyway.....
- endergen 13y agoNeat project for sure. I think the powerful idea I like about your approach is more that you are using flow control to add structure at higher levels but still leaning on traditional coding to implement the details. Visualizing communication/interdependencies and have that front and center leads to people keeping it cleaner than usually where it's hard to visualize how complex the communication has become except by imagining it and mentally parsing the code in your head.
- Simple1234 13y ago"NoFlo moves code out of applications and into reusable components that can be visually wired together by doers, not just coders." That sounds cool, but I don't get it. I don't see anything that would allow a "doer" to jump in. A "doer" is not going to know what a string or an array is. Am I missing something here?
- lechevalierd3on 13y agoWell it already exists, it's called Labview and it is awesome for building tools.
- knowaveragejoe 13y agoI think this is has a ton of potential use cases, but the video(at least the beginning half) kind of makes it seem like they're pitching the ability to get away from code entirely. I don't think that will be happening any time soon, instead, this allows for a high level mapping of the codebase and for non-developers to link components together at whim(if they're built generically enough, that is).
- gozala 13y agoI don't think the goal is to replace code entirely, goal is to have a high level tool for high level problem that today is solved with a code but could be lifted. People that love low level stuff will still do it by implementing low level components.
- cliveowen 13y agoMaybe I'm a pessimist but I think that programming is and always will be a process of writing text line-by-line on a text editor. Also I'm calling BS on this: "[...]is a sort of visual mechanism for helping people not necessarily familiar with code, like executives, managers and others[...]be able to understand at a glance what developers are doing" Bringing executives and managers in the development process is a recipe for disaster, there's a separation of roles for a reason. There's always chat about programming being stuck in the '80s but I think that with the recent developments and improvements in compilers, programming languages and toolchain the process of programming is anything but stuck in the '80s.
- doktrin 13y ago> There's always chat about programming being stuck in the '80s but I think that with the recent developments and improvements in compilers, programming languages and toolchain the process of programming is anything but stuck in the '80s. I tend to agree with this. The whole thing does feel a bit like the "flying car syndrome", in that we had at one point envisioned that by this point in history we would be dictating concepts by thought to machines that would automagically transcribe them into machine code. It's a matter of expectations and projections outpacing reality.
- pjmorris 13y ago> Bringing executives and managers in the development process is a recipe for disaster, there's a separation of roles for a reason. In one sense, yes. Having people who aren't intimately familiar with a code base/data base decreeing how things must be done is... challenging. On the other hand, executives and managers do tend to take a proprietary interest in how people's time and the organization's money is being spent, and sometimes this does spill over in to technical matters. One way to empirically assess this would be to survey the executive and managerial offices around you, and see whether there are diagrams drawn there by technical staff, perhaps on a whiteboard, or a piece of paper, or in some electronic form. If this is the case, you may already have the disaster you fear... or perhaps it's just the way of the world. To my thinking, sharper tools to assist in conveying technical points accurately to non-technical people is an underserved and valuable market, even if you get rid of the snake-oil salesmen.
- deleted 13y ago[deleted]
- subtenante 13y agoLarge code bases now will REALLY look like spaghetti !
- jamwaffles 13y agoI wish KickStarter had an option to subtract money from a project. This is the biggest abomination in programming I've seen since PHP.
- Robbo89 13y agoI signed up to this site just to comment here. Fucking agreed! I still hope this is just a big joke.
- davesims 13y agoHow is this different than, say, Rational Rose or any of the other UML/WYSIWYG tools that have come down the pike over the years? Or, for instance, Rules Engines that in general no one uses because inevitably stakeholders stop trying to understand the "plain and simple" english-like syntax that have morphed into full-on semi-Turing Complete disasters that developers manage anyway? Most code, when visualized in sequence or relational form, is generally incomprehensible even to developers until they've spent time understanding the intent and history of the domain. I can't convince most senior developers to learn to read and use the simplest of UML sequence diagrams. How are non-technical stakeholders supposed to be able to grok this? Code is complex in the best of times, early in development. Legacy code that's actually used for business in the real world, even when visualized and distilled down to its simplest form, is generally a labyrinth of polymorphism, duplication, object/relational tension, algorithms, background jobs and asynchronous callback madness. We've seen this kind of thing many, many times before. So often that by the early 2000s when some Golden Visual Environment For Code, the Holy Grail of "drag and drop", would emerge every couple of years or so, we used to roll our eyes and say, "here's another one." I wish I could dig up some of those links, but ALL of the language in this pitch is exactly the kind of thing we've been hearing for decades. And it never pans out. The closest thing we have is UML. Look, I love UML, and I'm probably one of the last holdouts for it -- I read Martin Fowler's UML Distilled years ago and still use those techniques to this day. But I've never used it to generate code (a la Rational), or to fully diagram an entire system. Even with a human editor reducing the noise and focusing the diagrams on the core workflow, real world systems become extremely complex and very difficult to follow visually unless you have a long history with the system, an understanding of the patterns and architectural principles that went into designing it, and enough technical ability to grok things like inheritance, object/relational concerns, asynchronicity and the like. For these issues, the code isn't the challenge -- it's the concepts themselves, whether expressed visually or directly in code. Any system that grows to have significant business value will a) NOT be able to be maintained purely through visual environment and b) become so complex that the visual representation will be a mass of lines and boxes that, unless edited down and vastly simplified, will be too complex to read even for developers. The Holy Grail of a visual, drag and drop environment that could create meaningful business value would have manifest years ago if it were possible or even desirable to do so. This latest attempt may end up having some limited utility for simple applications, but I'm beyond skeptical or pessimistic. This seems hopelessly naive to me.
- jgrahamc 13y agoSoftware applications are one of those things that are easy to draw, but impossible to describe without years of practice in arcane specialized languages. I agree. They are easy to draw. They are easy to draw because in doing so you eliminate real world situations and just draw some boxes that elide all the real detail of programming. And in doing so you barely express what will be needed to make the program actually work. Visual programming has been attempted over and over again. It's the future and I suspect it always will be.
- javajosh 13y agoAnd yet diagramming remains a useful communication technique. Why? Because diagraming recapitulates one of the most fundamental of programming activities: describing the addressability of data. When you draw a box, you are saying "This is worth addressing, this is how big it is and I'll even try to impart it's qualities with shape, color, and a label." The stage is set, and now you can describe how the actors interact with each other. And that's useful. It's interesting, though, that diagrams seem to only really be useful for humans. Maybe that's another form of Turing test: hand a program a high-level diagram and see if the computer can write a program that behaves as the diagram describes. Perhaps this would even be an iterative process, with the computer doing what it's sure about, e.g. defining a type, and then prompting for more input (possibly in the form of a diagram!) when it's unclear. I suppose a way to approach this would first have a known-good solution, like Word-Press, do the diagrams for it, then feed the diagrams into this hypothetical software-writing program and see how much help it needs to recover something like the original WordPress. There's even another interesting question, which is what impact the programming paradigm has on diagram descriptions of software. You would see differences at both the framework and the language level: a SpringMVC diagram is different than Play, which is different than Rails, which is very different from Noir. And Clojure programs would, generally, tend to be diagrammed very differently from Java or Groovy programs.
- thelukester 13y agoMost people seem to focus on the visual programming model which is just one aspect of NoFlo. I think its real power comes from the Flow Based Programming model. Functional programming is the trendy solution to the problem of concurrency these days. But I think FBP could offer some solutions in this domain too. In my experience with LabVIEW, I found that the FBP paradigm greatly simplified process of writing highly parallel code. Whether you use the text or visual UI, I’m excited that NoFlo will bring this concept to JS development.
- delinka 13y agoI think they've got a good idea. But after spending many minutes "Getting Started," I haven't seen the first graphical visualization yet. If their target is "...executives, managers and others who are increasingly asked to have some background in programming" as TC suggests, they have a long way to go. Someone who wants "visualizations" wants graphical, not text. Let's assume for a moment that TC has that bit wrong. In that case, I'm finding the NoFlo tool much less impressive.
- gozala 13y agoI believe the whole point of the kick-starter campaign is to raise a money to actually build a visualization tool / engineering environment. You can also find demo in it's current state here: http://noflo.github.io/dataflow-noflo/demo/ http://noflo.github.io/dataflow-noflo/demo/
- sz4kerto 13y agoThere was a team called Manchester Dataflow Group. They have spent 25 years on researching dataflow-based computers, languages, whatever. They made some brilliant contributions to CS in general, but - as they realized as well - DF is not the holy grail. http://cnc.cs.man.ac.uk/projects/dataflow.html http://cnc.cs.man.ac.uk/projects/dataflow.html
- CmonDev 13y agoGuys please just implement it in Mono/CLR rather then in Java/ObjC/Python - you will get more platforms AND languages supported this way.
- CmonDev 13y agoIs it possible to use just the graph visualisation package as a standalone thing?
- bockris 13y agoThere are lots of JS graph viz packages if that's all you want.
- CmonDev 13y agoCan you please give me an example that would support specifying graph elements in form of: { name: "", inputs : {}, outputs {} } ? Specialized lib is always better. The best thing about noFlo is visualisation.
- bockris 13y agoI'm not sure I understand your syntax. Graphs are typically specified as relationships (edges) between nodes. a->b b->c d->c { name: "a", inputs : {}, outputs {"b"} } { name: "b", inputs : {"a"}, outputs {"c"} } { name: "c", inputs : {"b","d"}, outputs {} } { name: "d", inputs : {}, outputs {"c"} } ???
- CmonDev 13y agoOK, tell me which lib takes whatever JSON and allows laying it out like NoFlo and allows custom styling of nodes AND connections (colors, icons, font other styling). Something higher-level then D3.
- bockris 13y agoentitled much? http://lmgtfy.com/?q=javascript+graph+visualization http://lmgtfy.com/?q=javascript+graph+visualization
- scribu 13y agoIt might be. Here's the source code: https://github.com/meemoo/dataflow https://github.com/meemoo/dataflow
- BMarkmann 13y agoI know this isn't the enterprise crowd on HN, but this idea is pretty deeply rooted in a lot of large organizations in the form of "Business Process Management". The BPM vendors all pitch the "let business users create software" promise. In reality (as others in the comments have said about similar tools) it's very hard to deliver anything but the simplest applications and maintain the ability for non-developers to grok what's going on. Similar (standardized) notation: http://www.bpmn.org/ http://www.bpmn.org/ Also, blatent self-promotion (sorry) discussing the issues with graphical programming: http://c20g.com/site/blog/entry/the-promise-and-peril-of-bpm http://c20g.com/site/blog/entry/the-promise-and-peril-of-bpm
- joshdance 13y agoBacked the project. I really want Objective C support.
- xiiiiiiiiiii 13y agoawesome
- Detrus 13y agoLooking at the prototype graph UIs it feels like the design misses the mark significantly. Without organizational or auto-layout features that makes the flows easy to follow it's still spaghetti. Looking at some other flow chart designs that weren't inappropriately inspired by subway maps http://www.businessprocessincubator.com/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/n/e/new_employee_as-is-example.jpg http://www.businessprocessincubator.com/media/catalog/produc... http://www.businessprocessincubator.com/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/i/n/incident_2.png http://www.businessprocessincubator.com/media/catalog/produc... http://www.file-extensions.org/imgs/app-picture/2731/labview.png http://www.file-extensions.org/imgs/app-picture/2731/labview... http://www.computer-solutions.co.uk/gendev/images/Example_LABview_diagram.png http://www.computer-solutions.co.uk/gendev/images/Example_LA... Seems there were several design ideas they just ditched? Particularly organizing flows around containers that hold smaller pieces. LabView has this functionality and even then you get some flows that are visually useless http://forums.ni.com/attachments/ni/130/3008/1/Run_away_diagram.jpg http://forums.ni.com/attachments/ni/130/3008/1/Run_away_diag... like their text based counterparts. But simpler flows are clearer than NoFlo. Meemoo also has a confusing interface. They're twisting flow lines to make more of the UI fit on screen. Is there a clear overview where the flow lines are straight? Quarz Composer and building Facebook in it is a convoluted nightmare. They could have built a Facebook prototype far easier with Flash Builder and a bit of ActionScript. Keyframe animations are best done in an interface that supports them instead of generic connect the dots. All that said I believe flow based programming has a lot of potential. But to make it viable for flows that are more complex than straight command lines or 20 elements you need visual tools that are more sophisticated than subway maps. Popularizing flow programming would at the very least motivate programmers to build components that work together.
- RogerL 13y agoLayout is NP-hard. Actually, it is NP-impossible. How does an algorithm know that in this case I want to emphasize how my code interacts with the IP stack (top of page higher layers), in this next page I want to emphasize change over time (later operations to the right and down), and so on? I assert without proof that any programming model that requires me to do layout is one that does not scale and will fail. Any model that does not allow me to suck in and work with 1MM lines of enterprise code will fail. I don't direct this at NoFLo, which I haven't used, it's a more general comment directed to the multiple attempts over the decades for a visual interface. It works great for domain specific, small problems, and falls flat for larger problems and larger code bases. Anyone trying to make a new tool should be aware of the history and difficulties.
- ckdarby 13y agoI am the developer in the basement that comes to save everything and we do exist.
- SimHacker 13y agoLooks like there's somebody using "dataflow" programming on a large scale: http://www.washingtonpost.com/blogs/worldviews/files/2013/08/saic.png http://www.washingtonpost.com/blogs/worldviews/files/2013/08...