diff -r 36a8ecc8fb45 -r 297da74fcab2 relpipe-data/index.xml --- a/relpipe-data/index.xml Sat Nov 24 17:01:54 2018 +0100 +++ b/relpipe-data/index.xml Sun Nov 25 01:03:26 2018 +0100 @@ -8,9 +8,47 @@

- The world is relational! + One of the great parts of the + + + culture is the inventionwhich is attributed to Doug McIlroy, see The Art of Unix Programming: Pipes, Redirection, and Filters + of pipes and the ideasee The Art of Unix Programming: Basics of the Unix Philosophy + that one program should do one thing and do it well.

+

+ Each running program (process) has one input stream (called standard input or STDIN) and one output stream (called standard output or STDOUT) and also one additional output stream for logging/errors/warnings (STDERR). + We can connect programs and pass the STDOUT of first one to the STDIN of the second one (etc.) using pipes. +

+ + + +

+ According to this principle we can build complex and powerful programs (pipelines) by composing several simple, single-purpose and reusable programs. + Such single-purpose programs (often called filters) are much easier to create, test and optimize and their authors don't have to bother about the complexity of the final pipeline. + They even don't have to know, how their programs will be used in the future by others. + This is a great design principle that brings us advanced flexibility, reusability, efficiency and reliability. Simply: awesome. + Being in any role (author of a filter, builder of a pipeline etc.), we can always focus on our task only and do it well. + And we can collaborate with others even if we don't know about them and we don't know that we are collaborating. + Now think about putting this together with the free software ideas... How very! +

+ + + +

What are?

+ +

+ are an open data format designed for streaming structured data between two processes. + Simultaneously with the format specification, we are also developing a reference implementation (libraries and tools) as a free software. + Although we believe in the specification-first (or contract-first) approach, we always look and check, whether the theoretic concepts are feasible and whether they can be reasonably and reliably implemented. + So befeore publishing any new specification or its version, we will verify it by creating a reference implementation at least in one programming language. +

+

+ More generally, are a philosophical continuation of the classic pipelines and the relational model. +

+ + +

What are not?

+ +

+ respect the existing ecosystem and are rather an improvement or supplement than a replacement. + So are not a: +

+ + + + +

Project status

+ +

+ The main ideas and the roadmap are quite clear, but many things will change (including the format internals and interfaces of the libraries and tools). + Because we know how important the API and ABI stability is, we are not ready to publish the version 1.0 yet. +

+

+ On the other hand, the already published tools (tagged as v0.x in v_0 branch) should work quite well (should compile, should run, should not segfault often, should not wipe your hard drive or kill your cat), + so they might be useful for someone who likes our ideas and who is prepared to update own programs and scripts when the new version is ready. +