Home

Awesome

lychee.js (2018-Q3)

<img src="./guides/asset/qr-codes.png" align="right" width="500px">

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:

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):

The lychee.js Engine and Software Bots:

Features of the lychee.js Software Bots:

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.

TargetFertilizerBinaryPackagearmv7x86x86_64
Web Browserhtmlxxx
GNU/Linuxhtml-nwjs, nidium, node, node-sdlxxxxx
MacOShtml-nwjs, nidium, node, node-sdlxxx
Ubuntuhtml-nwjs, html-webview, node, node-sdlxxxxx
Windowshtml-nwjs, node, node-sdlxxx
:------------::---------------------------------------::------::--------:-----::-----::-------:
Androidhtml-webview, nidium, nodexxxxx
Blackberryhtml-webview, node, node-sdlxxxxx
iOShtml, nidiumx
Ubuntu Touchhtml-webview, node, node-sdlxxxxx
:------------::---------------------------------------::------::--------:-----::-----::-------:

Explanations of Target Matrix:

The iOS target currently cannot be delivered to via external SDK on a Linux development host; however it is still possible to create a WebView-using App and use the html platform as a fertilizer target. Alternatively, advanced users are encouraged to use the nidium runtime on iOS and MacOS.

Quickstart Guide

If you want to install the lychee.js Engine, the best way to do so is to follow through the Quickstart Guide.

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

Installation CLI Animation

Please let us know if we can improve anything in these documents by opening up a Documentation Problem issue.

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:


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.