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!