{"id":13419793,"url":"https://github.com/nidium/Nidium","last_synced_at":"2025-03-15T05:33:15.960Z","repository":{"id":43102226,"uuid":"59298641","full_name":"nidium/Nidium","owner":"nidium","description":"nidium is an ongoing effort for a mobile hw-accelerated rendering engine to create apps and games. Embedding Mozilla JavaScript VM, Google Skia, Facebook Yoga.  https://twitter.com/nidiumproject for updates","archived":false,"fork":false,"pushed_at":"2019-11-12T18:23:08.000Z","size":12071,"stargazers_count":1140,"open_issues_count":44,"forks_count":63,"subscribers_count":53,"default_branch":"master","last_synced_at":"2024-07-31T22:51:31.441Z","etag":null,"topics":["2d-canvas","c-plus-plus","canvas2d","javascript","layout-engine","linux","macos","mozilla","rendering","skia","spidermonkey","webassembly"],"latest_commit_sha":null,"homepage":"https://www.nidium.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nidium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-20T13:58:04.000Z","updated_at":"2024-07-31T04:37:16.000Z","dependencies_parsed_at":"2022-08-17T18:10:10.581Z","dependency_job_id":null,"html_url":"https://github.com/nidium/Nidium","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nidium%2FNidium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nidium%2FNidium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nidium%2FNidium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nidium%2FNidium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nidium","download_url":"https://codeload.github.com/nidium/Nidium/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243690112,"owners_count":20331726,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["2d-canvas","c-plus-plus","canvas2d","javascript","layout-engine","linux","macos","mozilla","rendering","skia","spidermonkey","webassembly"],"created_at":"2024-07-30T22:01:20.956Z","updated_at":"2025-03-15T05:33:15.952Z","avatar_url":"https://github.com/nidium.png","language":"C++","readme":"\u003cp align=\"center\"\u003e\u003cimg src=\"https://github.com/nidium/Nidium/raw/master/resources/icons/nidium.iconset/nidium_128x128.png\" /\u003e\u003cbr /\u003e\u003cstrong\u003enidium\u003c/strong\u003e\u003cbr /\u003e\u003ca href=\"https://travis-ci.org/nidium/Nidium\"\u003e\u003cimg src=\"https://travis-ci.org/nidium/Nidium.svg?branch=master\" /\u003e\u003c/a\u003e\u003cp\u003e\n\n## Introduction\n\nnidium is an ongoing effort for a general purpose rendering engine to create apps and games that run on both desktop and mobile. It also offers a way to create server-side applications through **nidium-server** which shares all the non graphics related code base.\n\nnidium helps you create graphical software with Javascript. It's **not** a NodeJS, QT, Chromium, or WebKit derivative. It has been designed from scratch and has a small codebase written in C++.\n\nIt leverages the combination of **Skia** Graphics from Google, and Mozilla's JavaScript Engine (**SpiderMonkey**) together with many more awesome libraries.\n\nIt supports various common and well known APIs such as:\n\n* **WebGL**\n* **Canvas 2D Context**\n* **WebSocket** (client \u0026 server)\n* **Module loading** (require())\n\nAnd some other non standard:\n\n* **UDP/TCP Socket** (client \u0026 server)\n* **HTTP** (client \u0026 server)\n* **File access**\n* **Threading**\n* **Threaded Audio**\n* **Videos**\n* **Fragment shader on 2D canvas**\n* **Local Key/Value database**\n\nIt can seamlessly run various JavaScript libraries like Three.JS, PixiJS, Phaser (and probably a lot more without much modification).\n\n## What problem(s) is nidium trying to solve\n\nTo put it simply, nidium aims to expose something close to web technology but in an easily hackable environment.\n\nWe're not trying to copy the Web. Think of it as a sandbox where you can quickly prototype new things, without any dependency to blink/webkit (e.g. like Electron does). This allows us to add various optimizations and non standard things. Moreover, nidium is small (nidium statically linked with all of its dependencies is about 20 MB).\n\nAlso, nidium aims to target a large spectrum of devices and our short term goal is to run it on low-power devices (mobile, rpi, ...)\n\nBy the way, it uses SpiderMonkey as its JavaScript engine, and we believe that Mozilla needs some love too!\n\n## Work in progress\n\nnidium is still a **work in progress** and several key features are missing:\n\n* App distribution (create actual app out of nidium)\n* Microsoft Windows support\n* Good documentation\n\n## Layout engine\n\nnidium ships with its own layout engine. That is, every element has its own memory buffer (retained mode), pretty similar to HTML elements.\n\nThe layout engine allows several \"layout\" operations to be made on each element (relative position, opacity, drag'n'drop, margin, scrolling, overflow, and so on).\n\nIt also implements a simple HTML DOM compatility layer and is mature enough to run a MVVM framework like [Vue.js](https://github.com/vuejs/vue) and probably [React](https://github.com/facebook/react) with little to no effort.\n\n## Network and event loop\n\nnidium uses its own high-performance library ([libapenetwork](https://github.com/nidium/libapenetwork)) which handles all the networking operations in a non-blocking, async way.\n\n## Download nidium\n\nYou can download nidium binaries for Linux and OSX from the [download page](http://www.nidium.com/downloads/).\n\n## Building nidium\n\nTo build nidium you need at least 5.7GB of disk space. A build from scratch may take 30 to 90 minutes, depending of the speed of your computer.\n\nOn a debian based system, a few commands will get you started.\n\n```\n$ apt-get install libpci-dev python2.7 git make patch clang pkg-config libgtk2.0-dev libgtk-3-dev mesa-common-dev libglu1-mesa-dev libosmesa6-dev yasm libasound2 libasound2-dev libbz2-1.0\n$ git clone https://github.com/nidium/NidiumTools.git\n$ git clone --recursive https://github.com/nidium/Nidium.git\n$ export PYTHONPATH=$(pwd)/NidiumTools/src\n$ cd Nidium\n$ ./configure_frontend\n$ ./bin/nidium\n```\n\nOn a mac-os based system you need xcode installed.\n\n```\nsudo xcode-select -s /Applications/Xcode.app/Contents/Developer\n$ git clone https://github.com/nidium/NidiumTools.git\n$ git clone --recursive https://github.com/nidium/Nidium.git\n$ export PYTHONPATH=$(pwd)/NidiumTools/src\n$ cd Nidium\n$ ./configure_frontend\n$ ./bin/nidium\n```\n\n## Documentation\n\nWe strive to have excellent documentation, both for our [getting started guide](http://www.nidium.com/docs/guide/get-started/hello-world.html) and for the [API Reference](http://www.nidium.com/docs/api/).\n\n## Videos - nidium in action\n\n- [http://p.nf/nidium-vids/](http://p.nf/nidium-vids/)\n\n## Bug reports and Collaboration\n\nFeel free to report any bug or issue [to us](https://github.com/nidium/Nidium/issues).\n\nIf you feel that something is not clear, that could be an issue worth reporting and solving.\n\n## License\n\nCopyright 2017 Nidium Inc. All rights reserved.\nUse of this source code is governed by a MIT license that can be found in the LICENSE file.\n","funding_links":[],"categories":["TODO scan for Android support in followings","C++"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnidium%2FNidium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnidium%2FNidium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnidium%2FNidium/lists"}