Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 83 lines (42 sloc) 4.188 kb
26f6628 @bergie Show Windows CI status
bergie authored
1 NoFlo: Flow-based programming for JavaScript [![Build Status](https://secure.travis-ci.org/noflo/noflo.png?branch=master)](http://travis-ci.org/noflo/noflo) [![Build status](https://ci.appveyor.com/api/projects/status/k4jbqlpohq81pvny)](https://ci.appveyor.com/project/bergie/noflo)
638a991 @bergie Initial README
bergie authored
2 =========================================
3
d5dce30 @bergie Update the CHANGES and README in preparation for 0.4
bergie authored
4 NoFlo is an implementation of [flow-based programming](http://en.wikipedia.org/wiki/Flow-based_programming) for JavaScript running on both Node.js and the browser. From WikiPedia:
638a991 @bergie Initial README
bergie authored
5
6 > In computer science, flow-based programming (FBP) is a programming paradigm that defines applications as networks of "black box" processes, 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.
7
7942b1b @bergie Mention license in README
bergie authored
8 Developers used to the [Unix philosophy](http://en.wikipedia.org/wiki/Unix_philosophy) should be immediately familiar with FBP:
46d5239 @bergie Quote of FBP in real-world use
bergie authored
9
82c44d9 @bergie Alan Kay's OOP and FBP
bergie authored
10 > 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.
11
12 It also fits well in Alan Kay's [original idea of object-oriented programming](http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht81Ht/doc_kay_oop_en):
13
14 > 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).
46d5239 @bergie Quote of FBP in real-world use
bergie authored
15
f2e28b6 @bergie Unix philosophy as example of FBP
bergie authored
16 NoFlo has been written in [CoffeeScript](http://jashkenas.github.com/coffee-script) for simplicity. The system is heavily inspired by [J. Paul Morrison's](http://www.jpaulmorrison.com/) book [Flow-Based Programming](http://www.jpaulmorrison.com/fbp/#More).
638a991 @bergie Initial README
bergie authored
17
d5dce30 @bergie Update the CHANGES and README in preparation for 0.4
bergie authored
18 Read more at <http://noflojs.org/>.
638a991 @bergie Initial README
bergie authored
19
f42c734 @bergie Installation instructions
bergie authored
20 ## Requirements and installing
21
d5dce30 @bergie Update the CHANGES and README in preparation for 0.4
bergie authored
22 NoFlo is available for Node.js [via NPM](https://npmjs.org/package/noflo), so you can install it with:
c5ba06f @bergie Some documentation updates: publishing subgraphs
bergie authored
23
24 $ npm install -g noflo
25
d5dce30 @bergie Update the CHANGES and README in preparation for 0.4
bergie authored
26 You can customize and download the browser version of NoFlo at <http://noflojs.org/download/>.
27
c5ba06f @bergie Some documentation updates: publishing subgraphs
bergie authored
28 ### Installing from Git
29
fab5bb3 @bergie Initial, switch from Cake to Grunt for building
bergie authored
30 NoFlo requires a reasonably recent version of [Node.js](http://nodejs.org/), and some [npm](http://npmjs.org/) packages. Ensure you have the `grunt-cli` package installed (`grunt` command should be available on command line) and NoFlo checked out from Git. Build NoFlo with:
2efcec5 @bergie Document the new build process
bergie authored
31
fab5bb3 @bergie Initial, switch from Cake to Grunt for building
bergie authored
32 $ grunt build
2efcec5 @bergie Document the new build process
bergie authored
33
d9dc140 @bergie Make it clearer how to run builds or tests for a particular target platf...
bergie authored
34 You can also build NoFlo only for the desired target platform with either *grunt build:nodejs* or *grunt build:browser*.
35
2efcec5 @bergie Document the new build process
bergie authored
36 Then you can install everything needed by a simple:
f42c734 @bergie Installation instructions
bergie authored
37
5c06aa3 @bergie Document the new component API, NoFlo shell and file format
bergie authored
38 $ npm link
f42c734 @bergie Installation instructions
bergie authored
39
3317890 @bergie Handle repository migration to noflo org
bergie authored
40 NoFlo is available from [GitHub](https://github.com/noflo/noflo) under the MIT license.
7942b1b @bergie Mention license in README
bergie authored
41
8f84910 @bergie Link to change log from README
bergie authored
42 ## Changes
43
3317890 @bergie Handle repository migration to noflo org
bergie authored
44 Please refer to the [Release Notes](https://github.com/noflo/noflo/releases) and the [CHANGES.md document](https://github.com/noflo/noflo/blob/master/CHANGES.md).
8f84910 @bergie Link to change log from README
bergie authored
45
d5dce30 @bergie Update the CHANGES and README in preparation for 0.4
bergie authored
46 ## Usage
7b741e0 @bergie Some documentation on subgraphs
bergie authored
47
a46d3d0 @bergie Link to Flowhub docs as well
bergie authored
48 Please refer to <http://noflojs.org/documentation/>. For visual programming with NoFlo, see <http://flowhub.io/documentation/>.
92bb30e @bergie Document the FBP Domain-Specific Language
bergie authored
49
35c2454 @bergie Quick notes about development
bergie authored
50 ## Development
51
3317890 @bergie Handle repository migration to noflo org
bergie authored
52 NoFlo development happens on GitHub. Just fork the [main repository](https://github.com/noflo/noflo), make modifications and send a pull request.
35c2454 @bergie Quick notes about development
bergie authored
53
1960c37 @bergie Mention watcher in the README
bergie authored
54 We have an extensive suite of tests available for NoFlo. Run them with:
66ab294 @bergie Document how to run tests
bergie authored
55
1960c37 @bergie Mention watcher in the README
bergie authored
56 $ grunt test
194db42 @bergie Update test docs
bergie authored
57
58 or:
59
60 $ npm test
66ab294 @bergie Document how to run tests
bergie authored
61
d9dc140 @bergie Make it clearer how to run builds or tests for a particular target platf...
bergie authored
62 ### Platform-specific tests
63
64 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:
65
66 $ grunt test:nodejs
67
68 or:
69
70 $ grunt test:browser
71
1960c37 @bergie Mention watcher in the README
bergie authored
72 ### Running tests automatically
73
74 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:
75
76 $ grunt watch
77
78 To quit thew watcher, just end the process with Ctrl-C.
79
8c87055 @bergie Link to the FBP mailing list
bergie authored
80 ## Discussion
81
d16c311 @bergie Link to the NoFlo Support page
bergie authored
82 There is an IRC channel `#fbp` on FreeNode, and questions can be posted with the [`noflo` tag on Stack Overflow](http://stackoverflow.com/questions/tagged/noflo). See <http://noflojs.org/support/> for other ways to get in touch.
Something went wrong with that request. Please try again.