GoFlow - Flow-based programming for Go

145 views
Skip to first unread message

Vladimir Sibirov

unread,
Feb 13, 2012, 9:53:28 AM2/13/12
to flow-based-...@googlegroups.com
Hi FBP researchers,

I have finally released my small FBP library for Go programming language on GitHub:

It doesn't follow JavaFBP/C#FBP footsteps exactly though. Here are some implementation details:
 - underlying concurrency mechanism is goroutines (lightweight threads in Go);
 - underlying communication mechanism is channels (this part of Go was inspired by late CSP by Hoare and Roscoe);
 - components are programmed in event-driven/reactive manner;
 - reactions on incoming data are independent and asynchronous (inspired by Actor model);
 - there are no IIPs, automatic ports and some other things FBP has, it's minimalistic;
 - processes can modify networks at runtime and pass channels through channels (Go/CSP feature).

More details can be found in project wiki:

I haven't implemented multi-node networks via TCP/UDP yet. I also plan to make a tool that would convert external graphs definitions (e.g. DrawFBP .drw files) into GoFlow code. And of course there other ways in which it could be improved.

Comments on the library are appreciated. I hope somebody finds it useful.

If you haven't heard of Go before, it's a statically typed compiled programming language developed by Google:

--
Regards,
Vladimir

Samuel Lampa

unread,
Oct 16, 2013, 12:46:25 PM10/16/13
to flow-based-...@googlegroups.com
Hi Vladimir,
 
 - processes can modify networks at runtime and pass channels through channels (Go/CSP feature).

I find this to be a highly interesting feature as AFAIS it allows, in theory, to implement a query system in GoFlow, that would construct the network on demand, based on some query (say, written in SPARQL or some SQL dialect etc).

Any thoughts / plans in that direction? :)

Cheers
// Samuel

Samuel Lampa

unread,
Oct 16, 2013, 12:54:40 PM10/16/13
to flow-based-...@googlegroups.com
On 2013-10-16 18:46, Samuel Lampa wrote:
> Hi Vladimir,
>
> - processes can modify networks at runtime and pass channels
> through channels (Go/CSP feature).
>
>
> I find this to be a highly interesting feature as AFAIS it allows, in
> theory, to implement a query system in GoFlow, that would construct
> the network on demand, based on some query (say, written in SPARQL or
> some SQL dialect etc).

I was going to add "datalog / prolog" here as well, but managed to edit
it out ...
(Think prolog could have a somewhat brighter future with that kind of a
"modern", scalable implementation)

Cheers
// Samuel

Vladimir Sibirov

unread,
Oct 16, 2013, 1:24:15 PM10/16/13
to flow-based-...@googlegroups.com
Hi Samuel,

NoFlo is already making progress in this direction with its "NoFlo runtime protocol", see https://github.com/noflo/noflo/issues/107. I think using a domain specific protocol is better than embedding a generic query language interpreter into the runtime.

GoFlow lags behind but the changes that are being made in "runtime_manipulation" branch to support NoFlo graph definition format will also make it possible to implement runtime manipulation protocol in a not so distant future.


2013/10/16 Samuel Lampa <samuel...@gmail.com>


--
You received this message because you are subscribed to the Google Groups "Flow Based Programming" group.
To unsubscribe from this group and stop receiving emails from it, send an email to flow-based-programming+unsub...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.



--

Best regards,
Vladimir Sibirov

Samuel Lampa

unread,
Oct 16, 2013, 1:35:56 PM10/16/13
to flow-based-...@googlegroups.com
Thanks for the link, Interesting!

// Samuel

On 2013-10-16 19:24, Vladimir Sibirov wrote:
> Hi Samuel,
>
> NoFlo is already making progress in this direction with its "NoFlo
> runtime protocol", see https://github.com/noflo/noflo/issues/107. I
> think using a domain specific protocol is better than embedding a
> generic query language interpreter into the runtime.
>
> GoFlow lags behind but the changes that are being made in
> "runtime_manipulation" branch to support NoFlo graph definition format
> will also make it possible to implement runtime manipulation protocol
> in a not so distant future.
>
>
> 2013/10/16 Samuel Lampa <samuel...@gmail.com
> <mailto:samuel...@gmail.com>>
>
> On 2013-10-16 18:46, Samuel Lampa wrote:
>
> Hi Vladimir,
>
> - processes can modify networks at runtime and pass channels
> through channels (Go/CSP feature).
>
>
> I find this to be a highly interesting feature as AFAIS it
> allows, in theory, to implement a query system in GoFlow, that
> would construct the network on demand, based on some query
> (say, written in SPARQL or some SQL dialect etc).
>
>
> I was going to add "datalog / prolog" here as well, but managed to
> edit it out ...
> (Think prolog could have a somewhat brighter future with that kind
> of a "modern", scalable implementation)
>
> Cheers
> // Samuel
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Flow Based Programming" group.
> To unsubscribe from this group and stop receiving emails from it,
> send an email to
> flow-based-progra...@googlegroups.com
> <mailto:flow-based-programming%2Bunsu...@googlegroups.com>.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
>
> --
>
> Best regards,
> Vladimir Sibirov
> --
> You received this message because you are subscribed to the Google
> Groups "Flow Based Programming" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to flow-based-progra...@googlegroups.com.
> For more options, visit https://groups.google.com/groups/opt_out.


--
Developer at www.uppmax.uu.se & www.farmbio.uu.se
M: samuel...@it.uu.se
G: samuel...@gmail.com
S: samuellampa
P: +4670-2073732
T: @smllmp
B: saml.rilspace.org

Reply all
Reply to author
Forward
0 new messages