encoding: adopt naming convention for conversions

Change-Id: I626753fdc2a8b8ffb03d3a64ec5514f7cb6d06bf
Reviewed-on: https://cue-review.googlesource.com/c/cue/+/2440
Reviewed-by: Marcel van Lohuizen <mpvl@golang.org>
diff --git a/encoding/doc.go b/encoding/doc.go
index 12c3a28..c3cd793 100644
--- a/encoding/doc.go
+++ b/encoding/doc.go
@@ -14,4 +14,23 @@
 
 // Package encoding contains subpackages to convert CUE to and from byte-level
 // and textual representations.
+//
+// For some packages, CUE can be mapped to both concrete values and higher-level
+// definitions. For instance, a Go value can be mapped based on its concrete
+// values or on its underlying type. Similarly, the protobuf package can extract
+// CUE definitions from .proto definitions files, but also convert proto
+// messages to concrete values.
+//
+// To clarify between these cases, we adopt the following naming convention:
+//
+//    Name        Direction   Level    Example
+//    Decode      x -> CUE    Value    Convert an incoming proto message to CUE
+//    Encode      CUE -> x    Value    Convert CUE to JSON
+//    Extract     x -> CUE    Type     Extract CUE definition from .proto file
+//    Generate    CUE -> x    Type     Generate OpenAPI definition from CUE
+//
+// To be more precise, Decoders and Encoders deal with concrete values only.
+//
+// Unmarshal and Marshal are used if the respective Decoder and Encoder decode
+// and encode from and to a stream of bytes.
 package encoding