+This package is a framework for writing RAN Intelligent Controller
+(RIC) Xapps in python. The framework reduces the amount of code
+required in an Xapp by providing common features needed by all
+Python-based Xapps including communication with the RIC message router
+(RMR) and the Shared Data Layer (SDL).
+
+The framework was designed to suport many types of Xapps, including
+applications that are purely reactive to RMR messages, and general
+applications that initiate actions according to other criteria.
+
+For complete documentation see the ReadTheDocs site for
+`xapp-frame-py <https://docs.o-ran-sc.org/projects/o-ran-sc-ric-plt-xapp-frame-py>`_.
+
+Reactive Xapps
+--------------
+
+A reactive Xapp acts on messages that are delivered (pushed) via RMR.
+The Xapp only takes action upon receipt of an RMR message. The Xapp
+never takes action at another time.
+
+This type of application is constructed by creating callback functions
+and registering them with the framework by message type. When an RMR
+message arrives, the appropriate callback is invoked based on the
+message type. An Xapp may define and register a separate callback for
+each expected message type. Every Xapp must define a default callback
+function, which is invoked when a message arrives for which no
+type-specific callback was registered. An analogy of this is AWS
+Lambda: "execute this code every time an event comes in" (the code to
+execute can depend on the type of event).
+
+General Xapps
+-------------
+
+A general Xapp acts according to its own criteria, which may include
+receipt of RMR messages.
+
+This type of application is constructed by creating a single function
+that is invoked by the framework after initialization. Typically that
+function contains a `while (something)` event loop. When the function
+returns, the Xapp stops. In this usage, the Xapp must fetch its own
+data, either from RMR, SDL or other source. The framework does less
+work for a general application compared to a reactive application; the
+framework only sets up an RMR thread and an SDL connection before
+invoking the client-provided function.