--
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.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/5382ff49-3c1f-45c8-ae92-71d11d9e136ao%40googlegroups.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-progra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CADmm%2BKcY5qFEQfch_Ywa5Z3s7Uk1NV1FBE%3D9Se8M4U2r%2BLAjAA%40mail.gmail.com.
On Jul 14, 2020, at 11:43 AM, Paul Morrison <jpau...@gmail.com> wrote:
--
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.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CAHttgx7Uk9V_DkxQ535aPrtMqGgVzEJj4T2g4908_oBeULA_Vg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/147B67BD-961A-491A-A1FE-EA0B8F6BF013%40gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CAHttgx6ttk2teA79H0bZT0DhO0C6gYNkNK6Xhi%2BVhDzOLABtBw%40mail.gmail.com.
Tom
Young
47 MITCHELL ST.
STAMFORD, CT 06902
When
bad men combine, the good must associate; ...
-Edmund
Burke 'Thoughts on the cause of the present discontents' , 1770
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CAFw6Ow-Y4UhXy39tZ6q1oGygWLGJp6LZMbZfr0rW9kjiJThYSA%40mail.gmail.com.
There seem to be all sorts of flow-based products showing up, some being incubated by Apache, many not... Given the number of FBP-ish projects under Apache, is there any kind of "Apache-wide" attempt to consolidate them - and acknowledge prior art? And I believe NiFi was incubated under Apache (right terminology, Joe?).
One of the problems seems to be terminology - for instance, your term "topology" seems to correspond to FBP's "network", whereas I use the term "topology" to refer to the general shape of a network... These language issues are going to pop up increasingly - especially now that flow-based programming is becoming an international movement!
I ran into a similar problem for my book, trying to find a general term for "unit of concurrency": on page ix of the Preface to the 2nd ed. of my book, I list 11, found just by Googling "unit of concurrency" - the weirdest IMO is "vat"! I finally settled on "process" - I think this corresponds to what Flink calls "stateful computation"...?
Flink and Spark seem to use "batch" slightly differently from the conventional usage - "batch" is what programming was in the first few decades of my career! That was all we did in those days! Of course, what I think you would call "a batch" would in those days normally be a whole file: the first flow-based application to go live (mid-'70s) was processing millions of transactions and/or records every night, as a single batch! Now, of course, FBP supports interactive patterns comfortably - Facebook's Flux is a flow-based technology - see https://www.youtube.com/embed/i__969noyAM . Again, in the old days, there was a hard and fast distinction between "batch" and "online", with different software packages supporting them - FBP removes that distinction: in the FBP e-Brokerage app I worked on a few years ago (briefly described on pp. 205-207 of the 2nd ed.), it was interactive, but trades were sent to remote processing sites, called “back-ends”, where choice of back-end sites depended not only on the type of trade, but also even on the time of day. The remote processing sites could batch up trades as they saw fit, and respond asynchronously.
In FBP potentially all streams are "endless", but, since we have never implemented hot switching of components (yet, AFAIK), streams normally have a beginning and an end... In FBP, we also have the capability of grouping IPs into nested batches, called "substreams", by using bracket IPs. The concepts of substreams and substream-sensitive ports are very powerful, and play well with checkpointing. You might find interesting the chapter on checkpointing in my book - Chap. 19 of the 2nd edition.
Given all the Apache projects that seem to involve flow-based programming in some way, I am curious whether there is an ongoing effort to establish common ground between them, and maybe converge them. A number of people working in the FBP field over the years have tried to extract and highlight common concepts and develop categorizations for FBP and FBP-like projects: one such effort is https://github.com/flowbased/flowbased.org/wiki by Vladimir Sibirov; another is a spreadsheet developed by Tom Young, but I don't know how far he got with it... For a rough list (not up to date) of FBP-ish projects, see also https://jpaulm.github.io/fbp/links_external.html ...
One last comment: I know my book is TLDR, but I got tired writing innumerable papers (which usually got rejected), where the first 3/4 would be an attempt to distill about 50 years (as of now) of experience with FBP technology (and I couldn't just assume that the reader already understood FBP), so I decided to just write a big book, and later a 2nd. edition. And yes, I know I talk about technologies that very few of today's programmers even know about... but they are almost certainly still in use somewhere! As witness the recent call for COBOL programmers (and, yes, I did write one COBOL program in my 60 years of programming, and, no, I don't want to write another one !).
This post is probably also TLDR, so I'll stop here!Best regards, and thanks for your interest,
--
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.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CAHttgx7-wBv5WPe%3Dt6_cjD6DRrWL4pVktx8%2BLgwpTkWQ0aUqCw%40mail.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-progra...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CADmm%2BKcYXE5tEWqBvG7McuNdhRcu%3D%3DMk6Ab%2BaY86D8KONcb0Xw%40mail.gmail.com.
You're right, I just realized that "network" is another term with many different usages... I guess "diagram" might work, but "running a diagram" seems odd! There is/was a school of thought that suggested the industry use completely made-up terms to avoid any previous associations. I thought of "DPN" for "data process network", but turns out this is a skin condition... Suggestions, anyone?!
net a network proc a process tool a type of component, or class of proc (part?) pipe a connector port a file descriptor (in this implementation) thing an object pack an information packet type class of an object, a tool is the type of a proc flow a stream of packets bit the boolean type rel a relation
--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.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CABv%3DvUf2OdbA6ghqC77veY8%3DTwdO-fVfPQV-Dwu7eEV_ijA6eQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CAHttgx5K3yCDkwF2-e%3DA-8WmhpHoaHfrK0hsm-0srP6vS6fKgQ%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CAHttgx5K3yCDkwF2-e%3DA-8WmhpHoaHfrK0hsm-0srP6vS6fKgQ%40mail.gmail.com.
What I meant that IPs are not in focus is that they are more often than not just a packet of opaque content/bytes, where there is no "meaning" or "behavior" involved. Each consumer is somehow aware of the format and any implied behavior assigned.I haven't read your book, but I get the impression on this list that IPs have a more central role...As for concurrency in Flink; you can define ways to split the stream and they will be handled by a dynamic set of pipelines (possibly set at runtime), and the programmer provides the algorithm for how to determine which message goes to which split. For stateful systems, it is normally done by extracting some key and same key is guaranteed to go the same path each time. A large degree of freedom is provided.Also, the programmer's logical view contains handing messages from node to node, but in the physical world, that can be in-process, inter-process on the same host or across the network. I think the idea is that Flink will try to optimize that, and for small topologies/nets/diagrams, they tend to end up in the same process.Another interesting project is Wallaroo... Here the platform is written in Pony, which is a programming language with very interesting concurrency properties (worth a long post in itself, and the language I have written a back end with noflo protocol), but in Wallaroo each processing node is in the more "friendly" language Python. The platform probably qualifies for FBP classification, but I doubt that the developers are aware of it ...NiclasOn Thu, Jul 16, 2020, 01:42 Paul Morrison <jpau...@gmail.com> wrote:Thanks, Niclas, for a very complete answer! I can sense my head starting to explode! It will take a younger/smarter person than me to organize the concepts behind all these threads!FBP has tended to develop organically, in the context of real applications, and it sounds like this is what happens in Apache, but usually we were under less pressure, starting with small teams. Plus we had an overarching architecture, so usually development did not involve infrastructure changes - just applications and componentry. If we were lucky, general components would sort of "fall out", benefiting everybody!You're right, I just realized that "network" is another term with many different usages... I guess "diagram" might work, but "running a diagram" seems odd! There is/was a school of thought that suggested the industry use completely made-up terms to avoid any previous associations. I thought of "DPN" for "data process network", but turns out this is a skin condition... Suggestions, anyone?!By "unit of concurrency", I meant that, if Flink is running streams of data through stateful computations, the latter have to be running asynchronously, so each stateful computation has to be a separate "process" or at least "thread"...In my book, I reference something called "Apache Pig", and also "Cascading" in connection with Hadoop - don't know if they still exist...?I don't understand how you can have "streaming" without IPs...?! I know IP could be "Intellectual Property".. but assuming that's not the problem, IMO streaming has to involve data in "chunks" - the von Neumann concept as data being something passive in a storage area doesn't cut it! FBP IPs have also gone through some name changes: the first name was "entity", but we realized that this conflicted with "entity" in Data-Driven Design, although of course they map onto each other...I can relate to your story about Deutsche Bank... Some years ago, the US Navy (I think) found that many or most of their magnetic tapes were unreadable - not because they had deteriorated, but because the formats were defined in application programs, and nobody knew which tapes were read or written by which programs!Thanks for the feedback! Maybe there will be a great convergence! Have I told you about Steven Traugott's 2006 article, called "The Convergence" - I think it was prescient! http://www.jpaulmorrison.com/cgi-bin/wiki.pl?TheConvergence . This is on my old C2-style wiki, so it's sort of a conversation...Best regards,Paul M.
--
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.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CADmm%2BKf16_-L7URRKZ-tRPkQ-2P18VKJfPcwqJt9FSPS4WVa3w%40mail.gmail.com.
Hi Niclas,Yes, we do think of IPs as "packets", but you are introducing another dimension which is interesting, but I think orthogonal to FBP concepts... This seems related to Denis Garneau's and my work on Business Data Types during my last stint at IBM - see https://jpaulm.github.io/busdtyps.html . This has in fact been a hot button of mine for years, but FBP's success is in large part due to our drawing definite boundaries around it!So... IPs are only central in the sense that IMO FBP wouldn't work without that concept. I think there are two possible paths: 1) have IPs with defined lifetimes, and unique ownership at any point in time, or 2) make them immutable, à la NiFi. Ellis and Gibbs, in their 1989 paper, in the early days of OO, distinguished between "active objects" and "passive objects": the former are our processes, and the latter are IPs. They felt this distinction was necessary to ensure OO's usability in the long term...Re concurrency, I would again argue that this concept is central to FBP, but at a logical level - the actual software and hardware mechanism can vary widely between implementations... e.g. green threads, red threads, and various hybrids...Sorry for running on!
--
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.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CADmm%2BKch%3DnxDM%2B662_EBPShf-mxJH%3DEeMm2kr_Q87xn_%3DogzfA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CAD2gp_RRfwG%2BgR0jcdLvzVR%2BkT8XeMTg0SkoRmo-XYEji8R4Pg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CADmm%2BKdfOJRbbBWRMjs3gL_p2tEPxkynKpjNjt6M4USGaUG2ag%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CAD2gp_RB%3DRiX5eKX%3DE0gaSC6fu%2B3ztHEvJBgmEXtyyAm9X3vVg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/CADmm%2BKfQPNfHfDsQs%3D9FTXhdz_PpY6PErbDg9K2vH1RA_iUXHw%40mail.gmail.com.
Tom
Young
3013 Aura Lane
Summerville, SC 29483
When
bad men combine, the good must associate; ...
-Edmund
Burke 'Thoughts on the cause of the present discontents' , 1770
To view this discussion on the web visit https://groups.google.com/d/msgid/flow-based-programming/b77429b5-ca8b-404e-8d60-7157fcf08204n%40googlegroups.com.
Hi All,
TIA