mirror of
https://github.com/enso-org/enso.git
synced 2024-12-23 19:21:54 +03:00
269 lines
13 KiB
Markdown
269 lines
13 KiB
Markdown
<p align="center">
|
||
<a href="https://enso.org">
|
||
<img src="https://user-images.githubusercontent.com/1623053/114557275-cbd27a80-9c69-11eb-9e4d-a60187cdb7a4.gif" width="640" height="640"/>
|
||
</a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="https://discord.gg/enso">
|
||
<img src="https://img.shields.io/discord/401396655599124480.svg?label=&logo=discord&logoColor=ffffff&color=7389D8&labelColor=6A7EC2"
|
||
alt="Chat">
|
||
</a>
|
||
<a href="https://github.com/enso-org/enso/actions">
|
||
<img src="https://github.com/enso-org/enso/workflows/Engine%20CI/badge.svg"
|
||
alt="Actions Status">
|
||
</a>
|
||
<a href="https://github.com/enso-org/enso/actions">
|
||
<img src="https://github.com/enso-org/enso/workflows/GUI%20CI/badge.svg"
|
||
alt="Actions Status">
|
||
</a>
|
||
<a href="https://github.com/enso-org/enso/blob/develop/LICENSE">
|
||
<img src="https://img.shields.io/static/v1?label=Compiler%20License&message=Apache%20v2&color=2ec352&labelColor=2c3239"
|
||
alt="License">
|
||
</a>
|
||
<a href="https://github.com/enso-org/enso/blob/develop/app/gui2/LICENSE">
|
||
<img src="https://img.shields.io/static/v1?label=GUI%20License&message=AGPL%20v3&color=2ec352&labelColor=2c3239"
|
||
alt="License">
|
||
</a>
|
||
</p>
|
||
|
||
<br/>
|
||
|
||
# [Enso.org](https://enso.org). Get insights you can rely on. In real time.
|
||
|
||
Enso is an award-winning interactive programming language with dual visual and
|
||
textual representations. It is a tool that spans the entire stack, going from
|
||
high-level visualization and communication to the nitty-gritty of backend
|
||
services, all in a single language. Watch the following introduction video to
|
||
learn what Enso is, and how it helps companies build data workflows in minutes
|
||
instead of weeks.
|
||
|
||
<br/>
|
||
|
||
<a href="https://www.youtube.com/watch?v=fQvWMoOjmQk" rel="nofollow">
|
||
<img width="692" alt="Screenshot 2021-04-15 at 12 16 32" src="https://user-images.githubusercontent.com/1623053/114854125-c8173300-9de4-11eb-9b10-99a331eb2251.png">
|
||
</a>
|
||
|
||
<br/>
|
||
|
||
<br/>
|
||
|
||
# Enso's Features
|
||
|
||
Turning your data into knowledge is slow and error-prone. You can’t trust tools
|
||
that don’t embrace best practices and provide quality assurance. Enso redefines
|
||
the way you can work with your data: it is interactive, provides intelligent
|
||
assistance, and was designed on a strong mathematical foundation, so you can
|
||
always trust the results you get.
|
||
|
||
<img align="left" width="44px" src="https://raw.githubusercontent.com/enso-org/icons/master/blue/with-bg/it/web-apps-development/001-algorithm.svg">
|
||
<ul><ul>
|
||
<b>Intelligent suggestions of possible next steps. Build workflows in minutes instead of weeks.</b><br/>
|
||
Enso analyses the data, suggests possible next steps, and displays related
|
||
help and examples. It lets you build dashboards, RPA workflows, and apps,
|
||
with no coding required. Enso ships with a robust set of libraries, allowing
|
||
you to work with local files, databases, HTTP services, and other
|
||
applications in a seamless fashion.
|
||
<br/><a href="https://enso.org">Learn more →<a/>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="44px" src="https://raw.githubusercontent.com/enso-org/icons/master/blue/with-bg/it/badges/018-military.svg">
|
||
<ul><ul>
|
||
<b>Reproducible, trustworthy results.</b><br/>
|
||
Versioning and visual data quality management allow you to trust the results
|
||
that you get.
|
||
<br/><a href="https://enso.org">Learn more →<a/>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="44px" src="https://raw.githubusercontent.com/enso-org/icons/master/blue/with-bg/it/basic-ui/041-graph.svg">
|
||
<ul><ul>
|
||
<b>A powerful, purely functional language. Both visual and textual.</b><br/>
|
||
Enso incorporates many recent innovations in data processing and programming
|
||
language design to allow you to work interactively and trust the results
|
||
that you get. It is a purely functional programming language with
|
||
higher-order functions, user-defined algebraic datatypes, pattern-matching,
|
||
and two equivalent representations that you can switch between on-demand.
|
||
<br/><a href="https://enso.org">Learn more →<a/>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="44px" src="https://raw.githubusercontent.com/enso-org/icons/master/blue/with-bg/it/business/036-puzzle.svg">
|
||
<ul><ul>
|
||
<b>Mix languages with close-to-zero interop overhead.</b><br/>
|
||
Import any library from Enso, Java, JavaScript, R, or Python, and use
|
||
functions, callbacks, and data types without any wrappers. Enso uses
|
||
<a href="https://www.graalvm.org">GraalVM</a> to compile them to the same
|
||
instruction set with a unified memory model.
|
||
<br/><a href="https://enso.org">Learn more →<a/>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="44px" src="https://raw.githubusercontent.com/enso-org/icons/master/blue/with-bg/it/startup-and-new-business/051-rocket.svg">
|
||
<ul><ul>
|
||
<b>Fast. Up to 80x faster than Python.</b><br/>
|
||
It can even run other languages faster than their official runtimes.
|
||
<a href="https://github.com/oracle/fastr">Enso-R (using FastR on the GraalVM)</a>
|
||
is 36x faster than GNU-R.
|
||
<br/><a href="https://github.com/enso-org/benchmarks">See benchmarks →<a/>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="44px" src="https://raw.githubusercontent.com/enso-org/icons/master/blue/with-bg/it/school/063-palette.svg">
|
||
<ul><ul>
|
||
<b>A cutting-edge visualization engine.</b><br/>
|
||
Enso is equipped with a highly-tailored WebGL visualization engine capable
|
||
of displaying many millions of data points at 60 frames per second in a web
|
||
browser. Currently, Enso includes a set of core data visualizations out of
|
||
the box, and you can easily extend it with libraries such as D3.js,
|
||
Three.js, Babylon.js, deck.gl, VTK.js, Potree, and many more.
|
||
<br/><a href="https://enso.org">Learn more →<a/>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="44px" src="https://raw.githubusercontent.com/enso-org/icons/master/blue/with-bg/it/shipping/004-cargo-ship.svg">
|
||
<ul><ul>
|
||
<b>Runs everywhere.</b><br/>
|
||
Enso is available on macOS, Windows, and GNU/Linux, and the Enso IDE runs on
|
||
web-native technologies. In time, you'll be able to run it in the
|
||
web-browser, giving even your tablet and phone access to your data.
|
||
<br/><a href="https://enso.org">Learn more →<a/>
|
||
</ul></ul>
|
||
|
||
<br/>
|
||
|
||
# Getting Started
|
||
|
||
<img align="right" alt="An example Enso graph" src="https://user-images.githubusercontent.com/1623053/105841783-7c1ed400-5fd5-11eb-8493-7c6a629a84b7.png" width="380">
|
||
|
||
<img align="left" width="36px" src="https://github.com/google/material-design-icons/blob/master/src/action/get_app/materialiconsround/24px.svg">
|
||
<ul><ul>
|
||
<b>Download Enso</b><br/>
|
||
<ul>
|
||
<li><a href="https://github.com/enso-org/enso/releases">Enso Interactive Environment</a></li>
|
||
<li><a href="https://github.com/enso-org/enso/releases">Enso Compiler (CLI, optional)</a></li>
|
||
</ul>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="36px" src="https://github.com/google/material-design-icons/blob/master/src/social/school/materialiconsround/24px.svg">
|
||
<ul><ul>
|
||
<b>Watch Tutorials</b><br/>
|
||
<ul>
|
||
<li><a href="https://github.com/enso-org/enso/blob/develop/app/gui/docs/product/shortcuts.md">Enso keyboard shortcuts</a></li>
|
||
<li><a href="https://youtu.be/_Twh45PI_vU&list=PLk8NuufOVK01GhaObYr1_gqeASlkj2um0">Enso 101</a></li>
|
||
<li><a href="https://youtu.be/hFxugfGbvGI?list=PLk8NuufOVK01GhaObYr1_gqeASlkj2um0">Analyze trams data</a></li>
|
||
<li><a href="https://youtu.be/gXnojGR6wOI?list=PLk8NuufOVK01GhaObYr1_gqeASlkj2um0">Analyze GitHub Stargazers data</a></li>
|
||
<li><a href="https://www.youtube.com/playlist?list=PLk8NuufOVK01GhaObYr1_gqeASlkj2um0">... other tutorials</a></li>
|
||
</ul>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="36px" src="https://github.com/google/material-design-icons/blob/master/src/hardware/cast_for_education/materialiconsround/24px.svg">
|
||
<ul><ul>
|
||
<b>Watch Video Podcasts</b><br/>
|
||
<ul>
|
||
<li><a href="https://www.youtube.com/watch?v=U3pb7HiZIBg&t=2996s&ab_channel=Enso">Enso Textual Language Basics</a></li>
|
||
<li><a href="https://youtu.be/bcpOEX1x06I">Using Java libraries in Enso</a></li>
|
||
<li><a href="https://youtu.be/wFkh5LgAZTs">Custom data visualizations</a></li>
|
||
<li><a href="https://youtu.be/BibjcUjdkO4">Enso vision. What is in the future?</a></li>
|
||
<li><a href="https://www.youtube.com/c/Enso_org/videos?view=2&sort=dd&live_view=503&shelf_id=3">... other video podcasts</a></li>
|
||
</ul>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="36px" src="https://github.com/google/material-design-icons/blob/master/src/communication/forum/materialiconsround/24px.svg">
|
||
<ul><ul>
|
||
<b>Join Our Community</b><br/>
|
||
<ul>
|
||
<li><a href="https://discord.gg/enso">Discord chat. Get help, share your use cases, meet the team behind Enso and other Enso users!</a></li>
|
||
</ul>
|
||
</ul></ul>
|
||
|
||
<img align="left" width="36px" src="https://github.com/google/material-design-icons/blob/master/src/av/new_releases/materialiconsround/24px.svg">
|
||
<ul><ul>
|
||
<b>Keep Up With the Latest Updates</b><br/>
|
||
<ul>
|
||
<li><a href="https://medium.com/@enso_org">Enso Development Blog</a></li>
|
||
<li><a href="http://eepurl.com/bRru9j">Enso Mailing List</a></li>
|
||
</ul>
|
||
</ul></ul>
|
||
|
||
<br/><br/>
|
||
|
||
# Enso Source Code
|
||
|
||
If you want to start _using_ Enso, please see the download links in the
|
||
[getting started](#getting-started) section above. Alternatively, you can get
|
||
the IDE [here](https://github.com/enso-org/enso/releases). This section is
|
||
intended for people interested in contributing to the development of Enso.
|
||
|
||
Enso is a community-driven open source project which is, and will always be,
|
||
open and free to use. Join us, help us to build it, and spread the word!
|
||
|
||
<br/>
|
||
|
||
### Project Components
|
||
|
||
Enso consists of several sub projects:
|
||
|
||
- **Enso Engine:** The Enso Engine is the set of tools that implement the Enso
|
||
language and its associated services. These include the Enso interpreter, a
|
||
just-in-time compiler and runtime (both powered by
|
||
[GraalVM](https://www.graalvm.org)), and a language server that lets you
|
||
inspect Enso code as it runs. These components can be used on their own as
|
||
command line tools.
|
||
|
||
- **Enso IDE:** The
|
||
[Enso IDE](https://github.com/enso-org/enso/tree/develop/app/gui2) is a
|
||
desktop application that allows working with the visual form of Enso. It
|
||
consists of an Electron application, a high performance WebGL UI framework,
|
||
and the searcher which provides contextual search, hints, and documentation
|
||
for all of Enso's functionality.
|
||
|
||
<br/>
|
||
|
||
### License
|
||
|
||
The Enso Engine is licensed under the
|
||
[Apache 2.0](https://opensource.org/licenses/apache-2.0), as specified in the
|
||
[LICENSE](https://github.com/enso-org/enso/blob/develop/LICENSE) file. The Enso
|
||
IDE is licensed under the [AGPL 3.0](https://opensource.org/licenses/AGPL-3.0),
|
||
as specified in the
|
||
[LICENSE](https://github.com/enso-org/enso/blob/develop/app/gui2/LICENSE) file.
|
||
|
||
This license set was chosen to provide you with complete freedom to use Enso,
|
||
create libraries, and release them under any license of your choice, while also
|
||
allowing us to release commercial products on top of the platform, including
|
||
Enso Cloud and Enso Enterprise server managers.
|
||
|
||
<br/>
|
||
|
||
### Contributing to Enso
|
||
|
||
Enso is a community-driven open source project which is and will always be open
|
||
and free to use. We are committed to a fully transparent development process and
|
||
highly appreciate every contribution. If you love the vision behind Enso and you
|
||
want to redefine the data processing world, join us and help us track down bugs,
|
||
implement new features, improve the documentation or spread the word!
|
||
|
||
If you'd like to help us make this vision a reality, please feel free to join
|
||
our [chat](https://discord.gg/enso), and take a look at our
|
||
[development and contribution guidelines](./docs/CONTRIBUTING.md). The latter
|
||
describes all the ways in which you can help out with the project, as well as
|
||
provides detailed instructions for building and hacking on Enso.
|
||
|
||
If you believe that you have found a security vulnerability in Enso, or that you
|
||
have a bug report that poses a security risk to Enso's users, please take a look
|
||
at our [security guidelines](./docs/SECURITY.md) for a course of action.
|
||
|
||
<br/>
|
||
|
||
### Enso's Design
|
||
|
||
If you would like to gain a better understanding of the principles on which Enso
|
||
is based, or just delve into the why's and what's of Enso's design, please take
|
||
a look in the [`docs/` folder](./docs/). It is split up into subfolders for each
|
||
component of Enso. You can view this same documentation in a rendered form at
|
||
[the developer docs website](https://enso.org/docs/developer).
|
||
|
||
This folder also contains a document on Enso's
|
||
[design philosophy](./docs/enso-philosophy.md), that details the thought process
|
||
that we use when contemplating changes or additions to the language.
|
||
|
||
This documentation will evolve as Enso does, both to help newcomers to the
|
||
project understand the reasoning behind the code, and also to act as a record of
|
||
the decisions that have been made through Enso's evolution.
|