|Number of watchers on Github||2411|
|Number of open issues||14|
|Average time to close an issue||3 days|
|Average time to merge a PR||2 days|
|Open pull requests||50+|
|Closed pull requests||53+|
|Last commit||about 2 years ago|
|Repo Created||over 8 years ago|
|Repo Last Updated||almost 2 years ago|
|Organization / Author||noflo|
|Do you use noflo? Leave a review!|
|View open issues (14)|
|View noflo activity|
|View on github|
|Fresh, new opensource launches 🚀🚀🚀|
Trendy new open source projects in your inbox! View examples
In computer science, flow-based programming (FBP) is a programming paradigm that defines applications as networks ofblack boxprocesses, which exchange data across predefined connections by message passing, where the connections are specified externally to the processes. These black box processes can be reconnected endlessly to form different applications without having to be changed internally. FBP is thus naturally component-oriented.
Developers used to the Unix philosophy should be immediately familiar with FBP:
This is the Unix philosophy: Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.
It also fits well in Alan Kay's original idea of object-oriented programming:
I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages (so messaging came at the very beginning -- it took a while to see how to do messaging in a programming language efficiently enough to be useful).
Read more at https://noflojs.org/.
See also the list of reusable NoFlo modules on NPM.
By subscribing to Flowhub you directly support NoFlo development, and help us all get to the future of programming faster.
NoFlo is available for Node.js via NPM, so you can install it with:
$ npm install noflo --save
You can make a browser build of NoFlo using webpack. For webpack builds, you need configure the component loader statically with noflo-component-loader. For projects using Grunt, grunt-noflo-browser plugin makes this easy.
$ npm run build
Then you can install everything needed by a simple:
$ npm link
NoFlo is available from GitHub under the MIT license.
NoFlo development happens on GitHub. Just fork the main repository, make modifications and send a pull request.
We have an extensive suite of tests available for NoFlo. Run them with:
$ npm test
By default, the tests are run for both Node.js and the browser. You can also run only the tests for a particular target platform:
$ grunt test:nodejs
$ grunt test:browser
The build system used for NoFlo is also able to watch for changes in the filesystem and run the tests automatically when something changes. To start the watcher, run:
$ grunt watch
If you want to only run a particular part of the test suite, you can filter them using the
TESTS environment variable:
$ TESTS="Network Lifecycle" grunt watch
To quit the watcher, just end the process with Ctrl-C.
Added support for running arbitrary NoFlo graphs via
noflo.asCallback. You can call this function now with either a component name, or a
noflo.AsyncComponentclass -- use WirePattern or Process API instead
noflo.ArrayPortclass -- use InPort/OutPort with
noflo.Portclass -- use InPort/OutPort instead
noflo.helpers.MapComponentfunction -- use WirePattern or Process API instead
noflo.helpers.WirePatternlegacy mode -- now WirePattern always uses Process API internally
noflo.helpers.WirePatternsynchronous mode -- use
async: trueand callback
noflo.helpers.MultiErrorfunction -- send errors via callback or error port
noflo.InPortprocess callback -- use Process API
noflo.InPorthandle callback -- use Process API
noflo.InPortreceive method -- use Process API getX methods
noflo.InPortcontains method -- use Process API hasX methods
EXPORTSmechanism -- disambiguate with INPORT/OUTPORT
scoped: falseon an outport will force all packets sent to that port to be unscoped
scoped: falseparameter. This is useful for components that mix unscoped and scoped inputs
schemakey. Ports with a schema annotate their IP objects automatically with the schema unless the IP object already has a specific schema
typekey of ports is now converted to the
schemakey. The schema of a port is available via the