Giter Club home page Giter Club logo

open-pwa / open-pwa Goto Github PK

View Code? Open in Web Editor NEW

This project forked from direktspeed/open-pwa

24.0 24.0 1.0 165.93 MB

ServiceWorker Deployments as a Platform providing the needed API's for Kubernetes, MesOs, Borg, Android. IOS, Mac, Windows, Linux. Manage Deployments of any kind as ServiceWorkers.

License: Apache License 2.0

JavaScript 18.67% HTML 1.99% CMake 0.01% C 17.91% Python 2.82% C++ 40.74% CSS 0.02% Java 0.01% Shell 0.12% TypeScript 0.72% Batchfile 0.02% PowerShell 0.01% Objective-C++ 0.21% Objective-C 0.03% CoffeeScript 0.01% Makefile 0.04% Ruby 0.01% R 0.01% Perl 16.54% Roff 0.14%
browser electron graalvm kubernetes nwjs platform polyglot pwa

open-pwa's Introduction

open-pwa standart

Trying to generate a standardt for browser like server deployments

  • Web Worker API
  • Minimim Browser API
  • Browser Addon that allows Native installs as also handels post message routing (native messaging api)

Breaking NEWS

OPEN-PWA Platform turns any device into a Cloud!

Get Reach and Power with your Hybrid Apps on any Device and Scale! A Universal Entire Operating System Platform Interface and Framework!

We see at present the trend of other Projects to move in our direction i like it :) Lets Mentoin them

  • Crossplane
  • oam.dev
  • kubernetes.

Open Pwa is a Platform that runs on Any Device with a easy installer and then allows you to run WebSites and Applications with Nativ Capabilitys. It has a Permission System, Window,Task, Prozess Manager, Install & Update Api Inspired by ServiceWorker Concepts.

It can change everything as a Open Platform to port your existing software or create new Software with the most Efficent Open Source Frameworks around.

It Also Offers its own Formart for Cloud Deployments any device can be part of any cloud or its own cloud. Platform by providing the needed API's to legacy Platforms a dropin replacement for the electron framework that scales more well when multiple applications get executed on the same host. It offers a Total new way of Deployment and Application update concepts.

Free Open Source P2P Community Foundation owned!

While i am at present the only one working here it is intended to move this Later to a Open PWA Foundation and maybe partial Apache and OpenJs we can not transfer this complet to them as they do not fully complai with our Ethics of fast forward Development This Project has a Complex Mindset behind it. While i think every one will love and use this

Downloads

Open PWA ships as self containing installer that then switches to its own package management system so you do not need to handle updates yourself while the installer supports a "no-update" option in that case you can handle updates how you like it even via a own open-pwa-

Download the right installer for your OS

v0.55.0: (Aug 1, 2021, based off of Node.js v16.4.2, Chromium 92.0.4515.107) : release notes NOTE You might want the SDK build. Please read the release notes.

Linux: 32bit / 64bit

Windows: 32bit / 64bit

Mac 10.10+: 64bit

Use "Legacy build" for Win XP and early OSX.

latest nightly build from git tip: https://github.com/open-pwa/live-build/releases

Android: use the Android Store or git clone this repo and follow the android build instructions

iOS: use the ios store or git clone this repo and follow the iOS build instructions

How does it WORK?

Open Pwa is a Platform build with the @stealify/stealify Framework the EE Encapsulation Standard Open PWA also offers some high level tooling also build with stealify to package and deploy your code via vmpack and vmdeploy (deployless).

An App-centric Model

  1. Application first - the platform is built around a self-contained app model, where operational characteristics are also part of app definition, free of infrastructure here.
  2. Clarity and extensibility - an open standard to modularize your platform capabilities into reusable pieces, with freedom to bring your own abstractions and implementations.
  3. Runtime agnostic - a consistent experience to deploy and operate your apps across on-prem clusters, cloud providers or even edge devices.

Information for Google Carlo Users

As Google Carlo is deprecated we will offer @open-pwa/carlo with the same and more abilitys which will get maintained as it is a shared dependency of open-pwa that can run standalone simply use npm i @open-pwa/carlo inside open-pwa/packages/carlo you can find readme.md and additional explainations.

We Are more then happy to announce that we will keep that functionality running and will reuse it as Carlo is not maintained anymore we adopted it's code and made a ECMAScript 6+ version out of it to keep maintance overhead low. We will publish that under @open-pwa/carlo@>0.10.0

Open PWA Compared with WebView2, Electron, NW.JS and so on

  • Electron apps More Efficent and allows to run them directly on open-pwa without a indipendent electron installation. Adds Open Pwa Features!
  • WebView2 Allows Hybrid Apps while OPEN-PWA is a Hybrid App Platform it allows to turn Hybrid Apps and even Websites Into Nativ Apps!
  • HashiCorp Terraform Compatible Syntax Support! Enables Remote Deployments of Terraform Specs. (You can Deploy from and to terraform)

There is a discussion in https://news.ycombinator.com/item?id=18355345 which shows that Open-PWA is still the way to go as it manages the Runtime or serverside dependency while chrome manages updates it self.

Current Implementation

Evaluation

Permissions - Application based Permissions on the Host

Service Workers - as Deployment Package

We Will Deploy the serviceWorkers in 2 Formarts WASM using the WASI and JavaScript using the JS API OpenPwa gets called with a serviceWorker URL

Run a PWA on a None Browser based Runtime

We can expect a RasPI with a small lcd screen to display a scrolling text without a browser.

  • using sharedModules as formart Comes into mind but not sure.

Remote API Polyfills for wasm

Local WASM needs to talk to OpenPwa it can do that via the JS Api or we Supply a WASI Shim

  • wasi
    • Run wasm in a browser client with access to a remote resource as would it be the local environment.
  • chrome
    • run a uwasi remote host and expose that as the current browser to JS

This will make service worker driven pwa and pssa work.

PSSA - Progressive Server Side Applications

they will get deployed via installation of a remote serviceworker.

What and Why?

We will research and create an environment agnostic way to run PWA's in browsers and none browser environments that do not support PWA's. we will offer a permission-based API and implement all the functionality that chrome offers for a PWA and all NativSystemCaps.

so this will be a single daemon or app or server it is not so important how we name that. It will expose API's that a remote website can call to request a local installation and use of existing Platform features.

The Implementation will be written in JS using GraalVM with Stealify to get it even more embedded able while keeping the code understandable by all ECMAScript knowing people,

Concepts open-pwa runtime

  • open-pwa indipendent collection of packages that run on all platforms or the single platform they represent

    • service-manager (Is the Main Entrypoint for the open-pwa-manager)
    • permissions
    • serviceWorker-api The main installer api for open-pwa-apps
    • buildscripts for open-pwa-installers
  • cordova-plugin-webserver

  • cordova-platform-open-pwa inhires cordova as we are compatible

  • open-pwa runtime runs on a remote host or the local desktop pc look into amino.run

  • It offers a service worker deployment interface open-pwa://my-app-id and ://open-pwa/my-app-id that exposes *.

    • additional on ip:port for restricted deployments without access to dns or host protocol services.
      • grpc endpoint
      • http2 endpoint
      • websockets endpoint
  • It offers all browser related API's for PWA's like storage and others

  • Custom kublet implementation done via rust

  • First Implamentations JS+WASM

  • API's

    • run worker process
    • register desktop app
    • listen on address device
    • systeminfo
    • user management (maybe reffered to the underlaying os not sure if we should implement it)

What will Open-PWA Solve?

It will provide a ecosystem for a total new concept to deploy existing PWA's to diffrent Platforms then the Browser as also New Concepts for Live Updates and Deployments PSSA - Progressive Server Side Applications maybe it will be called PSSS - Progressive Server Side Services. of existing Applications Running. This is research on the new Container Caps of wasm also.

  • permission system isolated access to device caps
  • running processes on the device with access to os api's via unified api
  • universal install system
  • universal software update system
  • supports GraalVM, docker, kubernetes, open-stack, chrome

Collaboration

Simply contact me via the issue section at present it is fast to get into the project as it is quit new :)

History

This is an Open Source Effort it got initialized by Frank Lemanschik not on purpose because he has written that article https://medium.com/@frank_lemanschik/is-it-all-about-the-package-manager-43077634124c?sk=1fdba664c3fdce60b3a5d4d10d0e8773

It Joins with a lot of my other projects that i was working on the last 20 years

  • direktspeed server
  • direktspeed os
  • direktspeed serverless *
  • serverless *
  • stealify
  • Maybe 1000+ Projects

Into one giant open project OPEN-PWA That will hopefully deliver Expirences better then ever to the user. And also make Developers More Efficent and Happy.

PREREQUISITES Windows, Linux, macOS, Android Dev Only, iOS Dev Only

bash, git, mv, rm, tr, type, curl/wget, base64, sudo (if not root), make (GNU) tar (or unzip on OSX and Windows), gpg (optional verification)

Package Manager for the OS

  • brew (macos)
  • chocolatey (windows)
  • apt (bash)(linux)

Development Linux

Use existing n and pm2 installs maybe create a seperated user profile for testing

for packaging use -a arm64 or x64 all the nodejs build flavors by default matching current platform.

# Fresh install
curl -sL https://git.io/open-pwa-install | OPEN_PWA_HOME=~/.open-pwa bash -s -- -y -n

## Link existing installs  
mkdir ~/.open-pwa
ln -s ~/n ~/.open-pwa
ln -s ~/.pm2 ~/.open-pwa

OpenPWA's relation to deployless

OpenPWA is the foundation of @direktspeed/deployless it uses open-pwa under the hood.

Diffrences between GUI App Methods

  • using own versions
    • Electron uses a own nodejs version bundled with lib chrome both are older both are patched
    • nwjs uses always the newst nodejs + chrome and is a chrome app that glues libnode.so together.
  • use the systems version
    • carlo using pupeteer
    • playwright using the chrome dev protocol.
  • WiP! Experimental Research graalvm
    • glueon and smilar projects. allows interaction via libnode-graal.so later.

Missing parts

Shortcut and Protocol DNS management. while we could intercept that maybe on sandbox level? Inside the app?

Supported Package Formarts

  • serviceWorker
    • appimage
    • docker
    • tar.gz
    • git

Commercial Offer

If you have BOYD Bring your own device enrolled in your company you can install our Enterpise versions via your Local iOS Deployment and management Servers and or Android / Fuchsia Deployment servers.

We Can help you to streamline your development process. Simply leave us a message.

Run

open-pwa run "pathOrUrl/serviceworker.js"

serviceWorker.js

export const registerServiceWorker = {
  ...hooks
}

open-pwa's People

Contributors

0xflotus avatar alexkozy avatar aslushnikov avatar chalker avatar derekroy avatar djyde avatar frank-dspeed avatar geekplux avatar iamuchejude avatar joeleinbinder avatar jwharrie avatar kraciasty avatar markozxuu avatar mustafaismail22 avatar notwearingpants avatar p01 avatar paulirish avatar pavelfeldman avatar styfle avatar vsemozhetbyt avatar xat avatar zeke avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

notwearingpants

open-pwa's Issues

Storage Device Managment

Device Management is a Key Factor in any cloud and local infrastructure as it preserves the data it is even more importent then DBA

Cache Devices

btrfs get accessed often much write read input

Array Devices

Can recive much read write but can also be used with a cache device for long term storage with less frequent read write cycles

Cloud IOPS

In the Cloud the Same Principles apply there are diffrent classes of storage.

Remove the automation message via Profiles

this only works if we create pref profiles

const puppeteerExtra = require('puppeteer-extra');
const browser = await puppeteerExtra.launch({
    headless: false,
    ignoreDefaultArgs: ['--enable-automation'],
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-dev-shm-usage',
        '--start-maximized'
    ]
});

this looks like working without

    Map<String, Object> prefs = new HashMap<String, Object>();
prefs.put("credentials_enable_service", false);

ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("excludeSwitches",Collections.singletonList("enable-automation"));
options.setExperimentalOption("prefs", prefs);

WebDriver driver = new ChromeDriver(options)

this needs verification but looks interristing

"C:\Program Files\Google\Chrome\Application\chrome.exe" --ignore-certificate-errors --test-type=webdriver --start-fullscreen

this is a java quirk maybe?

options.addArguments("disable-infobars");

maybe final js

var chromeCapabilities=webdriver.Capabilities.chrome()
var chromeOptions = {
        'excludeSwitchest': ['enable-automation']
};
chromeCapabilities.set('chromeOptions', chromeOptions);
var driver = new webdriver.Builder().forBrowser('chrome').usingServer('http://localhost:4444/wd/hub').withCapabilities(chromeCapabilities).build();

Windows 7 Support

Update: Oct 2021, the latest versions working with below "trick" are:

Node v14.16.1 (or older but not below v14.5.0)
Node v15.8.0 (or older but not below v15.0.0)
Because Node updated from libuv v1.40 to v1.41, and with that, causing Win7 errors: ws2_32.dll does not have GetHostNameW function (or something alike).

references

https://stackoverflow.com/questions/62212754/nodejs-for-windows-7

Build

install https://nodejs.org/dist/latest-v12.x/node-v12.22.10-x86.msi or x64
set NODE_SKIP_PLATFORM_CHECK 1
https://nodejs.org/dist/latest-v17.x/node-v17.4.0-win-x86.7z

later goals maybe

https://wiki.gnome.org/msitools or virtual container the app.

Compat Matrix

  • https://node.green/
  • Node 12.x is at last ES2019 Compat 100%
  • Node 15.14 has ES2022 near complet
  • Node 16, 17, 18 is current on ESNext..

AppImage vs Open PWA

While Open PWA can run the appimage formart and also maintain and update it. We Want that you understand that you do not need it in many Scenarios as Open PWA Applications usal get Packaged with NodeJS

Research

  • Integration Android iOS nativeMessage api chrome
  • custom protocol handlers
  • server on virtual host maybe the best solution

Linux Build:

## Install MX
mkdir direktspeed
cd direktspeed
git clone https://github.com/graalvm/mx
export PATH=$PWD/mx:$PATH

## Install labs OpenJDK
https://github.com/graalvm/labs-openjdk-15/releases

#Verify
./build/labsjdk/images/graal-builder-jdk/bin/java --version

# expose
export JAVA_HOME=$PWD/build/labsjdk/images/graal-builder-jdk
export PATH=$PWD/build/labsjdk/images/graal-builder-jdk/bin;$PATH

## Compile graal
cd /direktspeed/
git clone https://github.com/oracle/graal/
cd graal

## Checkout dependencies
git checkout https://github.com/graalvm/graaljs.git

https://github.com/oracle/graal/tree/master/vm
sudo apt install zlib1g-dev build-essential zip unzip file cmake

cd graal/vm
git checkout vm-1.0.0-rc5
if you already checked out the graaljs or the sulong repositories: mx --env ce sforceimports, else skip this step
mx --env ce build

Flavors:

  • Carlo (debug-protocol)
  • PlayWright (debug-protocol)
  • Special version of NWJS (Chrome App build on C++ CEF)
  • WiP JCEF + SWT App Running on GraalVM

Installers

  • AutoUpdated NodeJS Latest.
  • AutoUpdated Chromium Latest
  • Desktop Icons
  • Notifications
  • Permissions

Headless JS inside Android & IOS

Headless.js.

For iOS you have a few options, depending on your task:

react-native-background-fetch
react-native-background-geolocation
react-native-background-timer

or the cordova equivalents.

Check and Validate npmrc

/etc/npmrc
/home/youruser/.npmrc
/root/.npmrc
./.npmrc in the current directory next to package.json file (thanks to @CyrillePontvieux)
on windows:

c/Program\ Files/nodejs/node_modules/npm/npmrc
Then in this file the prefix is configured:

prefix=/usr
The prefix is defaulted to /usr in linux, to ${APPDATA}\npm in windows

The node modules are under $prefix tree, and the path should contain $prefix/bin

There may be a problem :

When you install globally, you use "sudo su" then the /root/.npmrc may be used!
When you use locally without sudo: for your user its the /home/youruser/.npmrc.
When your path doesn't represent your prefix
When you use npm set -g prefix /usr it sets the /etc/npmrc global, but doesn't override the local

Why?

in a open-pwa environment it is importent that we control what packages get requeired where.
make sure via "npm root -g" that it matches open-pwa

"npm config ls" lists loaded config

(feat) Weex support via stealify parser.

Alibaba did Weex as a Cordova or React nativ like Integration but in a Declarative String based Way.

We do not think that this is the right direction forward!!!!

It is based on Declarative Weex(HTML XML like Syntax) Combined with ECMAScript.
It Introduces for example a <web> tag that is HTML5 Compatible

We Will Explore if it is possible to Compile a Weex Backend that can be ReUsed as Open PWA Host. That would Enable to use Weex Without the need to Compile it Always with the code. Maybe the Ecosystem will be Interristing at some point while we guess that cordova is the better bet. Interoperability would not hurt us.

in general this should be Possible i guess.

First Linux Only Version

open-pwa cli
open-pwa install window-manager
open-pwa install create-shortcut-linux

module.exports = {
  apps : [{
    name        : "worker",
    script      : "./worker.js",
    watch       : true,
    env: {
      "NODE_ENV": "development",
    },
    env_production : {
       "NODE_ENV": "production"
    }
  },{
    name       : "api-app",
    script     : "./api.js",
    instances  : 4,
    exec_mode  : "cluster"
  }]
}
{
  "apps" : [{
    "name"        : "worker",
    "script"      : "./worker.js",
    "watch"       : true,
    "env": {
      "NODE_ENV": "development",
    },
    "env_production" : {
       "NODE_ENV": "production"
    }
  },{
    name       : "api-app",
    script     : "./api.js",
    instances  : 4,
    exec_mode  : "cluster"
  }]
}

- Extensiv list of related potential partners and existing once

{| class="wikitable sortable"

|-
!Name/URL
!Description
!UI Type
!Active|Last Updated
!Notes
!License

|-
|[https://morpheusdata.com/ Morpheus]
|Morpheus provides a single dashboard for managing hybrid infrastructure - KVM, Xen, VMware hypervisors, public clouds, bare metal, and containers. [https://morpheusdata.com/ Learn more.]
|UI, API, and CLI
|Active
|
|Commercial

|-
|[https://mist.io Mist.io ]
|Mist.io provides a unifed dashboard / API for managing your entire infrastructure - public and private clouds, KVM and VMware hypervisors, bare metal, and containers. You can install the [http://github.com/mistio/mist.io open-source version] or use the freemium service. [https://mist.io Try it out]
|Web, Mobile, REST API, CLI
|Active
|Uses [http://libvirt.org/ libvirt] and [https://libcloud.apache.org/ libcloud] for VM management. Supports KVM, several public cloud providers, OpenStack, Docker and bare metal servers.
|AGPL v3 for the open source version, Commercial for the service

|-
|[https://platform9.com/products/kvm/ Platform9 Managed OpenStack]
|Platform9 makes it very easy to manage a KVM environment with resource pooling and automation. Platform9's Openstack service easily integrates with any new or existing Linux servers. KVM expertise is helpful but not required. The OpenStack service supports [https://platform9.com/support/linux-kvm-support-prerequisites-platform9-openstack/ major Linux distributions including CentOS, RHEL & Ubuntu]. See the [https://platform9.com/products/kvm/ demos for KVM].
|[https://platform9.com/products/kvm/ UI], [http://docs.openstack.org/cli-reference/content/novaclient_commands.html OpenStack CLI], [http://docs.platform9.com/ OpenStack API] & integrations (puppet, ansible, chef, vagrant, etc).
|Active
|Fast, Easy & Affordable for anyone familiar with Linux. See [https://platform9.com/products/kvm/ KVM Management w/ OpenStack].
|Commercial. A free trial is available.

|-
|[https://github.com/ChoHag/nbsvm nbsvm]
|No Bullshit VMs. No setup required. No dependencies but sudo, and LVM or ZFS. Start, stop, create and clone images and view VMs using simple chained commands. Basically applies sane (overridden by cli or file) defaults to the kvm invocation and gets out of the way. Sudo invocation is designed to allow user access controls.
|CLI
|February 2014
|
|[http://www.wtfpl.net/ WTFPL 2]

|-
|[http://witsbits.com/ Witsbits]
|Witsbits enables you to set up your servers with virtualization and deploy virtual machines faster than ever before. It’s a complete virtualization solution with a self-upgrading hypervisor and cloud-based centralized management, reducing time spent on maintenance to a fraction of what other solutions require. The self-configuring hypervisor comes as a Live CD, delivering the fastest time-to-deployment by removing the need for spending time on installation and configuration.
|Web
|Active
|Live CD Hypervisor with SaaS Management System
|Free for 5 CPUs (full version)

|-
|[http://www.eucalyptus.com/ Eucalyptus]
|Eucalyptus is open source software for building AWS-compatible private and hybrid clouds. Eucalyptus allows IT organizations to build an on-premises Infrastructure as a Service (IaaS) cloud that pools together compute, storage, and network resources. With Eucalyptus, developers can leverage knowledge and tools around AWS APIs, including EC2, S3, EBS, IAM, Auto Scaling, Elastic Load Balancing, and CloudWatch. IT can create a flexible hybrid cloud environment so that developers can develop sooner, test more, and deploy faster while giving IT and cloud admins greater control of cloud performance, scale, and security.
|Web, CLI, REST, SOAP
|Active
|Supports KVM and VMware. Uses [http://libvirt.org libvirt]. View the Eucalyptus Compatibility Matrix: http://bit.ly/QfH4Iv
|[http://www.gnu.org/licenses/gpl-3.0.html GPL v3]

|-
|[https://www.univention.com/products/ucs/functions/virtualization-uvmm/ UVMM]
|UCS Virtual Machine Manager (UVMM) is an easy-to-use and powerful administration tool for KVM. It virtualizes Microsoft Windows, Univention Corporate Server and other Linux distributions by providing all the necessary functions for creating and managing virtual instances (also OpenStack and Amazon EC2-based resources) and hard drives on physical servers centrally via a web-based modern interface. On AWS it also manages Virtual Private Clouds (VPC). UVMM is included in [https://www.univention.com/products/ucs/ Univention Corporate Server] by default, an easy-to-use and scalable Enterprise distribution with an integrated management system for the central management of heterogeneous environments.
|Web, CLI
|Active
|Supports KVM, Uses [http://libvirt.org libvirt]
|Free for use, [http://www.gnu.org/licenses/agpl-3.0.html AGPL v3]

|-
|Plain [http://www.linux-kvm.org qemu/kvm]
|You can run qemu/kvm straight from the command line
|CLI
|Active
|See man (qemu-system-x86_64 or kvm or qemu-kvm) for more info
|[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|[http://libvirt.org virsh]
|A minimal shell around libvirt for managing VMs
|CLI
|Active
|Uses [http://libvirt.org libvirt]
|[http://www.opensource.org/licenses/lgpl-license.html LGPL]

|-
|[http://virt-manager.org VMM / Virtual Machine Manager]
|Also known as virt-manager. A desktop user interface for managing virtual machines.
|Desktop
|Active
|Uses [http://libvirt.org libvirt]
|[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|VMM's supporting tools [http://virt-manager.org virt-install/clone/convert]
|Command line tools for provisioning new VMs, cloning existing VMs and importing / converting appliance images.
|CLI
|Active
|Uses [http://libvirt.org libvirt]
|[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|[http://www.redhat.com/rhev Red Hat Virtualization / RHV]
|Commercial management solution for RHEL / KVM.
|Web
|Active
|
|Commercial

|-
|[https://kubevirt.io/ Kubevirt]
|Virtualization API for Kubernetes
|
|Active
|
|

|-
|[http://ispsystem.com/en/software/vmmanager VMmanager]
|Software solution for virtualization management that can be used both for hosting virtual machines and building a cloud. With VMmanager you can manage not only one server, but a large cluster of hypervisors. It delivers a number of functions, such as live migration that allows for load balancing between cluster nodes, monitoring CPU, memory and I/O operation enabling to detect problematic nodes, use of local and networks storages, and many tools for efficient management.
|Web, CLI, REST
|Active
|KVM, uses [http://libvirt.org libvirt]
|Commercial

|-
|[https://pve.proxmox.com/wiki/ Proxmox VE]
|Proxmox Virtual Environment (Proxmox VE) is an open-source server virtualization management platform to manage VMs and containers.
The Debian-based platform uses KVM as hypervisor and also provides OS-level virtualization using LXC containers. It provides enterprise-class features like clustering, high availability, networking, live migration, backup/restore, integrates a built-in firewall and come with various storage plugins such as LVM, LVM-thin, iSCSI/kernel, iSCSI/libiscsi, Ceph/RBD, Sheepdog, ZFS over iSCSI, ZFS (local), directory, NFS, CIFS, and GlusterFS.
|Web, CLI, API
|Active
|Bare-metall ISO installer including KVM and LXC management tools

[http://www.gnu.org/licenses/agpl-3.0.html AGPL v3]
[http://pdnsoft.com/en/web/pdnen/pvm-download PVM]
( [http://www.pdnsoft.com/ PDNSoft ] Virtual Machine Management System) is a hypervisor based on KVM.It provides new application stack to manage KVM virtual machines instead of using Libvirt with it's own considerations.Cluster and user awareness is specific features in PVM design, so managing of HA and other features is done by PVM application stack that is placed directly on KVM.
Desktop,CLI
Active
Bar-metall installer
Commercial
-

|[http://www.convirture.com/products_opensource.php ConVirt]
|ConVirt 2.0 Open Source is the leading open source product for managing Xen and KVM, enabling you to standardize and proactively manage your virtualized environment in a centralized fashion.
|Web
|Active
|Xen & KVM; formerly known as xenman

[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]
[http://ovirt.org/ oVirt]
oVirt is a virtualization management framework constisting of a small host image, the oVirt Node, that provides the libvirt service to host virtual machines, and a robust vm management software stack, controlled by a web-based management interface, the oVirt Server.
Web
Active
uses [http://libvirt.org libvirt]
[http://www.apache.org/licenses/LICENSE-2.0.html Apache License v2]
-
[http://www.op5.com/op5-features/easy-monitoring-kvm/ op5]
op5 develops and delivers op5 Monitor a enterprise-class software for IT monitoring and administration of the whole IT. op5 developed a KVM plug-in to monitor KVM virtualization infrastructure that allows organizations to have better capacity planning, which enables the provisioning of usage of resources such as storage, CPU, and memory more proactively.
Web, REST
Active
Uses [http://libvirt.org libvirt]
[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]
-
[http://www.opennebula.org/doku.php OpenNebula]
an open source virtual infrastructure engine
CLI, XML-RPC
Active
cloud computing managment; uses libvirt
[http://www.apache.org/licenses/LICENSE-2.0.html Apache License v2]
-
[http://opennode.activesys.org OpenNode]
RHEL/CentOS based open-source server virtualization and management solution - simple bare-metal installer, providing KVM+OpenVZ host and standard libvirt, func management interfaces together with standard cli tools like virsh and vzctl. OpenNode Management Server with ajax web-based management console available - as is RPC-JSON API interface.
Web, CLI, API
Active
Bare-metal installer, KVM, OpenVZ hypervizors and variety of management tools
Unknown
-
[http://code.google.com/p/ganeti/ Ganeti]
Ganeti is a cluster virtual server management software tool built on top of existing virtualization technologies
CLI
Active
KVM support added in Ganeti 2.0
[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]
-
[http://karesansui-project.info/ Karesansui]
Karesansui is an open-source virtualization management application. It's smart graphical user interface lowers your management cost, and brings a total management/audit solution for both physical and virtual servers.
Web, REST
November 2013
KVM & Xen support; uses [http://libvirt.org libvirt]
[http://www.gnu.org/licenses/lgpl-2.1.html LGPL v2.1]/[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|[http://www.openqrm.com/ openQRM]
|openQRM is the next generation, open-source Data-center management platform.
|Web
|Active
|KVM, Xen, VMware and Linux V-Server support
|[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|[http://www.abiquo.com/ Abiquo]
|Abiquo is a technology-agnostic solution for enterprises and service providers who want to quickly and simply build, manage and develop public and private clouds based on their existing heterogeneous environments.
|Web, REST
|Active
|KVM, Xen, VirtualBox, VMware, Hyper-V & XenServer support; uses [http://libvirt.org libvirt]
|Commercial

|-
|[http://cloudstack.org/ CloudStack]
|Cloudstack is an open source project that enables the deployment, management, and configuration of multi-tier and multi-tenant infrastructure cloud services using Xen, KVM and VMware hypervisors.
|Web
|Active
|KVM, Xen & VMware support
|[http://www.apache.org/licenses/LICENSE-2.0.html Apache License v2]

|-
|[http://nimbula.com/ Nimbula Director]
|Nimbula Director is a Cloud Operating System that enables Infrastructure as a Service using the KVM.
|Web, CLI, REST
|Active
|KVM support
|Commercial (Freemium)

|-
|[http://archipelproject.org/ Archipel]
|Archipel is an Open Source project that aims to bring push notifications to virtualization orchestration using XMPP.
|Web
|Active
|KVM, Xen, Virtual Box & OpenVZ support; uses [http://libvirt.org libvirt]
|[http://www.gnu.org/licenses/agpl-3.0.html AGPL v3]

|-
|[http://codewreck.org/kvm-wrapper kvm-wrapper]
|kvm-wrapper is a lightweight, simple and intended to be hackable set of shell scripts that help manage kvm virtual machines a great deal.
|CLI
|Active
|KVM support
|[http://sam.zoy.org/wtfpl/ WTFPL (v2)]

|-
|[http://www.linux-kvm.org/page/Kvmtools kvm-admin]
|Python scripts for managing the guests (boot, shutdown ...) and include a commandline monitor .
|CLI
|Active
|kvm support
|[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|[http://www.solusvm.com/ SolusVM]
|The most popular control panel for commercial use.
|Web
|Active
|KVM, Xen & OpenVZ support
|Commercial

|-
|[http://www.stackops.org/ Stackops Openstack Distro]
|Stackops is an Openstack Nova distribution verified and tested for KVM. You only need to download the ISO image with the distro and install it on one or more servers.
|CLI, REST
|Active
|KVM & QEMU (libvirt based)
|[http://www.apache.org/licenses/LICENSE-2.0.html Apache License v2]

|-
|[http://retspen.github.io/ WebVirtMgr]
|Web service for managing VMs based on the KVM
|WEB
|Active
|Only KVM; use libvirt
|[http://www.apache.org/licenses/LICENSE-2.0.html Apache License v2]

|-
|[http://theforeman.org Foreman]
|Foreman is aimed to be a Single Address For All Machines Life
Cycle Management including bare metal / vm / cloud provisioning, configuration managememnt and configureation reports/auditing using puppet
|Web, REST, CLI
|Active
| KVM, VMWare, oVirt RHEV-M, EC2, OpenStack
|[http://www.gnu.org/licenses/gpl-3.0.html GPL v3]

|-
|[https://launchpad.net/virtualbrick Virtualbricks]
|Python-gtk GUI to manage guest and hybrid (host/guest) networks.
|CLI
|2011-11-23
|kvm, qemu, ksm & [http://vde.sourceforge.net/ VDE] support
|[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|[https://sourceforge.net/projects/aqemu/ AQemu]
|a Qt4 user interface for KVM
|Desktop
|2013-05-30
|
|[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|[http://src.enomaly.com/ Enomaly]
|a programmable virtual cloud infrastructure for small, medium and large businesses
|Web, REST
|Not available as of 2010-02-08
|they have commercial and open source editions
|Commercial/[http://www.gnu.org/licenses/agpl-3.0.html AGPL v3]

|-
|[http://code.google.com/p/kvmadm/ kvmadm]
|a minimalistic set of command-line tools to control multi-user utilization of KVM
|CLI
|2007-09-25
|
|[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|[http://gkvm.sourceforge.net/ GKVM]
|A Gnome user interface for KVM.
|Desktop
|2007-08-01
|
|[http://www.gnu.org/licenses/gpl-2.0.html GPL v2]

|-
|[https://github.com/jstimpfle/kvmupdown kvmupdown]
|simple, robust and no-bloat management interface.
|CLI
|Link broken, probably terminated project
|KVM
|public domain

|-
|[https://github.com/kimchi-project/kimchi kimchi]
|Kimchi is an HTML5 based management tool for KVM. It is designed to make it
as easy as possible to get started with KVM and create your first guest.
|WEB
|Active
|KVM
| [http://www.opensource.org/licenses/lgpl-license.html LGPL],[http://www.apache.org/licenses/LICENSE-2.0.html Apache License v2]

|-
|[http://clownix.net cloonix]
|cloonix is a virtualization management framework aimed at virtual networks building based on kvm.
|Gui/cli
|Active
|KVM
| [http://opensource.org/licenses/RPL-1.5 RPL Licence]

|-
|[https://github.com/mzch/vmmaestro vmmaestro]
|vmmaestro is a tiny shell script which can start/stop/monitor KVM guests.
|CLI
|Active
|KVM
| [http://opensource.org/licenses/mit-license.php MIT License]

|-
|[http://sparrow-devs.jimdo.com/vm-king VM-King]
|VM-King is an Android App that allows you to manage your hypervisior remotely from your Android mobile or tablet. This app supports the following functions: Start/stop/destroy VM, restore and delete snapshots, get screenshot of running VMs, get remote display connection information (VNC/Spice).
|mobile, tablet
|Active
|KVM
| free

|}

Source https://www.linux-kvm.org/index.php?title=Management_Tools&action=edit

open-pwa event protocol

event: userconnect
data: {"username": "bobby", "time": "02:33:48"}

data: Here's a system message of some kind that will get used
data: to accomplish some task.

event: usermessage
data: {"username": "bobby", "time": "02:34:11", "text": "Hi everyone."}

each seperated by \n new line

data without event gets recived via onmessage and the rest via addEventListner.

the data is always a Stream of UTF-8 Char Data.

Historical List of related Projects

make open pwa visible to websites..

Platform-specific applications can already use operating system APIs to enumerate installed applications on the user's system. For example, applications on Windows can use the FindAppUriHandlersAsync API to enumerate URL handlers. If PWAs register as OS level URL handlers in Windows, their presence would be visible to other applications.

Permission System to run apps isolated.

All solutions need a abstraction layer to give app permissions like android docker or selinux wasmer.

Carlo

needs a nodejs version is dependent to it but also needs restrictions for pupeteer to act only on windows that are app related so that many apps can run isolated from each other to not overpower apps

NodeJS

Needs API to Install and Manage as also use NodeJS version

wasmer

needs API to install and Manage wasm packages and auto update wasmer

androidjs

is not explored but could already deliver the most needed caps in theory so it needs only API to get restricted.

API Design

For frontend Facing apps the good news is that they can most time use browser apis while backend is overpowered.
{ permissions: [{
type: "file-access","network",...
}]}

Final Configuration via ENV

Windows, Mac, Linux

OPEN-PWA_ELECTRON
OPEN-PWA_NWJS
OPEN-PWA_NODEJS
OPEN-PWA_CHROME // Alias for the Carlo Puppeteer Impl
OPEN-PWA_*

ENVIRONMENT Specifier

Creating App Shortcuts on any OS.

Internal prerequired Knowleg

Browsers in general can render data urls

data:text/html;base64,PGgxPkZyYW5rIExlbWFuc2NoaWsgU2hvd2VkIFlvdSBUaGlzPC9oMT4

baste that into your browser you will get

<h1>Frank Lemanschik Showed You This</h1>

wrapped inside a standard conform Dom representation created via the aaopen Rendering algo

Browsers got PWA Shortcut Support for https urls

we can trigger it via scripts inside our data urls

Apple example page

<html>
<head>
  <title>Apple Page</title>
  <meta name="apple-mobile-web-app-capable" content="yes">
  <meta name="apple-mobile-web-app-status-bar-style" content="#ffffff">
  <meta name="apple-mobile-web-app-title" content="Apple Page">
</head>
  <body>
    <a id="redirect" href="https://apple.com/"></a>
  </body>
</html>
<script type="text/javascript">
  if (window.navigator.standalone) {
    var element = document.getElementById('redirect');
    var event = document.createEvent('MouseEvents');
    event.initEvent('click', true, true, document.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null);
    setTimeout(function() { element.dispatchEvent(event); }, 25);
  } else {
    var p = document.createElement('p');
    var node = document.createTextNode('SwiftRocks!');
    p.appendChild(node);
    document.body.appendChild(p);
  }
</script>

Try it out! Open this in Safari, press the Share button, add it to your home screen and touch it to see how it works. For a real example, change the link to a deeplink to your app and encode it to base64 to see it in action.

If you try to open a data: page from Swift using open(url), will not work, SFSafariViewController will crash stating that it doesn't understand the URL.

Solution? Run a Local Webserver For Android a Own WebServer is also needed not to open data urls but other additional features

Interristing Reads

List of integration cases.

How to run Electron based apps

How to run nwjs based apps

How to run carlo like apps (nodejs + shell access)

How to run local servers and or daemons

how to run cron like apps

IOS Support

Stealify

Can Produce IOS Apps and also sharedLibs

Chrome

Has IOS Version

Wasmer

AFAIK, wasmer doesn't support iOS yet. But I successfully ran a simple wasm file by an Android app integrating with wasmer.
I had to do about two things to get it work:
Add target_os = "android" where necessary.
Port some constants to the libc crate which was defined from Linux.
See wasmerio/wasmer#1292 for details.
But perhaps there are more things to do because I found some wasm files that can't be run on Aarch64 Android (See wasmerio/wasmer#1292 (comment) for details. I'll submit this as an issue after making the smallest case.
Anyway, to support wasmer on iOS, you'll have to do more or less similar things.
Unfortunately, wasmer only provides JIT. You might have to use other runtimes such as wasm3 https://github.com/wasm3/wasm3 .
Oh, the README says wasm3 runs on iOS!

Proposal WiP: Allow to customize the Chromium Window via cmd args

The most usefull feature of nwjs and electron is that we can customize the window a bit more then it is possible with chrome it self at present

but we could add that support to chromium directly as part of the PWA Offensive that will make it possible to treat a PWA more like a native app Transperent window mode

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.