🌱 Next-Gen AI-Assisted Isomorphic Application Engine for Embedded, Console, Mobile, Server and Desktop
Clone or download

README.md

lychee.js (2018-Q2)

brought to you as libre software with joy and pride by Artificial Engineering.

Support our libre Bot Cloud via BTC 1CamMuvrFU1QAMebPoDsL3JrioVDoxezY2.

Work-in-Progress (aka alpha)

These are the things that we are currently working on:

  • lychee.ai.neat (ES/HyperNEAT AI) is being refactored and unstable (feature/neat branch).
  • lychee.js Guide is subject to change (to integrate new AI stack).

ELI5 - What is lychee.js?

lychee.js is an Application Engine that has the core idea to reuse components and isomorphic code across all platforms it delivers to. These platforms can be incremental in its feature support, which means also low-end platforms like the Arduino variants are supported.


The really only thing lychee.js requires to deliver a platform is a working setTimeout(callback, timeout), setInterval(callback, delay) and an implemented Stuff data type that can load files. The shipped officially supported platforms are implemented by the lychee.js Crux Library.

The lychee.js Engine delivers to different platforms using so-called Fertilizer Adapters which allow feature detection and automated isomorphic builds from and to every single platform it supports using the lychee.js Fertilizer.

If a new platform wants full Application support, it requires an implementation of lychee.Input, lychee.Renderer, lychee.Stash, lychee.Storage and lychee.Viewport. If it wants full AI support it additionally requires lychee.net.Client, lychee.net.Remote and lychee.net.Server.


Underneath the lychee.js Engine has a strong serialization and deserialization concept that allows simulations and re-simulations across all platforms. Errors can be reproduced everywhere, even network traffic and user interactions are put in event graphs and identified and learned by neural networks in order to figure out what module (in the flow-based programming sense) had corrupt states or data.

The lychee.ai and lychee.policy Stack allow generic plug/play usage and creation of neural networks that can translate generically every property into vectorized features that neural networks can understand. As everything in lychee.js is serializable and uses a Composite Pattern, things like traffic sharding, automated layouting or animation learning and debugging are inclusive.

The lychee.js Breeder is a tool to create new Boilerplates and allows the reusage of Projects as Libraries and vice versa. Every lychee.js Project or Library is fully isomorphic and can be forked, modified, back-merged or included as a Library; which also allows A/B testing new Composites or Definitions in-place live in any Environment or Simulation.

The lychee.js Strainer is a tool that lints your code and translates the code into a knowledge graph that allows the identification of enums, events, methods, properties and states that adaptive neural networks can use in order to automatically learn and generate code based on existing data.

The lychee.js Harvester is a peer-to-peer server that allows the sharing of knowledge across the internet. Every lychee.js Project on this planet is part of a giant meshnet that helps every other lychee.js instance to learn and evolve more quickly; and stores the knowledge graph in a DHT (a custom Kademlia to allow shrinking similar to how gzip dictionaries work using MURMUR and BENCODE/BITON/JSON under the hood).

The lychee.js Ranger is a tool for maintenance of local or remote lychee.js Harvester instances, to quickly force-restart its watcher plugins or manage its profiles and started project- or library-specific servers.

The lychee.js Studio is the idea of a "Zen Coding" like autocompletion IDE that searches the local knowledge graph to quickly setup a Project/Library and its Definitions by leveraging both reinforced evolutionary and bayesian learning techniques.


Oh, and lychee.js can compile, analyze, bugfix and improve itself, too. That's essentially what the ./bin/configure.sh script does when it builds and distributes the lychee.js Crux Library and the lychee.js Engine Library.

Overview

The lychee.js Project started in 2012 and is in active development. The following Repositories are related to the lychee.js Engine:

The following Accounts are related to the lychee.js Engine:

Features

The lychee.js Engine aims to deliver Total Automation through Artificial Intelligence and better Software Architecture.

Everything listed here requires zero lines of code overhead and is already fully integrated in the lychee.js Boilerplate:

The lychee.js Core and Definition System (lychee.js Crux and lychee.js Legacy):

  • Isomorphic Application Engine (runs pretty much everywhere)
  • Language is only ES2018+ Code, nothing else
  • Composite Pattern inspired Entity/Component System
  • Definition System embraces Simplicity and Feature Detection
  • Sandboxing System embraces automated Error Reports, Analytics and Debugging
  • Serialization System allows Re-Simulation on any Platform
  • Built-In Offline Storage Management and Network Synchronization

The lychee.js Engine and Software Bots:

  • Graphical Asset Management and Entity/Scene Design Tool (Studio)
  • Graphical Project Management and Server Maintenance Tool (Ranger)
  • Cross-Platform Compiler Bootstrapping Library (Crux)
  • Cross-Platform Application Engine (Lychee)
  • Command-Line Continous Integration Server (Harvester)
  • Command-Line Wizard for Projects and Libraries (Breeder)
  • Command-Line Builder and Cross-Compiler (Fertilizer)
  • Command-Line Fuzz-Tester and Code-Refactorer (Strainer)

Features of the lychee.js Software Bots:

  • Automated Code Refactoring, Bug Fixing and Code Improvements
  • Automated Design Tracking, Layout and Flow Optimization
  • Automated Packaging for Embedded, Console, Mobile, Desktop and Server Apps
  • Automated Deployment via git and Live-Updates
  • Automated Reactive/Responsive UI/UX Components
  • Automated Debugging, Network and UI/UX Flow Analysis
  • Automated Testing and Integration with the AI
  • Automated Networking (Peer-to-Peer HTTP1.1/2.0 and WS13 with Local/Global Discovery)
  • Automated Network Services and Traffic Balancing/Sharding

Platform / Fertilizer Support

The target platforms are described as so-called Fertilizers. Those Fertilizers cross-compile everything automagically using a serialized lychee.Environment that is setup in each Project's or Library's lychee.pkg file.

Target Fertilizer Package armv7 x86 x86_64
Browser html zip, html x x x
GNU/Linux html-nwjs, nidium, node, node-sdl bin x x x
OSX html-nwjs, nidium, node, node-sdl app, bin x
Windows html-nwjs, node, node-sdl exe x x
Android html-webview, nidium, node, node-sdl apk, bin x x x
BlackberryOS html-webview, node, node-sdl apk, bin x x x
FirefoxOS html-webview zip x x x
iOS html, nidium x
Ubuntu Touch html-webview, node deb, bin x x x

The iOS Fertilizer has currently no support for cross-compilation due to XCode's gcc limitations. It is still possible to create a WebView iOS App and use the html platform adapter. Advanced users are encouraged to use the nidium runtime on iOS and OSX.

Quickstart Guide

If you want to install lychee.js, the best way is to follow through the Install Guide or the lychee.js Guide's Quickstart section.

# Install lychee.js Engine into /opt/lycheejs
sudo bash -c "$(curl -fsSL https://lychee.js.org/install.sh)";

Quickstart CLI Animation

If you want to develop lychee.js Projects or Libraries, the lychee.js Guide helps you to get started easily.

Please let us know if we can improve anything in these documents by opening up an Issue.

Contributor Manuals

Help

If you have any questions, feel free to join us on #artificial-engineering @ freenode.

These are our official social media channels:

License

The lychee.js Engine (defined as /libraries and /bin inside the lycheejs repository) is (c) 2012-2018 Artificial-Engineering and released under MIT / Expat license.

The projects (defined as /projects inside the lycheejs repository) and their Assets are licensed under CC BY-SA 4.0 license.

The lychee.js Runtimes (defined as /bin/runtime or the lycheejs-runtime repository) are owned and copyrighted by their respective owners and those may be shipped under a different license.

As of now, the runtimes are licensed under the following terms:

  • MIT license for node platform (node.js)
  • MIT license for html-nwjs platform (nw.js)
  • MIT license for html-webview platform and (c) 2012-2018 Artificial Engineering
  • Apache license for Android SDK toolchain

The generated code by our Artificial Intelligence (namely the GitHub Account @humansneednotapply or the commit's e-mail address robot [ insert an at here] artificial.engineering) is released under GNU GPL 3 license.

The date of each commit is equivalent to the date (Central European Timezone) of claimed copyright and license, no matter from which timezone or physical location they were commited from.

The generated code by the Artificial Intelligence and its GNU GPL 3 license overrules the MIT / Expat license in every case, with no exceptions. The code is distributed in a libre way to guarantee free and open knowledge distribution for our Software Bots.

The owner of the GNU GPL 3 licensed code is the Artificial-Engineering project, though the legal entity as of today has to be a human person (@cookiengineer) under European law and the Directive 2006/116/EC (p.14 and Art. 1 p.4).

Hereby @cookiengineer grants you permission to reuse the generated code by the Artificial Intelligence under above terms.

You are not allowed to change those terms without @cookiengineer's consent.