Slide 1

Slide 1 text

Running an independent open source project by example JavaZone 2024, Oslo

Slide 2

Slide 2 text

Marc Philipp

Slide 3

Slide 3 text

JUnit in a nutshell • • • • •

Slide 4

Slide 4 text

Agenda

Slide 5

Slide 5 text

Disclaimer • • •

Slide 6

Slide 6 text

Show of hands

Slide 7

Slide 7 text

Brief project history

Slide 8

Slide 8 text

Becoming a JUnit 4 maintainer (2010-2012) • • ▪ • •

Slide 9

Slide 9 text

JUnit 4 architecture

Slide 10

Slide 10 text

Coupling with IDEs

Slide 11

Slide 11 text

Issues with JUnit 4 (2012-2014) • • •

Slide 12

Slide 12 text

Idea: Let’s modernize JUnit (2014)

Slide 13

Slide 13 text

Crowdfunding (2015)

Slide 14

Slide 14 text

Crowdfunding (2015) • •

Slide 15

Slide 15 text

Kickoff (2015) • •

Slide 16

Slide 16 text

Kickoff decisions (2015) • • • •

Slide 17

Slide 17 text

The first six weeks (2015) • • •

Slide 18

Slide 18 text

The road to GA (2016-2017)

Slide 19

Slide 19 text

JUnit 5 feature releases (2018-today)

Slide 20

Slide 20 text

Sponsors (2019-today) • ▪ ▪ • •

Slide 21

Slide 21 text

Thank you to our sponsors!

Slide 22

Slide 22 text

Adoption (2024)

Slide 23

Slide 23 text

Adoption (2024) • ▪ ▪ ▪ ▪ • •

Slide 24

Slide 24 text

Lessons learned (technical)

Slide 25

Slide 25 text

backward compatibility • •

Slide 26

Slide 26 text

build features via extension points • • •

Slide 27

Slide 27 text

mark new features as “experimental” in initial release • @API(status) •

Slide 28

Slide 28 text

automate updates of build and project dependencies • • •

Slide 29

Slide 29 text

have useful CI builds • • • •

Slide 30

Slide 30 text

enforce code formatting in the build • •

Slide 31

Slide 31 text

automate checking of architecture principles • • @API •

Slide 32

Slide 32 text

keep the build fast and free of deprecations • • •

Slide 33

Slide 33 text

Lessons learned (people)

Slide 34

Slide 34 text

building a relationship with stakeholders is important • •

Slide 35

Slide 35 text

conflicts will happen • •

Slide 36

Slide 36 text

dealing with toxicity • • • •

Slide 37

Slide 37 text

weekly team calls help keep momentum • • •

Slide 38

Slide 38 text

in-person meetings are fun and useful

Slide 39

Slide 39 text

grow the team • • •

Slide 40

Slide 40 text

Lessons learned (project management)

Slide 41

Slide 41 text

no one will test an alpha release

Slide 42

Slide 42 text

small, manageable, interesting tasks • •

Slide 43

Slide 43 text

auto-closing issues is a mixed blessing • •

Slide 44

Slide 44 text

embrace contributions but know when to take over • •

Slide 45

Slide 45 text

check definition of done for PRs • • •

Slide 46

Slide 46 text

Then vs. now

Slide 47

Slide 47 text

Status of JUnit in 2014 • • •

Slide 48

Slide 48 text

Status of JUnit in 2024 • • • •

Slide 49

Slide 49 text

…and…

Slide 50

Slide 50 text

The Sovereign Tech Fund will invest in JUnit in 2024 and 2025!

Slide 51

Slide 51 text

Sovereign Tech Fund • • •

Slide 52

Slide 52 text

Full-time work on JUnit (2024-2025) • • • • • • • •

Slide 53

Slide 53 text

Things are looking up!

Slide 54

Slide 54 text

Key takeaways • • •

Slide 55

Slide 55 text

Q & A

Slide 56

Slide 56 text

Thanks!