Zero Install. Decentralised cross-platform package management

Similar documents
Installation of R Studio. Tushar B. Kute,

MariaDB ColumnStore C++ API Building Documentation

Manual Install Package Rpm Linux Command Line

Unikernels? Thomas [Twitter]

OCaml: State of the Platform 2014

UNIT 9 Introduction to Linux and Ubuntu

Digitizer operating system support

How To Start Mysql Using Linux Command Line Client In Ubuntu

Frédéric Crozat SUSE Linux Enterprise Release Manager

F-Secure Policy Manager Proxy Administrator's Guide

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Gerrit

Fedora Astronomy. The benefits for astronomical software from integration into Linux distributions. Christian Dersch.

How To Start Mysql Use Linux Command Line Client In Ubuntu

Unix / Linux Overview

How to Contribute to a Sphinx Doc Documentation

OCamlot: OCaml Online Testing

manifold Documentation

Elivepatch Flexible distributed Linux Kernel live patching. Alice Ferrazzi

Open World Forum 2013

NSIGHT ECLIPSE EDITION

From 0 to 6 GHz in 30 minutes bootstrap your SDR Experience!

Apache Manually Install Ubuntu Alongside Windows 8

opsi Linux support and the opsi extension: opsi-linux-client-agent

DocBook Documentation at SUSE and Automated Document Quality Assurance. Stefan Knorr Technical Writer

Course Wiki. Today s Topics. Web Resources. Amazon EC2. Linux. Apache PHP. Workflow and Tools. Extensible Networking Platform 1


openqa Helping SUSE Linux Enterprise with Automated Testing Richard Brown openqa Technical Lead

How To Install Java Manually Linux Mint 14 >>>CLICK HERE<<<

Flatpak. Apps on the Linux desktop. Alexander Larsson Red Hat

Install TeamViewer on latest Debian, Ubuntu, Fedora, CentOS Linux quick how to

Introduction to Linux

Tool installation for PMC-MC-X2/X4 with P2020 series processor

Image Management Service. User Guide. Issue 08. Date

Singularity: container formats

Manual Java For Mac Developer Package

django-wiki Documentation

Install your scientific software stack easily with Spack

Mingw-w64 and Win-builds.org - Building for Windows

Cucumber Linux Distribution

Enterprise Linux vs. Embedded Linux

Attack Surface Intelligence of Source Code

vpp-firstcut Documentation

Software Distribution and Package Management

Free as in Freedom A step towards Software freedom. Salahaddin University By: Amanj Sherwany

7 zip linux gui. Search

UBUNTU INSTALLING ON HP DL380 G7 WITH HARDWARE RAID 1

doconv Documentation Release Jacob Mourelos

kpatch Have your security and eat it too!

Open Enterprise & Open Community opensuse & SLE Empowering Each Other. Richard Brown opensuse Chairman

How to install Linux or *BSD to USB flash drive (memory stick) using Debian GNU / Linux

Regarding the quality attributes, the architecture of the system must be:

There Should be One Obvious Way to Bring Python into Production. Sebastian Neubauer

Upgrading CFEngine Nova A CFEngine Special Topics Handbook

openqa Avoiding Disasters of Biblical Proportions Marita Werner QA Project Manager

Flatpak and your distribution. Simon McVittie

Learn Linux in a Month of Lunches by Steven Ovadia

diskimage-builder: Building Linux Images for Cloud / Virtualization / Container

Zoneminder Debian Installation Manual New. Releases >>>CLICK HERE<<<

CS Prof J.P.Morrison

Installing VMware Player to Run Ubuntu Linux on a Windows Machine

TIBCO FTL Installation

crane Documentation Release Globo.com

How to decide Linux Kernel for Embedded Products. Tsugikazu SHIBATA NEC 20, Feb Embedded Linux Conference 2013 SAN FRANCISCO

AppImageKit Documentation

Install and Configure wxwidgets on Ubuntu

How To Manually Install Software In Linux Mint 14 Cinnamon From Usb

Apache Manually Install Ubuntu On Windows 7 From Usb

1 Release Main Features 1.2 Bug Fixes 2 CQ2SVN Release Main Features 2.2 Bug Fixes 3 CQ2SVN Release Main Features 3.

Introduction to Linux

InstallAnywhere: Requirements

Python Documentation For Windows Xp 32 Bit Full Version

How To Install Latex Mac Os X Lion On Pc Step By Step

swiftenv Documentation

CS197U: A Hands on Introduction to Unix

Heat An Interactive Development Environment for Learning & Teaching Haskell

Introduction to Operating Systems. Note Packet # 1. CSN 115 Operating Systems. Genesee Community College. CSN Lab Overview

Kaji Documentation. Release 0.2. Thibault Cohen

The tools used in the development of Life Is Strange

CUPS Plenary. Michael Sweet, Apple Inc. August 12, 2013

Adding Applications to the GNOME Software Center

bootmachine Documentation

Downloading and installing Db2 Developer Community Edition on Ubuntu Linux Roger E. Sanders Yujing Ke Published on October 24, 2018

Phpmyadmin Ubuntu 10.04

Java Manuals For Windows Xp Latest Version 6.1

Parallels Virtuozzo Containers 4.6 for Linux Readme

Workplace 2.4.0p1. Community Edition Getting started

Ubuntu Set Static Ip Address Command Line

Overview LEARN. History of Linux Linux Architecture Linux File System Linux Access Linux Commands File Permission Editors Conclusion and Questions

TrinityCore Documentation

Release Notes for (Supporting 3ware 9690SA and 9650SE controllers)

Open Enterprise & Open Community

Linux operating system

Topics covered. Introduction to Maven Maven for Dependency Management Maven Lifecycles and Plugins Hands on session. Maven 2

Kernel driver maintenance : Upstream vs. Industry

Advantech General FAQ. How to change ubuntu specific kernel for quick cross test

Viri. Remote execution of Python scripts. Every time you use Viri, God kills a sysadmin

How to install Java Virtual Machine on Debian 7 GNU / Linux

How To Manually Install Driver Ubuntu Server On Virtualbox

CUDA QUICK START GUIDE. DU _v9.1 January 2018

Introduction to Linux

Transcription:

Zero Install Decentralised cross-platform package management Thomas Leonard / University of Cambridge / @talex5 OCaml 2014, Gothenburg, Sweden, September 5, 2014

History Started the ROX desktop in 1999...

Distribution problems Multiple packages needed Debian, Red Hat, SUSE,... Poor, missing or out-of-date packages Everyone should have access to every version Slow feedback cycle Bug reports are for last year's version

Zero Install (2003) Make one package that works everywhere Linux, OS X, Unix, Windows Packages can come directly from upstream (or from distribution) Switch to latest version easily

Availability Zero Install is in most Linux distributions, e.g. $ yaourt -S zeroinstall-injector # Arch $ sudo apt-get install zeroinstall-injector # Debian, Ubuntu $ sudo yum install 0install # Fedora $ sudo zypper install zeroinstall-injector # OpenSUSE OS X bundle and Windows.exe available too. http://0install.net

Example: OPAM $ 0install add opam http://tools.ocaml.org/opam.xml $ opam --version 1.1.1

Where did it go? $ 0install show opam - URI: http://tools.ocaml.org/opam.xml Version: 1.1.1 Path: /home/test/.cache/0install.net/implementations/ sha256new_ruox6pwgdchh5tdnedrhqj54yzz4tsagbb5aebrnokshm3n7xora - URI: http://repo.roscidus.com/utils/aspcud Version: 1.9.0 Path: /home/test/.cache/0install.net/implementations/ sha1new=5f838f78e489dabc2e2965ba100f14ae8350cbce - URI: http://repo.roscidus.com/utils/curl Version: 7.32.0-10.20 Path: (package:rpm:curl:7.32.0-10.20:x86_64) (one 0install package and two distribution-provided dependencies)

Upgrading By default, 0install prefers "stable" releases: $ 0install update opam A later version (http://tools.ocaml.org/opam.xml 1.2.0-pre4) exists but was not selected. Using 1.1.1 instead. To select "testing" versions, use: 0install config help_with_testing True Can change this globally, or by adding a local version restriction: $ 0install update opam --not-before=1.2.0-pre4 http://tools.ocaml.org/opam.xml: 1.1.1 -> 1.2.0-pre4 $ opam --version 1.2.0~beta4

Viewing changes $ 0install whatchanged opam Last checked : 2014-08-26 11:00 Last update : 2014-08-26 Previous update : 2014-07-03 http://tools.ocaml.org/opam.xml: 1.1.1 -> 1.2.0-pre4 To run using the previous selections, use: 0install run /home/tal/.config/0install.net/apps/opam/ selections-2014-07-03.xml

Publishing Put up a web-page with your package's details:

It's actually XML <?xml version="1.0"?> <?xml-stylesheet type='text/xsl' href='resources/feed.xsl'?> <interface uri="http://tools.ocaml.org/opam.xml" xmlns="http://zero-install.so <name>opam</name> <summary>ocaml package manager</summary> <description> OPAM is an open-source package manager edited by OCamlPro. It supports multiple simultaneous compiler installations, flexible package constraints, and a Git-friendly development workflow. </description> <homepage>https://opam.ocaml.org/</homepage> <group license="osi Approved :: GNU Lesser General Public License (LGPL)"> <group> <requires interface="http://repo.roscidus.com/utils/aspcud" importance="recommended">

End of Part I Questions?

Python problems (2013) Python 0install too slow: On mobile platforms Running small utilities Too unreliable: No static checking Python 3 breakage PyGTK breakage So started looking for a new language...

Language comparison http://roscidus.com/blog/blog/2013/06/09/choosing-a-pythonreplacement-for-0install/

OCaml: 1st impressions Bad: Top-level: no readline support!?! Syntax errors hard to find (not sensitive to indentation errors) Unhelpful errors: Not_found Binary compatibility (of OCaml libraries) Good: Fast! Reliable Mature Direct equivalents to Python features "Obvious" compiler behaviour

Suggestion: OCaml for... Python users: fast, static checking, unicode Java users: fast startup, no NullPointerExceptions Everyone: polymorphic variants, functors, abstract types http://roscidus.com/blog/blog/2014/02/13/ocaml-what-yougain/

Porting process Used old Python and new OCaml parts together. Communication was via JSON. Literal translation first; refactor later in OCaml.

Results Similar LOC (OCaml slightly shorter) OCaml around 10x faster Seems very reliable Community very helpful! http://roscidus.com/blog/blog/2014/06/06/python-to-ocamlretrospective/

Feedback "I found modifying an unfamiliar OCaml codebase much easier than a Python one. [...] the explicit.mli files give a good summary of each module's surface area, [...] modifying the type of something and then fixing the errors gives you a good way to start figuring out how to actually enact a certain change." -- Tim Cuthbertson (0install developer)

THE END For more information: http://0install.net/ http://roscidus.com/blog/blog/categories/ocaml/ Questions?