Top Banner
leihs, the leading free equipment booking system It took us eight years to get it right. What we learned about being a FOSS project. Ramón Cahenzli [email protected]
176

leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Jul 03, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

leihs, the leading free equipment booking system

It took us eight years to get it right. What we learned about being a FOSS project.

Ramón Cahenzli [email protected]

Page 2: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

OpenVZLinux Containers

Page 3: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

leihs

Page 4: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Multilingual recursive acronym

leihs is an easy inventory handling system

leihs ist ein einfaches inventarhandhabungssystem

leihs permet d'emprunter votre inventaire habilement et systématiquement

leihs är ett enkelt inventarhanteringssystem

leihs – ei inventaarioita helpommaksi saa

Page 5: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Ausleihsystem

Page 6: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

What does leihs do?

Page 7: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Main building

Theater department

Film department

Fine artsstudent

Film student

Lendingmanagers

Page 8: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Main building

Theater department

Film department

Fine artsstudent

Film student

Lendingmanagers

max. quantity = 1

Page 9: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Main building

Theater department

Film department

Fine artsstudent

Film student

Lendingmanagers

max. quantity = 2

Page 10: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Why?

Page 11: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 12: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Some mistakes

Page 13: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 1

To have non-English code

Page 14: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 15: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 16: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

What might the “show” method be called?

Page 17: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 18: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 19: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 20: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 21: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

http://localhost:3000/gegenstands/list

Page 22: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 2

To be on the bleeding edge

Page 23: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

2004

Rails logo © David Heinemeier Hansson

Page 24: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

2004

leihs

2005

Rails logo © David Heinemeier Hansson

Page 25: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

2004

leihs

2005

Photo credit:(CC) By-NC Alex Proimoshttps://www.flickr.com/photos/proimos/ Rails logo © David Heinemeier Hansson

Page 26: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

New platform Established platform0

20

40

60

80

100

Writing new featuresCatching up to your platform

Very scientific chart

Page 27: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

1.6 1.8Ruby

2.0

2.1

0.x 1.0 2.0-2.3 4.1Rails 1.2

1.9

3.0-3.2 4.2

2000 2003 2007 2013 2014

2.2

2005

2.0-2.3

2010

4.0

RubyGems 0.8.3-0.9.4 1.0.0 1.3.6 1.8.24 2.4.5

1.1.1

1.3.0

1.4.0

...

Page 28: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

1.6 1.8Ruby

2.0

2.1

0.x 1.0 2.0-2.3 4.1Rails 1.2

1.9

3.0-3.2 4.2

2000 2003 2007 2013 2014

2.2

2005

2.0-2.3

2010

4.0

RubyGems 0.8.3-0.9.4 1.0.0 1.3.6 1.8.24 2.4.5

1.1.1

1.3.0

1.4.0

...

Page 29: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 3

Internationalization? We'll add that later!

Page 30: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 31: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

1,037 times!

Page 32: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 4

No tests

Page 33: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

t

Page 34: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

:(

t

Page 35: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

t

Page 36: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

t

Page 37: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

Rspec andCucumber

t

Page 38: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

Rspec andCucumber

:(

t

Page 39: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

Rspec andCucumber

:(

Cucumber

t

Page 40: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

Rspec andCucumber

:(

Cucumber

:|

t

Page 41: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

9 hours test execution

Page 42: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 43: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 44: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Cider CI

http://cider-ci.info/

CI system/framework for parallelizedand resilient integration testing

(not created by the ZHdKbut by our teammate Thomas Schank)

Page 45: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

:|

Page 46: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

:)

Page 47: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 5

Starting without a user interface person

Page 48: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 49: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 50: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 51: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 52: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 53: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 54: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 55: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 56: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 57: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 58: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 59: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 60: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 61: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Page 62: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

HTML5

CSS3

JavaScript

JSON

Page 63: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecord

XML

bash

Page 64: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Page 65: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Scalability

Layout

Page 66: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Layout

Page 67: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Graphicdesign

Informationarchitecture

Datavisualization

Usabilityinspection

Layout

Page 68: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Graphicdesign

Informationarchitecture

Datavisualization

Usabilityinspection

InterfacedesignDiscoverability

GIMPInkscape

Layout

Page 69: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Graphicdesign

Informationarchitecture

Datavisualization

Usabilityinspection

InterfacedesignDiscoverability

GIMPInkscape

Layout

Page 70: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Graphicdesign

Informationarchitecture

Datavisualization

Usabilityinspection

InterfacedesignDiscoverability

GIMPInkscape

Layout

rekt

Page 71: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 6

Implementingorganization-specific features

Page 72: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 73: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 74: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 75: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 76: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 77: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Enough aboutmistakes already!

:(

Page 78: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Hints andobservations

Page 79: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

BDD is hard

Create a glossary

Use boring, idiom-free, colorless language

Page 80: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Bad (but fun) BDD scenario:

When shit's all fucked upAnd there ain't no hustlas that still have the goods, yoThen holler out to all yo brothas, for real

Better (and boring) BDD scenario:

When at least one crucial configuration setting is missingAnd no inventory pool has any more items availableThen display a warning in the global warning section

Page 81: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Bad (but fun) BDD scenario:

When shit's all fucked upAnd there ain't no hustlas that still have the goods, yoThen holler out to all yo brothas, for real

Better (and boring) BDD scenario:

When at least one crucial configuration setting is missingAnd no inventory pool has any more items availableThen display a warning in the global warning section

Page 82: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Management

Make sure management understands what Free Software is. Let them give you a good product owner that understands, too.

Get authorization to spend hours working with the community.

You will spend more time developing than if you were doing this only for your own organization.

Page 83: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

If you are gov't

You are using taxpayer money to make software. Give the taxpayers the software they paid for.

Page 84: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Definitely a hint

Learn to say no.

Page 85: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Definitely a hint

Learn to say no.

(But first, have a good idea of wherethe journey goes, otherwise you're

just being a jerk.)

Page 86: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mad bullet points, yo

● Solid vision● Stable platform● Internationalization from day one● Interaction designers● Tests● Good community work● Educated management● Know when to say no

Page 87: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mad bullet points, yo

● Solid vision● Stable platform● Internationalization from day one● Interaction designers● Tests● Good community work● Educated management● Know when to say no

= great success

Page 88: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Thank you!

Zürich University of the Arts

zhdk.ch

[email protected]

leihs

github.com/zhdk/leihs

Page 89: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

leihs, the leading free equipment booking system

It took us eight years to get it right. What we learned about being a FOSS project.

Ramón Cahenzli [email protected]

Page 90: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

OpenVZLinux Containers

We are what I hope is a typical university, using the usual Free and Open Source suspects.

Page 91: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

leihs

But we also develop our own Free Software, and one of those is leihs.

Page 92: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Multilingual recursive acronym

leihs is an easy inventory handling system

leihs ist ein einfaches inventarhandhabungssystem

leihs permet d'emprunter votre inventaire habilement et systématiquement

leihs är ett enkelt inventarhanteringssystem

leihs – ei inventaarioita helpommaksi saa

Page 93: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Ausleihsystem

Page 94: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

What does leihs do?

Page 95: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Main building

Theater department

Film department

Fine artsstudent

Film student

Lendingmanagers

Page 96: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Main building

Theater department

Film department

Fine artsstudent

Film student

Lendingmanagers

max. quantity = 1

Page 97: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Main building

Theater department

Film department

Fine artsstudent

Film student

Lendingmanagers

max. quantity = 2

There are ten thousand things that can go wrong here, and leihs tries to minimize the impact and handle things well.

Still total flexibility for the inventory managers with ability to override almost everything and cause their own problems.

Page 98: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Why?

There was nothing like it, even proprietary software didn't quite fit, it was meant for rental companies.

Now it handles more than 15'000 reservations a year at ZHdK alone, we couldn't work without it.

Latest version even handles tracking software licenses. Manual process, but it's there.

Page 99: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 100: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Some mistakes

Page 101: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 1

To have non-English code

Page 102: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 103: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 104: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

What might the “show” method be called?

Page 105: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 106: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 107: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 108: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 109: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

http://localhost:3000/gegenstands/list

Page 110: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 2

To be on the bleeding edge

Page 111: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

2004

Rails logo © David Heinemeier Hansson

Page 112: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

2004

leihs

2005

Rails logo © David Heinemeier Hansson

Page 113: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

2004

leihs

2005

Photo credit:(CC) By-NC Alex Proimoshttps://www.flickr.com/photos/proimos/ Rails logo © David Heinemeier Hansson

Page 114: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

New platform Established platform0

20

40

60

80

100

Writing new featuresCatching up to your platform

Very scientific chart

Page 115: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

1.6 1.8Ruby

2.0

2.1

0.x 1.0 2.0-2.3 4.1Rails 1.2

1.9

3.0-3.2 4.2

2000 2003 2007 2013 2014

2.2

2005

2.0-2.3

2010

4.0

RubyGems 0.8.3-0.9.4 1.0.0 1.3.6 1.8.24 2.4.5

1.1.1

1.3.0

1.4.0

...

Page 116: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

1.6 1.8Ruby

2.0

2.1

0.x 1.0 2.0-2.3 4.1Rails 1.2

1.9

3.0-3.2 4.2

2000 2003 2007 2013 2014

2.2

2005

2.0-2.3

2010

4.0

RubyGems 0.8.3-0.9.4 1.0.0 1.3.6 1.8.24 2.4.5

1.1.1

1.3.0

1.4.0

...

incompatibilities between contemporary versions of things, some of which we would be supposed to support at the same time, but which isn't possible.

downgrade instructions necessary.

Page 117: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 3

Internationalization? We'll add that later!

Page 118: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 119: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

1,037 times!

Page 120: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 4

No tests

Page 121: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

t

When we got frustrated about not having tests and constantly running into regressions, we thought we'd try rspec.

Page 122: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

:(

t

Page 123: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

t

But we couldn't make it work any better than Test::Unit did, and besides, we couldn't muster the discipline. When the Rspec Story Runner came along, we got curious because that seemed like an interesting new way to write tests.

Page 124: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

t

Unfortunately, that was quite buggy at the time.

Page 125: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

Rspec andCucumber

t

The Story Runner evolved into Cucumber, which had a lot fewer bugs, so we started using that along with whatever we already had, which was in Rspec.

Page 126: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

Rspec andCucumber

:(

t

We got confused and unhappy because the distinction of which test would go where was rarely easy and we didn't have time to maintain two test suites.

Page 127: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

Rspec andCucumber

:(

Cucumber

t

So we dropped Rspec and went with only Cucumber. Also at this point, our product owner joined in with writing Cucumber scenarios. That makes it a lot more fun to write scenarios, and it makes the result of our programming more accurately reflect what the PO wanted.

Page 128: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

No tests

Rspec

No tests

:(

Rspec Story Runner

:(

Rspec andCucumber

:(

Cucumber

:|

t

Looking good, there!

Page 129: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

9 hours test execution

Page 130: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 131: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 132: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Cider CI

http://cider-ci.info/

CI system/framework for parallelizedand resilient integration testing

(not created by the ZHdKbut by our teammate Thomas Schank)

Page 133: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

:|

Page 134: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

:)

Page 135: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 5

Starting without a user interface person

Page 136: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 137: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 138: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 139: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 140: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 141: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 142: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 143: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 144: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 145: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 146: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 147: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 148: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 149: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Page 150: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

HTML5

CSS3

JavaScript

JSON

Page 151: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecord

XML

bash

Page 152: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Page 153: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Scalability

Layout

Page 154: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Layout

Page 155: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Graphicdesign

Informationarchitecture

Datavisualization

Usabilityinspection

Layout

Page 156: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Graphicdesign

Informationarchitecture

Datavisualization

Usabilityinspection

InterfacedesignDiscoverability

GIMPInkscape

Layout

Page 157: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Graphicdesign

Informationarchitecture

Datavisualization

Usabilityinspection

InterfacedesignDiscoverability

GIMPInkscape

Layout

Page 158: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Photo credit: (CC) By-NC-SA 2.0 Héctor García. https://www.flickr.com/photos/torek

Java

ERBHTML5

CSS3

JavaScript

CoffeeScript

Asset pipelineJSON

REST Ruby

ActiveRecordSQLMySQL

PostgreSQL

MSSQL

XML

HAML

Gherkin

bash

zsh

Capistrano

YAML

Ansible

Typography

Color theory

Usabilitytesting

Styleguides

Scalability

Graphicdesign

Informationarchitecture

Datavisualization

Usabilityinspection

InterfacedesignDiscoverability

GIMPInkscape

Layout

rekt

if you try to stuff all of this into one person, that person will be rekt.

Page 159: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mistake № 6

Implementingorganization-specific features

Page 160: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 161: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 162: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 163: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 164: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out
Page 165: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Enough aboutmistakes already!

:(

Page 166: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Hints andobservations

Page 167: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

BDD is hard

Create a glossary

Use boring, idiom-free, colorless language

Page 168: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Bad (but fun) BDD scenario:

When shit's all fucked upAnd there ain't no hustlas that still have the goods, yoThen holler out to all yo brothas, for real

Better (and boring) BDD scenario:

When at least one crucial configuration setting is missingAnd no inventory pool has any more items availableThen display a warning in the global warning section

Page 169: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Bad (but fun) BDD scenario:

When shit's all fucked upAnd there ain't no hustlas that still have the goods, yoThen holler out to all yo brothas, for real

Better (and boring) BDD scenario:

When at least one crucial configuration setting is missingAnd no inventory pool has any more items availableThen display a warning in the global warning section

Page 170: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Management

Make sure management understands what Free Software is. Let them give you a good product owner that understands, too.

Get authorization to spend hours working with the community.

You will spend more time developing than if you were doing this only for your own organization.

Page 171: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

If you are gov't

You are using taxpayer money to make software. Give the taxpayers the software they paid for.

Page 172: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Definitely a hint

Learn to say no.

Page 173: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Definitely a hint

Learn to say no.

(But first, have a good idea of wherethe journey goes, otherwise you're

just being a jerk.)

Page 174: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mad bullet points, yo

● Solid vision● Stable platform● Internationalization from day one● Interaction designers● Tests● Good community work● Educated management● Know when to say no

Page 175: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Mad bullet points, yo

● Solid vision● Stable platform● Internationalization from day one● Interaction designers● Tests● Good community work● Educated management● Know when to say no

= great success

Page 176: leihs, the leading free equipment booking system · Bad (but fun) BDD scenario: When shit's all fucked up And there ain't no hustlas that still have the goods, yo Then holler out

Thank you!

Zürich University of the Arts

zhdk.ch

[email protected]

leihs

github.com/zhdk/leihs