Summary
In this chapter, we first talked about the Opa slicer. If we do not provide slicing information, the slicer will try to put the code on both sides whenever it is possible and will put the code on only one side when there is no way to put the code on both sides. When this automatic slicing is not enough, we can add slicing annotations (server, client, and both) before functions and modules to tell the slicer on which side we want our code to end. Then, we talked about the three primitives for communicating between clients and servers. Session is a one-way asynchronous communication, cell is a two-way synchronous communication, and network is for broadcasting messages to any number of observers.