Giter Club home page Giter Club logo

flow-based.org's Introduction

Most content goes there, as it provides a decent GUI for editing.

Anyone with a Github account should be able to edit.

Just a simple static website with links to the relevant locations.

To edit, change the index.md file in this repository.

flow-based.org's People

Contributors

jonnor avatar trustmaster avatar jpaulm avatar bergie avatar

Stargazers

Patrik Svensson avatar Abhinav Kant avatar Ian Cooper avatar Fariz Apriyanto avatar BA7LYA avatar  avatar  avatar  avatar  avatar Mohammad Hossein Mostmand avatar Bin Wang avatar wouga avatar Vladimir O. Razuvayev avatar  avatar  avatar J. Ryan Stinnett avatar Ali Rathore avatar Dragos Tudorache avatar ixaxaar avatar  avatar Farrukh Rahman avatar Kaustav Das Modak avatar Saswat Das avatar  avatar Wolfmetr avatar Nektra Advanced Computing / Data Big Bang / CoinFabrik avatar Periklis Papanikolaou avatar Arto Bendiken avatar  avatar Sirapat Siribandit avatar Emil Valeev avatar BAKEZQ avatar BenDerPan avatar sanjin avatar Alpha-00 avatar you avatar jon ⚝ avatar John O'Connor avatar Ted Behling avatar Burak Sezer avatar yzrun avatar rong fengliang avatar CylonInn avatar Scott Lawson avatar James Dixson avatar Max Kostovetski avatar Jonathan Poczatek avatar HE Boliang avatar Nguyen Anh Tuan avatar plusmancn avatar Mark Watts avatar Scott Ivey avatar  avatar Yifan Gu avatar Samuel Ludwig avatar Swann Martinez avatar Hassan Abedi avatar emp avatar Yuxuan Huo avatar Hassen Ben Tanfous avatar Samuel Lampa avatar Kindy Lin avatar Ciprian avatar Dmitriy Gres avatar Andrey Yatsyk avatar Joseph Winston avatar Emmanuel Oga avatar Vitaliy Stoliarov avatar Andrew Kazakov avatar Sylvain avatar Ravi Peters avatar あめ avatar Jonny Li avatar Ahmet avatar Yos Riady avatar Fotis Nikolaidis avatar  avatar Jay Choo avatar Hasiel Alvarez avatar ifree avatar Senthil_M avatar Cqshinn avatar jeanim avatar abdul dakkak avatar  avatar Rushmore Mushambi avatar jochen avatar Tarcisio Gruppi avatar Andrei Nigmatulin avatar  avatar Kentaro "zigen" Teramoto avatar Eelco avatar Xigang Wang avatar Mariana Remedios avatar Shammel Lee avatar John Rees avatar Marin Yakimov avatar David Landa avatar  avatar  avatar

Watchers

Danny Ayers avatar  avatar Chad Dombrova avatar Oleksandr Lobunets avatar Pedro Ângelo avatar Antouan Anguelov avatar Robbert Halff avatar Yasuharu Hayami avatar Forrest O. avatar Humberto Anjos avatar Ruben Dario avatar Dương Bảo Duy avatar боцман avatar Ian Fitzpatrick avatar James Cloos avatar Ali H. avatar Flávio Brandão avatar Stefan Sauer avatar Alfredo avatar Weifeng Ding avatar Aaron Herres avatar Kevin Rattai avatar Christophe avatar Michael Barrett avatar Trisha avatar あめ avatar

flow-based.org's Issues

Graph visualization

It would be nice if FBP or JSON graphs had an automatic visualization powered by the-graph custom element.

Could replace backtick-delimited code blocks with a button to switch between code and graph view.

noflo/visualize could be a good place to start. There is already KLay autolayout implemented there.

Update the glossary

Terminology page needs a revamp:

  • Synonyms list should be put at the end of term definition to make it easier to read.
  • We should probably add synonyms to the list of terms and link them to primary definitions. Not sure about this.

Also, here are terms that need to be added:

  • Arc
  • Edge
  • Node

Please add more of the missing terms in the comments.

Flowtrace format

Just like traditional programming environments have stack traces and core dumps, it would be useful to come up with a file format to store the state of a FBP network.

The relevant information in the file would be:

  • Metadata dictionary about the environment (runtime type, versions, possible env vars, etc)
  • The current graph(s) being run in the network (in the standard JSON format)
  • The packets that have recently been transmitted (in the packet payload format of FBP protocol)

These files could be generated on demand from tools like Flowhub, or automatically by FBP runtimes themselves whenever an error occurs.

Various Flow-Based Programming tools could be made capable of opening these files to show the graph and the packets.

Automatic assignment of indices

In https://github.com/flowbased/flowbased.org/wiki/FBP-DSL , it says: "The javascript implementation of the parser assumes order of declaration as the index automatically, but this is not a characteristic of the DSL."

I assume this means that, if the parser knows that the port is an array port, and if the the port is somehow marked as an array, that the indices will be assigned automatically, unless explicitly overridden. How is the port marked as an array? I am guessing that you use empty square brackets, but, whatever you use, it should be spelled out explicitly.

Thanks in advance,

Input Ports (in Concepts)

Other features like obtaining the buffer load or which indexes have incoming packets in the case of array ports are desirable for simplifying the design and implementation of some components.

This is more of a comment than a question, so I will use the enhancement tag!

a) We have never needed the cited functions (but maybe NoFlo does)

b) The load balancer I built has one "secret" function to check the number of IPs in its downstream connection

c) Input Ports should mention suspension, to parallel the way that Output Ports does...

Ports (in Concepts)

In Definition, I changed the first sentence of the 2nd para to read

Flow-based programming considers an application as a set of processes ("black boxes") communicating via connections, which the processes access by means of "ports".

Assuming there are no objections to this, I would like to add a "Connections" heading to Concepts, before Ports, and then use the same phrasing in Connections.

The only problem is I'm not sure how we should describe connections to embrace both FBP and NoFlo. So I'll tag this as a question. Could someone take a stab at this?!

BTW In FBP, connections correspond 1:1 to (non-IIP) input ports or input array port elements. Say this somewhere?

FBP Process Activation

Currently in the Characteristics section it says:

Activation: From the graph designer point of view all processes are running all the time, and the library should handle activations accordingly to maintain this illusion.

This is generally true, and much of the job of the software is to "maintain this illusion", but I guess I wouldn't stress "all the time" quite so much! There may be pragmatic reasons why you don't want one or more processes to start immediately at application start. Here are a couple:

  • a common trick in batch "classical" FBP is to write a stream of IPs to a file, and then read it back. This acts as a very large buffer, and is often used to resolved certain types of deadlock. For historical reasons, it is often referred to as an "infinite queue". Clearly the Reader should not start until the Writer has closed the file. While you can have the Reader start earlier, the file it is working on must not be opened too early!
  • although there would be no overhead to waiting for work if all processes had their own processors, in practice you probably don't want to start paying overhead until you actually need a function. In some applications, we found that 2/3 of the processes in a given network had to do with error handling, so might never actually get sent any data to work on!

Could we say something like:

Activation: From the graph designer point of view processes are running concurrently, and it is the function of the scheduling software to allocate CPU time and manage other services as required to maintain this illusion.

Ports (in Concepts)

A Process can send and recieve from any of the ports but should restrict itself to only a read or write operation at the same time.

Huh? Are you saying that a process is single-threaded, and can only wait on one event at a time, e.g. receive, send, wait on event, wait for time, etc. (as we have said elsewhere, I think...)? Or are you trying to include some NoFlo ideas as well? TIA

Universal FBP communication protocol

Although the name on the link says "Universal", right now "classical" FBP does not talk to it. Should we discuss how it could be interfaced to "classical" FBP implementations?

@oleksandr and I also started to talk about possible extensions to DrawFBP - does that fit in here?

TIA

Terminology - loopers/non-loopers

Don't see connection between the looper/non-looper concept and the resident/non-resident dichotomy! Perhaps someone could explain..?

FBP Definition - "dumb data"

(Minor issue) "dumb data" - IPs are not totally dumb, as they can have methods in them (at least in the OO language implementations), as e.g. to create "virtual" fields, computed on the fly from other field values. Could we say that IPs are "passive" objects, whereas processes are "active" - would this help or confuse further?

FBP Definition - "processes" or "components"

While writing the previous issue, I noticed that the definition talks about "components" as nodes, etc. Actually, in my book I distinguish between "components" - the code itself - and "processes" - instances of components in the network. we need to stress that you can have multiple instances of a component in the same network.

That said, I realize that "process" is an ambiguous term in programming. In my book, 2nd ed., page ix. (Preface to 2nd ed.), I found a whole bunch of terms used in the literature for "unit of concurrency" - all no doubt with their own connotations:

process (Erlang)
actor (actor theory)
agent
transaction
thread
operator (MIT, Expressor, et al.)
vat (E language)
island (Tweak)
task (Ada)
resource (Minuet)
stage (John Hartmann’s CMS Pipelines)

I don't know what the derivation of "vat" is - something you brew beer in?

Any preferences?!

FBP definition

@oleksandr, you've mentioned it several times on the mailing list that you've got clear perception of FBP's place among other dataflow systems after reading Matt Carkci's "Dataflow and Reactive Programming Systems" book. Could you probably give it a try and write the Definition page of this wiki when you have time, please?

Terminology - Process

Each component may spawn one or several processes

In FBP, a component is viewed as passive - it can't do anything! So assuming that you mean that each node is a single process, which executes component code, it is not really recommended that one process spawn other processes - unless this is hidden from the network. The discussion of self-modifying networks is a separate issue, and has not really been implemented extensively in FBP.

0-capacity connections

Discussion started by @jpaulm:

I have never been able to support 0-capacity connections in any of my FBP implementations. No problem with capacities of 1 and up, but 0 eludes me! Maybe it's just me, but the DFDM team made a strong effort, and couldn't get it to work! So theoretically, OK... but pragmatically, in my experience, difficult to impossible! So, my question: do we leave 0, leave it with qualification, change it to 1, or...?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.