Code Monkey home page Code Monkey logo

scenic's Introduction

Core Scenic Library

Build Status Codecov Inline Docs

Scenic is a client application framework written directly on the Elixir/Erlang/OTP stack. With it you can build applications that operate identically across all supported operating systems, including MacOS, Ubuntu, Nerves/Linux, and more.

Scenic is primarily aimed at fixed screen connected devices (IoT), but can also be used to build portable applications.

Getting Started

See the documentation for the scenic.new mix task.

Goals

  • Available: Scenic takes full advantage of OTP supervision trees to create applications that are fault-tolerant, self-healing, and highly available under adverse conditions.

  • Small and Fast: The only core dependencies are Erlang/OTP and OpenGL.

  • Self Contained: “Never trust a device if you don’t know where it keeps its brain.” The logic to run a device should be on the device and it should remain operational even if the service it talks to becomes unavailable.

  • Maintainable: Each device knows how to run itself. This lets teams focus on new products and only updating the old ones as the business needs.

  • Remotable: Scenic devices know how to run themselves, but can still be accessed remotely. Remote traffic attempts to be as small so it can be used over the internet, cellular modems, Bluetooth, etc.

  • Reusable: Collections of UI can be packaged up for reuse with, and across applications. I expect to see Hex packages of controls, graphs, and more available for Scenic applications.

  • Flexible: Scenic uses matrices similar to game development to position everything. This makes reuse, scale, positioning and more very flexible and simple.

  • Secure: Scenic is designed with an eye towards security. For now, the main effort is to keep it simple. No browser, javascript, and other complexity presenting vulnerabilities. There will be much more to say about security later.

Non-Goals

  • Browser: Scenic is not a web browser. It is aimed at a fixed screen devices and certain types of windowed apps. It knows nothing about HTML.

  • 3D: Scenic is a 2D UI framework. It uses techniques from game development (such as transform matrices), but it does not support 3D drawing at this time.

  • Immediate Mode: In graphics speak, Scenic is a retained mode system. If you need immediate mode, then Scenic isn’t for you. If you don’t know what retained and immediate modes are, then you are probably just fine. For reference: HTML is a retained mode model.

Contributing

We appreciate any contribution to Scenic.

However, please understand that Scenic is still fairly new and as such, we'll be keeping an extra-close eye on changes.

Check the Code of Conduct and Contributing Guides for more information. We usually keep a list of features and bugs in the issue tracker.

The easiest way to contribute is to help fill out the documentation. Please see the Contributing Guides first.

scenic's People

Contributors

boydm avatar yordis avatar chuabingquan avatar kormie avatar derekbrown avatar skade avatar axelson avatar jb3 avatar nicanor avatar tcoopman avatar tverlaan avatar rodrigues avatar

Watchers

Craig Beck avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.