Metadata-Version: 2.0
Name: sorna
Version: 0.9.1
Summary: Sorna meta-package
Home-page: https://github.com/lablup/sorna
Author: Lablup Inc.
Author-email: joongi@lablup.com
License: LGPLv3
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.6
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Environment :: No Input/Output (Daemon)
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development
Requires-Python: >=3.6
Requires-Dist: sorna-agent (>=0.9,<1.0)
Requires-Dist: sorna-common (>=0.9,<1.0)
Requires-Dist: sorna-manager (>=0.9,<1.0)
Provides-Extra: dev
Provides-Extra: test

Lablup Sorna
============

Sorna ("Software on Remote Networking Appliances") is a distributed
back-end computation service with highly abstracted API. Unlike AWS
Lambda, it provides a preset of kernel images representing various
programming environments and allows users to execute their code snippets
without a cumbersome packaging process. All sub-projects are licensed
under LGPLv3+.

Server-side Components
----------------------

Sorna API Gateway
~~~~~~~~~~~~~~~~~

It routes external API requests from front-end services to agent
instances by checking the instance registry.

-  Package namespace: ``sorna.gateway``, ``sorna.manager``
-  https://github.com/lablup/sorna-manager

Sorna Agent
~~~~~~~~~~~

It manages individual EC2 instances and launches/destroyes Docker
containers where REPL daemons (kernels) run. Each agent on a new EC2
instance self-registers itself to the instance registry via heartbeats.

-  Package namespace: ``sorna.agent``
-  https://github.com/lablup/sorna-agent

Sorna REPL
~~~~~~~~~~

A set of small ZMQ-based REPL daemons in various programming languages
and configurations. It also includes a sandbox implemented using
ptrace-based sytem call filtering written in Go.

-  https://github.com/lablup/sorna-repl
-  Each daemon is a separate program, usually named
   "run.{lang-specific-extension}".

Sorna Common
~~~~~~~~~~~~

A collection of utility modules commonly shared throughout Sorna
projects, such as logging and messaging protocols.

-  Package namespaces: ``sorna.proto``, ``sorna``
-  https://github.com/lablup/sorna-common

Client-side Components
----------------------

Sorna Client
~~~~~~~~~~~~

A client library to access the Sorna API servers with ease.

-  Package namespaces: ``sorna.client``
-  https://github.com/lablup/sorna-client

Sorna Jupyter Kernel
~~~~~~~~~~~~~~~~~~~~

Jupyter kernel integration of the Sorna Cloud API.

-  Package namespaces: ``sorna.integration``
-  https://github.com/lablup/sorna-jupyter-kernel

Sorna Media
~~~~~~~~~~~

The front-end support libraries to handle multi-media outputs (e.g., SVG
plots, animated vector graphics)

-  The Python package (``sorna``) is installed *inside* kernel
   containers.
-  To interpret and display media generated by the Python package, you
   need to load the Javascript part in the front-end.
-  https://github.com/lablup/sorna-media

Installation
------------

The Sorna project uses latest features in Python 3.6+ and docker. We
highly recommend to use `pyenv <https://github.com/yyuu/pyenv>`__ to use
an isolated setup with custom Python versions that might not be
supported by your

First, install Docker on your system. We have tested Sorna on
Linux/Ubuntu and macOS ("Docker for Mac").

For a single PC setup, just run ``pip install sorna``. It will
automatically install all above sub-projects as well as their
dependencies.

Development
-----------

git flow
~~~~~~~~

The sorna repositories use `git
flow <http://danielkummer.github.io/git-flow-cheatsheet/index.html>`__
to streamline branching during development and deployment. We use the
default configuration (master -> preparation for release, develop ->
main development, feature/ -> features, etc.) as-is.


