Code Monkey home page Code Monkey logo

meilix's Introduction

Meilix

A beautiful and customizable Linux build for out of the box features for an Internet Kiosk. You can use the Meilix Generator (Web app) to make a Linux for your own brand/event, also add apps and features you need pre-installed, it will create an ISO Image of your Linux, which you can use as a live boot or install on PCs.


Join the chat at https://gitter.im/fossasia/meilix Build Status

Meilix is under heavy development. It is in alpha stage and not yet recommended for productive use.

Index

  1. Introduction
    1. Features
    2. Architecture
    3. Ecosystem
  2. Usage
  3. Pre Requisites
  4. Development
    1. File Structure
    2. Build
    3. Metapackages
    4. Testing
  5. Contribution
    1. Community
    2. Guideline
    3. Branches
    4. Best Practice
  6. Resource
  7. Gallery
  8. License

Introduction

This project serves as a solution for those who wish to have a pre-configured custom Linux, with all the needed apps/features already installed. An example of its use case is events. Every event organizer needs to have all their systems configured equally, and need some specific apps to run the event. Configuring each system one by one can be a time taking and difficult task, but using Meilix, they can create their own custom Linux ISO and run/live boot on as many systems as they want. It will not just save countless hours, but also make the process more cost-efficient.

Feature

Meilix is a light weight, beautiful and fast Linux with all the features of Ubuntu/Debian distro. Custom Meilix builds are commissioned by the Meilix-generator web app.

Architecture

Meilix is based on Ubuntu/Debian architecture. Meilix uses LXQT as the standard Desktop Environment.

Ecosystem

Following are the other projects/dependency part of Meilix ecosystem.

Name About
Meilix This repo for standalone build or as a backend for the webapp
Meilix-generator A webapp which generates an ISO Image of Meilix Linux
Meilix-systemlock A program to freeze the system
Meilix-artwork Boot screen splash themes for Meilix

Usage

To create your own Linux for an event kiosk or just for trying it out, you can use Meilix-generator. A web app, which has all the options to customize and generate an ISO.

Pre Requisites

Here are some pre-requisites to develop Meilix.

  • Exposure to the terminal and basic commands and basic comprehension of shell scripts
  • Experience in working with a Debian system.
  • LPIC1 is a huge plus

Development

Meilix fetches ubuntu source, customizes it to add features and then builds the distro. It uses shell scripts to perform all the tasks, build can be made on local machine or via Travis CI.

File Structure

Basic understanding of the file structure is required to do development, here is a level 2 file structure of this project

.
├── build.sh
├── LICENSE.md
├── sources.xenial.list
├── sources.bionic.list
├── README.md
├── systemlock_0.1-1_all.deb
├── image-amd64.tar.lzma
├── image-i386.tar.lzma
├── ubiquity-slideshow
|   └── slides/...
├── polkit-1
│   └── actions/...
├── conf
│   └── distributions/...
├── pool
│   └── main/...
├── systemlock-0.1
│   ├── debian/...
│   ├── etc/...
│   ├── Makefile/...
│   └── usr/...
├── meilix-default-settings
│   ├── debian/...
│   ├── etc/...
│   ├── Makefile/...
│   └── usr/...
├── scripts
│   ├── aptRepoUpdater.sh
│   ├── arch.sh
│   ├── browser_uri.sh
│   ├── chroot.sh
│   ├── debuild.sh
│   ├── legacy_initrdext.sh
│   ├── mail-fail.py
│   ├── mail.py
│   ├── meilix_check.sh
│   ├── mew.sh
│   ├── packages
│   └── releases_maintainer.sh
└──chroot
    ├── bin/...
    ├── boot/...
    ├── dev/...
    ├── etc/...
    ├── home/...
    ├── lib/...
    ├── lib64/...
    ├── media/...
    ├── mnt/...
    ├── opt/...
    ├── proc/...
    ├── root/...
    ├── run/...
    ├── sbin/...
    ├── srv/...
    ├── sys/...
    ├── tmp/...
    ├── usr/...
    └── var/...

Build

Building Locally

  1. Make the build script executable.
$ chmod +x ./build.sh
  1. Execute the script.
$ ./build.sh

Testing the ISOs

  1. Local Installation with Qemu/KVM
  2. Run as a live CD in Virtualbox by Oracle

Build Using Travis*

  1. Update .travis.yml according to your API key as explained here
  2. Push changes to your repo, it will start the build process.

Contribution

Your code contributions are always appreciated. To keep your experience good, we suggest you read all the guidelines thoroughly, also take some time to understand the workflow for this project. Each contribution is expected to follow best practices and community guidelines. Following are the things you can do to contribute to Meilix

  1. Report a bug
    If you think you have encountered a bug, and we should know about it, feel free to report it here and our community will take care of it.

  2. Request a feature
    You can also request for a feature here, and if the community feels it's viable, it will be picked for development.

  3. Create a pull request
    It can't get better then this, your pull request will be really appreciated by the community. You can get started by picking up any open issues from here and make a pull request.

Community

Meilix has contributors around the world, constantly improving Meilix and helping others as well to do so. To get in touch with the community, you can use the following communication channels.

Gitter: https://gitter.im/fossasia/meilix
Mailing List: https://groups.google.com/forum/#!forum/meilix
Scrum Mail: [email protected]
Twitter: https://twitter.com/meilix_

Guideline

FOSSASIA Open Source Guidelines can be found here

Branches

Meilix uses an agile continuous integration methodology, so the version is frequently updated and development is really fast.

  1. Master is the development branch. It should always built.

  2. Generator is a legacy branch we keep for reference for the time being. It chrooted a master branch ISO release and made changes as requested by the meilix-generator app and repackaged the customized ISO.

  3. No further branches should be created in the main repository.

Steps to create a pull request

  1. Make a PR to master branch.
  2. Comply with the best practices and guidelines e.g. where the PR concerns visual elements it should have an image showing the effect.
  3. It must pass all continuous integration checks and get positive reviews.

After this, changes will be merged.

Best Practice

Commits

  • Each commit should have proper documentation and comments in code, which will make it easy for others to understand it.
  • Make sure your commit message is crisp and clear, read more about it here
  • When refering to a issue in a Pull Request, use special words to automatically close the related issue like "Fixes #234"
  • Keep each PR limited in scope, which will make it easy to review and correct. Squash your commits.

Resource

License

This project is currently licensed under GNU Lesser General Public License v3.0 (LGPL-3.0). A copy of LICENSE.md should be present along with the source code. To obtain the software under a different license, please contact FOSSASIA.

meilix's People

Contributors

0x48piraj avatar abishekvashok avatar alok760 avatar ammarbinfaisal avatar dishebh avatar felixonmars avatar gitter-badger avatar krtkvrm avatar manaswinidas avatar mariobehling avatar medicalwei avatar meets2tarun avatar navirocker avatar niccokunzmann avatar rahulkumaran avatar ramantehlan avatar rpotter12 avatar tabesin avatar vaibhavsingh97 avatar xeon-zolt avatar yashkumarverma avatar yukiisbored 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  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  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  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  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

meilix's Issues

Remove unnecessary metapackage from meilix/generator

  • Issue type: Feature request

Short Description

Since the generator branch is the master one, so it contains all the packages and most of them are not required.

Expected behavior

The idea is to remove them.

Actual behavior

We can even remove each unnecessary metapackage but the fear is that it may disturb the MD5 configs, so I thought to remove the installation line of metapackage from the build.sh

Use case

This will remove unnecessary metapackage from the event-os.

Description

Thus at the end of the day, we will be left with a lightweight event-os.

Deployment not working

Deployment on master branch is not working. Bad credentials are the cause of the error. Maybe something happened with the API key,
@mariobehling can you check the API key please?
Thank you.

To edit Readme

I will make a P.R which makes changes in the readme about the branch policy and Licence agreement .
Any more information you think which must be included?

Create amd64 build

As far as I can see, creating a meilix amd64 requires the following:

  • add the file image-amd64.tar.lzma
  • do not install i368 packages
  • add amd64 variants of the i368 packages
meilix$ ./build.sh amd64
./build.sh: ERROR: data file /home/coderdojo/meilix/image-amd64.tar.lzma not found

Questions:

  • Is it possible to use the same image files for amd64 as for i368? Answer: Yes, it is. But EFI boot does not work.
  • Could we just copy the files for the amd64 image from the Ubuntu amd64 iso? No: Does not work.

Repository for distro

The goal is to keep our files on our own server and have our own repository. What is the simplest model to get this for now?

Add apt-bot as a collaborator

The script aptRepoUpdater.sh uses a bot to push the changes [new metapackages] back. To push changes back (i.e, to update the gh-pages branch via a commit) it (@apt-bot) would need write access to the meilix project so please add @apt-bot as a collaborator to the meilix project.

@mariobehling this one is for you sir.

Build failing because my access token has no rights

Seems like my access from the repo has vanished somehow and I can't write to it, as a coincidence the build is also failing because my personal token was used for pushing out releases.

NB: I also lost access from some other repos where I could merge PRs also, and I think i haven't done anything with my acc or experimented anything in the near past, so I am confused of how my accesses have been lost :(

To make a new branch

We are using Travis to trigger the build of meilix but now in a forked repo here since we made required changes in our master branch.
The idea is to make a new branch as generator which will contain the required changes.
@mariobehling @niccokunzmann Help us in this matter.

Branch Policy inclusion in Readme and for the contribution page

This issue will focus on making the concept clear of the different branches in meilix i.e, master and generator.
master: all the development goes into the master branch
generator: this is the branch which is used by meilix-generator for generating the iso and hence the requirement changes will be made here.

Update the sources.list in chroot directory

Chroot folder contains sources.list file which needs to be updated to zesty.
The user that locks a file or directory is the only one that can edit and push their changes back to the repository where the locked objects are located.

Repository Clean Up

The generator branch is made for the webapp basically. So we need to clean up the branch to make it suitable for customization.
The cleanup include: meilix-default-settings/debian/changelog should be edited to version 1.0

Required configuration to achieve in master branch

This is the copycat of fossasia/labs.fossasia.org#135 (comment)
We created this so we can checkmark the boxes.

  • Use LXQt
  • Switch off notification
  • Switch off screensaver and sleep modes
  • Switch off system sounds
  • Disable bookmarks in browser
  • Install ownCloud and Dropbox
  • Pre-set start system without password
  • Install Gtalk/Hangout
  • Install Firefox, Chrome, Chromium
  • set Chromium as default
  • set custom start page and set "restart with last opened tabs" (in case laptop is crashing)
  • Install git
  • change desktop background with custom image
  • Update to latest version (without password)
  • Switch off screen dimming
  • switch off power management saving features
  • link to the slide folder from the desktop (edit "make a link")
  • autohide panel
  • Install local language keyboards
  • Install VLC and set as standard video player
  • Install LibreOffice, Gimp, Inkscape
  • set search engine
  • distro referrals

This should be implemented in generator branch of fossasia/meilix with the maximum of these features

We want to add

  • gedit

Create separate Repo for Apps

We can make a separate repo for apps and use it as a sub module so that managing and updating apps and managing build script can be simple

Update distro to latest versions in repo

  • Update script to latest ubuntu version 16.10 and compare to lubuntu version (http://bazaar.launchpad.net/~lubuntu-dev/ubuntu-seeds/lubuntu.yakkety/view/head:/desktop-qt)
  • Create a meta package for the distro (some useful documentation https://blends.debian.org/blends/apb.html)
  • Add additional language packs and fonts for Asian languages
  • Add skype
  • Substitute qupzilla browser with Google Chrome in meta package
  • Define specific search engines
  • Substitute SMPlayer with VLC in meta package
  • Substitute nomacs with lximage-qt
  • Take out 2048 (Qt) - Sliding block puzzle game
  • Take out nobleNote - Application to take notes
  • Take out usb-creator-kde
  • Add our repo as additional PPA
  • Create and define
  • Krita
  • Enhance and and change lubuntu-qt-desktop for use in community distro

Optional: * instead of using LXQT from launchpad use LXQT from github repo https://github.com/lxde/lxqt (more info also here: https://github.com/selairi/compile-lxqt-ubuntu)

Bringing Linux Customization to the End User

Various flavors of linux exist. Ubuntu has a lot of derivatives for different use cases: education, office, low-memory, … . How can we allow the average users to customize their own linux distribution?

The User Interface

A simple user interface can be a website as prototyped by codersos/create. The users can choose among different flavors of the UI, programs an packages. Next, they submit their customization to a server and get feedback about the build. When the build is done, they get notified or download the file automatically.

Architecture

The architecture consists of several components:

  • The website for the user
  • The logic (proxy) to create a build
  • The build services (Travis, self-hosted, gitlab-ci, …)
  • The repository with the linux build
  • The meta packages to keep older builds updated
  • Picture of the Architecture

Walkthrough

(1) Customization

The user goes to the github pages served website. A specification is created. This spec can be downloaded, loaded, sent to the proxy. A proxy is chosen by the website based on availability.

(2) Build Server is Chosen

The proxy chooses a build sever to send the spec to.

  • Travis and Gitlab-CI
  • In these cases the proxy passes the specification to the repository by creating a commit with a tag and pushing this.
  • Heroku
  • This is an own build service.
  • A way to recognize whether a build was successful/which state it has, … is communicated back to the website.

(3) Image Build

The repository is built by the build service. The correspnding image and output is pushed to a release somewhere.

During the build, the meta packages are used. They allow updating the resulting distribution in the future.

Collaborating

Questions are discussed in issues.

In order to spread the knowledge, students can not merge their own pull-requests but those others. (Inspiration)

The APIs are defined and discussed first:

  • We keep the architecture clean
  • development details do not creep through several repostories and increase required expert knowledge for contribution
  • The development speed is constant
  • We document and talk which is a basis for collaboration

Possible Customization

  • Hotel - See meilix
  • Events
    • connect to wifi
    • turn notifications off
    • browser start page is event
    • presentation tools like libre office are installed
    • owncloud/nextcloud to share files and slides, authenticated
    • onedrive, dropbox?
    • same user/password
  • Programming clubs?
  • environments and languages
    • see CoderDojoOs
      Home & Office
  • not sure if this is important as there is so much

Related Work

Tools like customizer exist as a GUI and can be automated using continuous integration servers such as Travis. The pager about the live-addon-maker provides further research.

Original: http://niccokunzmann.github.io/blog/2017-04-19/customized-linux-distribution-by-click

Email notification

We achieved to get the user the email but it doesn't contain the link. Need to be solved
photo_2017-07-18_10-21-11

Event distro specifics

Settings

  • Switch off notifications
  • Switch off updates
  • Deactivate sleeping mode
  • Deactivate Screen Saver and Lock with Password

Browser

  • Set up loklak wall on start screen and as start page

File Exchange

  • Set up Dropbox for File Exchange
  • Add Skype

Possible definitions at Installation

  • Enter loklak wall link
  • Enter Open Event link
  • Enter Dropbox Account or Public Folder

Adding Lxqt to the generator branch of meilix

  • Issue type: Feature

Short description

lxqt is a desktop environment and we need to use it for next part

Usecase

it is a lightweight DE so it can run on low spec PC too plus after adding this we should be working on configuring it for presentations

Blending of meilix with SUSI.Al

Cooperate with the SUSI.AI hardware project to offer a dedicated Kiosk Meilix version with SUSI.AI for Raspis and Magic Mirror

@mariobehling, we went through your feedback and now in need of your help to understand the terms to start working on this.

Process to get configuration

The webapp should configure the meilix build.

When Travis builds, the environment is configured.
This environment can contain a variable, e.g. CONFIGURATION_SCRIPT_URL.
This url should point to a script which can be downloaded, e.g.
CONFIGURATION_SCRIPT_URL=https://meilix-generator-test.herokuapp.com/configurations/TAG_NAME.sh

The travis build looks for such a variable. If it is present, it downloads the file and marks it as executable.
In the chroot of meilix, the file is executed.

This approach does the following:

  • it is extensibe: Different web apps can use different configurations
  • if is fast to make it work
  • It can be changed later to bootstrap different types of configurations, e.g. a json configuration

Related:

Skype not found

Although skype metapackage is included in the root directory of meilix but it is not found while searching for skype in the OS.

Travis CI is failing

Here's the problem:
image

As you can see at line no 2479-2482 there are some errors namely:

Errors were encountered while processing:
 libpam-systemd:i386
 systemd
E: Sub-process /usr/bin/dpkg returned an error code (1)

As you can see there was an error in processing the libpam package which belonged to systemd.

Note: PAM = Pluggable Authentication Modules. Basically, it is a flexible mechanism for authenticating users and we can't omit it so please deliver a fix.

@mariobehling since we lack contributors can we create a task for this?

.json or config file for firefox

Similar to chromium, where is the .config or .json file for the firefox browser to edit the preference of the browser?
Is there any way for the configuration?
@Abhi2424shek @xeon-zolt

Undesired output while running meilix iso

Although meilix master branch is based on lxde but when I implemented the change in build.sh script to remove all the packages of lxde and included the packages of lxqt. But after booting the iso, it shows no change at all, even the desktop environment is shown to be of gnome.

The sources repository not well padded

While testing on mobile i found that the sources repositor's home page which is made the official page of the meilix sources is not well padded. Assuming low priority for this one!

Travis CI is taking a long time to compile the code

The average build time is around 27mins or so, it would have been better if we could investigate faster CIs and move the build function to there and keep the Content Delivery with Travis (metapackage pushing to gh-pages). What are your thoughts?

Inclusion of required metapackages

#84
This PR actually removes few lines from the build.sh which install metapackages.
The task is to include those lines and tests the iso for the metapackages.

Investigate Meta-Packages in Meilix and propose ways for configuration

There are metapackages in meilix. These meta-packages can help to define details of a distro including which packages are included, start page and search engines of browsers etc.

Please check out the existing meta-packages and update them. Find out what needs to be changed in order to change browser search engines etc. and update your findings in the Readme.md

Next steps would be to make a list of items that we will include in the meta-package.

We don't have a license yet!

We don't have a license yet for the meilix project so shall we go for one, if yes let us all express our views here in this issue.

Addition of new essential metapackages

Adding of metapackages of a
File Manager (Nemo)
Gparted
Cheese (for webcam)
Trash
thunderbird
gnome-terminal
gnome-calculator

Please help if you want to cut some options or add more.

Releases are not working

Github releases are not working because the API token has been changed in a recent PR, we need to get it back.

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.