Two decades of Open Source

Julian Ospald

Sep 20, 2024

Follow the presentation

Structure of this talk

  1. Introduction (about me and my career)
  2. Open Source (what it is and its value)
  3. First chapter: Gentoo and package management
  4. Second chapter: GHCup
  5. Third chapter: Haskell Core Libraries
  6. Lessons learned

Introduction

About me

Professional career

Open Source career

Open Source

What is Open Source

Value proposition of Open Source

Reality of Open Source

First chapter: Gentoo and package management

What is Gentoo

How does a Linux distro work (relationships)

How does a Linux distro work (activities)

A typical ebuild

EAPI=8

DESCRIPTION="A dummy package"
HOMEPAGE="https://dummy.org"
SRC_URI="https://github.com/dummy/dummy/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"

LICENSE="BSD-3"
SLOT="0"
KEYWORDS="~amd64 ~x86 "
IUSE="debug"

RDEPEND="dev-util/boost"

PATCHES=( "${FILESDIR}"/${PN}-4.9.2-disable_python_rpath.patch)

src_configure() {
    econf $(use_enable debug)
}

src_compile() {
    emake
}

src_test() {
    emake test
}

src_install() {
    emake DESTDIR="${D}" install
}

Packaging challenges

Packaging challenges (pt. 2)

What is a Distro really?

Programming lessons

Second chapter: GHCup

Demo

State of 2019 (Haskell Installers)

How it started

GHCup today

Haskell Survey 2022:

What is GHCup (simplified)?

curl -s -L \
  'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-linux.tar.xz' |
  tar -xJ -C /tmp                              &&
  cd /tmp/ghc-9.6.5-x86_64-unknown-linux/      &&
  ./configure --prefix="$HOME/.local"          &&
  make install                                 &&
  rm -rf /tmp/ghc-9.6.5-x86_64-unknown-linux/

What is GHCup really?

Relationships in detail

Dependencies:

Relationships in detail (pt. 2)

Dependents:

Programming lessons

The difference to Gentoo

Both deal with installation, but…

Third Chapter: Haskell Core Libraries

What are Haskell Core Libraries?

Core libraries I maintain

Challenges

Core Libraries Committee

Driving changes across core libraries (case study)

Abstract FilePath Proposal:

Programming lessons

Lessons Learned

Collaboration

Project maintenance

User Experience

Stability vs Progress

Composition

Questions/Arguments?