Slide 1

Slide 1 text

Building Open Source libraries @bfaludi @wunderlist @microsoft

Slide 2

Slide 2 text

Bence Faludi → Data & Applied Scientist at Microsoft → Lives in Berlin, Germany → Building data pipelines, data infrastructure → Open source addict → Working on Wunderlist, a multi platform to-do application

Slide 3

Slide 3 text

Wunderlist

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Disclaimer All opinions shared are my own.

Slide 6

Slide 6 text

Most of the available OS packages are not ready to use

Slide 7

Slide 7 text

Common problems → Lack of documentation or missing examples. → Not installable via pip and easy_install. → Wrong or missing license. → Dependency hell. → Not tested or minimal test coverage. → Not working on every Python version.

Slide 8

Slide 8 text

How to build an Open Source library?

Slide 9

Slide 9 text

Do not implement something that already exists

Slide 10

Slide 10 text

Never create or import a package for basic functionality

Slide 11

Slide 11 text

Do not mix the two previous problems

Slide 12

Slide 12 text

Build something that matters

Slide 13

Slide 13 text

Make it useable → Add a short overview of the package. → Write examples how to use it. → Add a license, probably MIT. → Make unit tests at least 80% coverage. → Use Travis to make it reliable. → Publish into pypi.

Slide 14

Slide 14 text

OS package ⇢ ! ⇢ Production

Slide 15

Slide 15 text

Use the trash → Remove basic function dependencies and write them yourself! → Version and dependency update can be terrifying so use as less dependency as humanly possible. → Remove snippets of code with different license terms.

Slide 16

Slide 16 text

Support all version Python 2.x ⇢ Python 3.x pypy ⇢ pypy3 ...

Slide 17

Slide 17 text

Make it production ready → Do not change the API. → Support legacy and new versions. → Increase the version after every modification. → Use as less dependency as possible and check the code/community activity. → Split huge packages into smaller packages. → Freeze small & not changing sub-packages!

Slide 18

Slide 18 text

Split into smaller packages → Similar to micro services. → Lot of disposable components. → Easier to maintain and reuse. → Testable separately. → Freeze the not changing parts. → Make sure that it's not a basic function!

Slide 19

Slide 19 text

Maintain your library

Slide 20

Slide 20 text

GLHF

Slide 21

Slide 21 text

Thank you for your attention! @bfaludi