You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+12-55Lines changed: 12 additions & 55 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,79 +15,36 @@ Ask not what Quid2 can do for you but rather what you can do for Quid2!
15
15
16
16
Quid2 is under intense development and not all its parts are currently documented and usable.
17
17
18
-
There is however a part of it that is quite usable and that you might be interested in ..
19
-
20
-
### Quid2-Net, a minimalist content-oriented transport protocol
21
-
22
-
Most widely used Internet transport protocols are point-to-point, think [TCP](https://en.wikipedia.org/wiki/Transmission_Control_Protocol) or [HTTP](https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol).
23
-
24
-
quid2-net is, on the contrary, a content-oriented protocol.
25
-
26
-
Data does not flow from A to B but rather all data of the same type flows on a single, globally unique, channel.
27
-
28
-
Briefly:
29
-
* For every data type there is a corresponding channel
30
-
* A channels transfer only data values of its associate type
31
-
* Anyone can send and receive data values
32
-
33
-
You can [see it in action](http://quid2.org/app/ui).
34
-
35
-
Under the *Channels* tab are listed the currently open channels, every channel has a type and you can see its full definition by clicking on *Definition*.
36
-
37
-
Definitions are just plain algebraic data types (with a couple of restrictions: data types definitions cannot be mutually recursive and variables can appear only in kind * positions).
38
-
39
-
For example, you should see a *Message* channel that is used to implement a simple chat system. Click on *Show Values* to inspect the value being transferred and then use the [chat user interface](http://quid2.org/app/chat) to login and send a couple of messages and see them appear on the channel.
40
-
41
-
Under the *Types* tab, is the list of types known to the system.
42
-
43
-
#### Minimalist and Evolvable
44
-
45
-
quid2-net does not provide any other service beyond full-duplex typed communication, any other service (e.g. identification or encryption) has to be provided by the clients themselves but that can be done easily and independently by simply creating data types that stands for the additional functionality required.
46
-
47
-
#### Current Implementation
48
-
49
-
Though quid2-net is eventually meant to develop into an universal, vendor-free tranport protocol, its current incarnation is provided by a single central router.
50
-
51
-
Channel could in principle be implemented using different network protocols, currently they are based on [websockets](https://en.wikipedia.org/wiki/WebSocket), so they are full-duplex, HTTP compatible, TCP connections.
52
-
53
-
#### APIs
54
-
55
-
Currently the quid2-net API is available only for the [Haskell](http://www.haskell.org) language, see [quid2-net](https://github.com/tittoassini/quid2-net).
56
-
57
-
APIs for other programming languages are planned and help would be greatly appreciated.
58
-
59
-
### How Do I Use It?
60
-
61
-
Install Quid2 as specified below and then look at [quid2-net-apps](https://github.com/tittoassini/quid2-net-apps) and [quid2-net-apps-ghcjs](https://github.com/tittoassini/quid2-net-apps-ghcjs) for examples of how to develop stand-alone and www applications.
18
+
There is however a part of it that is quite usable and possibly also useful: [top](https://github.com/tittoassini/top), the typed oriented protocol.
* Example applications for [top](https://github.com/tittoassini/top).
27
+
*[top](https://github.com/tittoassini/top)
28
+
* API for top, the typed oriented protocol.
72
29
*[typed](https://github.com/tittoassini/typed)
73
30
* Language independent, absolute types.
74
31
*[flat](https://github.com/tittoassini/flat)
75
32
* Principled and efficient serialization.
76
33
*[model](https://github.com/tittoassini/model)
77
34
* Derivation of data type models from Haskell data types.
78
35
79
-
A related project is [router](https://github.com/tittoassini/router), the message router used to implement the [quid2-net](https://github.com/tittoassini/quid2-net) service.
36
+
A related project is [router](https://github.com/tittoassini/router), the message router used to implement the [top](https://github.com/tittoassini/top) service.
This will retrieve the whole quid2 suite and build all subprojects except [quid2-net-apps-ghcjs](https://github.com/tittoassini/quid2-net-apps-ghcjs), as setting up ghcjs takes a long time.
42
+
This will retrieve the whole quid2 suite and build all subprojects except [quid2-net-apps-ghcjs](https://github.com/tittoassini/top-apps-ghcjs), as setting up ghcjs takes a long time.
86
43
87
-
To verify that all works, start up the `quid2-chat` program:
44
+
To verify that all works, start up the `top-chat` program:
88
45
89
46
```
90
-
stack exec quid2-chat
47
+
stack exec top-chat
91
48
92
49
Enter your name:
93
50
titto
@@ -96,7 +53,7 @@ Help:
96
53
To send a message: just enter it and press return.
0 commit comments