brought to you as libre software with joy and pride by Artificial Engineering.
Support our libre Bot Cloud via BTC 1CamMuvrFU1QAMebPoDsL3JrioVDoxezY2.
IMPORTANT NOTICE
AI went live on 1. Sept 2016. Make sure that :balloon: AI History starts here
is on your master
branch so that the ./bin/maintenance
auto-update integration
works fine. Otherwise re-fork your fork or force-pull from upstream.
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.net.protocol.MQTT is being implemented to support SCADA systems (
feature/mqtt
branch). - lychee.js Guide is subject to change (to integrate new AI stack).
Okay. I kind of failed to explain what lychee.js is because there's currently no words for something like it in our language. So I'm trying to explain why which feature was integrated and what benefits resulted in its history of development.
First it was a Game / App Engine that had the idea to reuse components across all environments using so-called Fertilizer Adapters with a strong core definition system that allowed feature detection and automated isomorphic builds from and to every single platform it supports using the lychee.js Fertilizer.
Then it got a strong serialization / deserialization concept that allowed simulations across all platforms. Errors could be reproduced everywhere, even network traffic and user interactions were put in event graphs and identified by neural networks to figure out what module (in the flow-based-programming sense) had corrupt data.
Then it got an evolutionary lychee.ai Stack (backpropagated ES/HyperNEAT) that allowed an AI to learn combinations of all Definitions using a Module Pattern or Composite Pattern. Class Pattern failed, because Classes are a time abstraction so they suck in complexity. Deal with it :)
Then it got a generic plug/play neural network support; so that the lychee.policy Stack allowed to generically translate every property in all Composites into what 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 of it got inclusive.
Then it got an easier tool to create new boilerplates which allowed the possibility to reuse other projects as libraries and vice versa. Every single lychee.js Project or Library was fully isomorphic and could be forked, modified, back-merged, or included as a library using the lychee.js Breeder. Things like A/B testing new Composites or Definitions in-place now were a matter of literally seconds.
Then the knowledge graph was reused to build a better fuzz-testing tool, the lychee.js Strainer, using some kind of tree that is similar to a multi-dimensional-quad-tree to identify similar data and behaviour for more efficient ANN testing and evaluation; so that ANNs were now able to learn what properties and methods and their relations (in the sense of states) mean and do.
Then the lychee.js Harvester got a peer-to-peer network infrastructure that allowed to share all knowledge graphs across the internet. That meant every single lychee.js Project on planet Earth now contributed to an AI learning how to build software and therefore helped auto-improving all written code that depends on each other using fuzz tests, flow graph tests and above Composite Pattern idea for evaluation of newly invented Composites.
Then the lychee.js Studio was built, trying to use above suggestions so that developers have some kind of "Zen Coding"-like autocompletion for Definitions they want to build, leveraging the first intelligent auto-complete using a mix of reinforced evolutionary learning and bayesian learning.
Oh, and it 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 Library.
Then I thought well, I guess I'm mad - and have no idea how to explain what this Engine has gotten to be. - @cookiengineer
The lychee.js Project started in 2012 and is in active development. The following Repositories are related to the lychee.js Engine:
- lychee.js Guide contains architecture explanations and concept documentations (WIP).
- lychee.js Runtime contains all pre-compiled lychee.js Runtimes and Fertilizers.
- lychee.js Library contains the lychee.js Library (installable via
bower
andnpm
, forked from/libraries/lychee
). - lychee.js Harvester contains the lychee.js Harvester (forked from
/libraries/harvester
). - lychee.js Website contains the lychee.js Website (hosted at https://lychee.js.org).
- lychee.js Bundle generates the OS-ready lychee.js Bundles (published at releases section).
- lychee.js Future contains all Concepts and Ideas not yet finished.
The following Accounts are related to the lychee.js Engine:
- @cookiengineer is the core maintainer and founder of this project.
- @humansneednotapply is the account used by our software bots.
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 and legacy):
- Isomorphic Application Engine (runs pretty much everywhere)
- Language is only ES5/ES6 JavaScript 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 Software Bots:
- Graphical Asset Management and Entity/Scene Design Tool (Studio)
- Graphical Project Management and Server Maintenance Tool (Ranger)
- 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, node, node-sdl | bin | x | x | x |
OSX | html-nwjs, node, node-sdl | app, bin | x | ||
Windows | html-nwjs, node, node-sdl | exe | x | x | |
Android | html-webview, 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 | 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. You can still create an own WebView
iOS App and use the html
platform adapter.
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.
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.
If you have any questions, feel free to join us on #artificial-engineering @ freenode.
These are our official social media channels:
- Twitter: https://twitter.com/lycheejs
- Reddit: https://reddit.com/r/lycheejs
- IRC: #artificial-engineering @ freenode.
- Email: robot [insert an at here] artificial.engineering
The lychee.js Engine (defined as /libraries
and /bin
inside the lycheejs
repository) is (c) 2012-2017 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-2017 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.