Olaki is a tool that aggregates information on alternative operating systems for Android phones from various sources.
This is possible thanks to the fact that Android phones can be uniquely identified by their codenames.
The generated list is hosted here.
Olaki comprises a Node.js app written in TypeScript that fetches data from codebases or websites of known alternative OSes for Android.
Data collected for each alternative OS is stored in a Map data structure.
- Map key: unique Android phone codename
- Map value: generic device info and download links where possible
Those individual OS maps are then merged into an overall one, where map keys are again unique Android phone codenames.
The overall map is output as a JSON file and displayed on a table via GitHub pages.
Rules exist to decide what devices should be added to the overall map based on compatibility level for each OS. See appConfig.json.
The main logic complexity stems from the variety of ways data is collected, from well-structured JSON payload to website scraping.
Thank you for your interest in the project! You time and effort are really appreciated.
This project adheres to a code of conduct so that everyone can contribute in an open, welcoming, diverse, inclusive, and healthy environment.
For more details, please visit this page.
This codebase is written in Typescript. Feel free to raise a pull request whatever your skill level in that language.
Please also raise an issue to capture context on your pull request. E.g. what bug/improvement/suggestion does your pull request relate to?
Please raise an issue to describe your problem statement.
Node.js v18.x.x
and npm 9.x.x
.
Clone this codebase and run the following:
npm install
npm run init-submodules
npm run update-submodules
The submodules
directory contains clones of some alternative OS project codebases. These can be updated to their respective HEAD
s at once by running the command above.
npm run lint
npm run fix-lint
Linting and formatting rules are defined in .eslintrc.json
and .prettierrc.json
.
An .editorconfig
file is also provided for IDEs compatible with that standard.
npm run build
npm run extract-device-summaries
If that command runs successfully, you should be able to open in your browser the file public/index.html
The following GitHub workflow steps are run:
- CodeQL analysis
- Lint
- Build
Additional GitHub workflow steps that are run:
- Run the app to extract device summaries
- Publish the generated list to the page on GitHub Pages
MIT