Values and Goals of Exosphere
What
- We do
- Reduce incidental complexity (cognitive load) of managing cloud compute workloads
- Support non-proprietary infrastructure ecosystems (e.g. OpenStack)
- Give people useful tools, rather than exploit them or tie them to a platform
- We are NOT doing
- Building a capital-P Platform
- Adding core features which enable vendor lock-in
Who we're doing it for
- Users
- People who need a friendly way to manage:
- Big/fast computers
- Computers that are on and available 24/7
- Disposable computers to try "this one thing"
- Containers, functions, or data (independently of "computers")
- In order to:
- Store, analyze, visualize, curate, and share their data
- Develop and deploy software and services
- ??? Surprise us!
- People who need a friendly way to manage:
- Cloud Operators
- Exosphere Contributors
- Exosphere Developers
- Those in the community who interact with the project
"Markets" served: - Researchers who have access to institutional cloud resources (e.g. Jetstream Cloud) - Users and operators of OpenStack public/private cloud services
How we're doing it
- User-, operator-, contributor-friendly
- Build things that others find rewarding to consume, troubleshoot, repair, and extend
- [D] Keeping the internal complexity of project as low as possible, thus making it easier for contributors to participate and reducing the scope for error
- Developer tooling that is rewarding to use
- Open, community-driven approach
- Engineer a great contributor experience (especially new contributors)
- Open source, permissively licensed
- Open development process (issues, MRs, roadmap)
- Sustainable project designed to outlast founding developers' involvement
- Stable core yet extensible
- Only stable code enabled in default build
- Experiments belong in extensions or features enabled via configuration
Functional scope of Exosphere Project
What we're already doing
(benefits U for users, O for operators, C for Exosphere contributors)
- [U] Build an app that delivers the most user-friendly way to interact with non-proprietary cloud infrastructure
- [UO] Provide a consistent UX across infrastructures operated by different groups
- [UOC] Client is really easy to consume and offer
- [U] Build a client that can be pointed at infrastructure operated by anyone
- (as opposed to building a platform or walled garden)
- [U] Empower people to use Exosphere along with other tools to manage the same resources, with minimal cost of switching
- i.e. make it easy to move away from Exosphere to other tools and come back at will
- [UO] Supporting those who value security
- No backdoor SSH key needed on instances
- No need for app to have god-mode cloud admin access
- Small, well-defined set of dependencies and "moving parts"
- CI+CD scans app dependencies and alerts on known vulnerabilities
- [UOC] Stability
- Reliable instance provisioning minimizes user frustration and operator support burden
- No runtime exceptions in client
- No custom backend (for core functionality) where things break between client and infrastructure
- [C] Velocity/pleasure of Development
- Extremely short tweak-test cycle for entire app (a couple of seconds)
- Continuous deployment
- Allows rapid iteration on user feedback, quick bug fixes, and cheap experimentation
- Browser dev tools expose all API calls to OpenStack
- Only one (small) programming language to learn to become productive
- Same language for both UI and app logic
- Compiler eliminates several classes of bugs
- Delivers level of assurance that would require extremely diligent code testing effort in most other languages
- Allows fearless refactoring (and accepting of community contributions)
Non-features (definitely not on the roadmap)
- Requiring custom (backend) services to support core features
- Re-inventing that which is both time-consuming and not uniquely valuable, e.g.
- User auth (OpenStack handles this for us, but see "Institutional Single Sign-on" below)
- User/resource pools (currently using OpenStack projects)
What we will do (driven by community needs & funding)
(* means contingent on funding)
- Automated deployment of custom services/apps (e.g. scientific workloads) on user's cloud resources
- One-click installation of common tools like Jupyter Notebook, RStudio, et al. at instance launch time
- Automated deployment of parallel data processing workflows
- Support for modern / "cloud-native" workloads
- Cluster orchestration, possibly using OpenStack Heat / Magnum
- Support for container-based and notebook-based workloads as first-class citizens
- In progress - proofs of concept exist
- Support for graphical workloads
- "I want a GUI" checkbox deploys a GUI desktop at instance launch time
- 3D-accelerated remote graphical session (perhaps TurboVNC, or Xpra)
- Support for high-security workloads
- Deploy bastion hosts, servers with no public IP addresses
- Polish the UX
- Smoother client install/upgrade process, signed binaries
- Dashboard with overview of resources for all providers
- Empower users to share cloud resources with collaborators
- Extension points (for plugins and 'no-recompile' customization - e.g. white-label / skinning, internationalization)
- * Institution-specific integrations to enhance the UX and cloud operator effectiveness. Examples: - * Institutional Single Sign-on with OpenStack credential management/leases - * Allocation service and tools - * Reporting tools for operators and project PIs - * Support/ticketing systems (e.g. Intercom, Zendesk) - * On-premises reverse proxy server (OpenStack services behind firewall)
- * Data management tools for users
- * Sync user settings between devices
- * Support for cloud providers other than OpenStack - * Either other open cloud computing APIs or to help users control/limit their spending on commercial clouds
- * On-demand import of images from Atmosphere side of Jetstream1