×
Copy
Open
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
the art of package design in PHP
Slide 2
Slide 2 text
/usr/bin/whoami @tmmx
Slide 3
Slide 3 text
No content
Slide 4
Slide 4 text
Idea
Slide 5
Slide 5 text
“I want to create a new library!” Why?
Slide 6
Slide 6 text
searching for ideas
Slide 7
Slide 7 text
research current state
Slide 8
Slide 8 text
pain points
Slide 9
Slide 9 text
rule of three
Slide 10
Slide 10 text
finishing your tasks solving problems
Slide 11
Slide 11 text
“There are only two hard things in Computer Science: cache invalidation and naming things.” Phil Karlton
Slide 12
Slide 12 text
Code
Slide 13
Slide 13 text
project repository
Slide 14
Slide 14 text
GitHub, BitBucket, Gitlab...
Slide 15
Slide 15 text
...self hosting?
Slide 16
Slide 16 text
SourceForge PHPClasses
Slide 17
Slide 17 text
composer.json
Slide 18
Slide 18 text
supported PHP versions
Slide 19
Slide 19 text
dependencies
Slide 20
Slide 20 text
roave/security-advisories
Slide 21
Slide 21 text
depend in the direction of stability
Slide 22
Slide 22 text
PSR-0 vs PSR-4
Slide 23
Slide 23 text
consistent coding style
Slide 24
Slide 24 text
framework agnostic
Slide 25
Slide 25 text
now comes the best part
Slide 26
Slide 26 text
CODE CODE CODE CODE CODE code code code code code Code Code Code Code Code CODE code
Slide 27
Slide 27 text
Continuous Integration
Slide 28
Slide 28 text
because you have tests, right?
Slide 29
Slide 29 text
RIGHT?
Slide 30
Slide 30 text
license
Slide 31
Slide 31 text
to GPL, or not to GPL?
Slide 32
Slide 32 text
MIT, BSD, Apache, MPL, WTFPL
Slide 33
Slide 33 text
do not use Creative Commons
Slide 34
Slide 34 text
versioning scheme
Slide 35
Slide 35 text
SemVer major.minor.patch
Slide 36
Slide 36 text
breaking news! changes
Slide 37
Slide 37 text
tagging releases
Slide 38
Slide 38 text
README.md
Slide 39
Slide 39 text
Release
Slide 40
Slide 40 text
register package
Slide 41
Slide 41 text
Composer Packagist Satis
Slide 42
Slide 42 text
Final touch
Slide 43
Slide 43 text
CHANGELOG.md
Slide 44
Slide 44 text
.gitattributes
Slide 45
Slide 45 text
.gitignore
Slide 46
Slide 46 text
SensioLabs Insight Scrutinizer CI Nitpick CI …
Slide 47
Slide 47 text
Community
Slide 48
Slide 48 text
documentation
Slide 49
Slide 49 text
CONTRIBUTING.md
Slide 50
Slide 50 text
Summary
Slide 51
Slide 51 text
my condolences, you’re now the maintainer of an open source project!
Slide 52
Slide 52 text
Images https://www.flickr.com/photos/davidedamico/15030329393 (city bg) https://www.flickr.com/photos/skyseeker/14404947216 (lightning) Resources: http://www.phptherightway.com http://phppackagechecklist.com http://semver.org https://blog.codinghorror.com/rule-of-three http://martinfowler.com/bliki/TwoHardThings.html https://en.wikipedia.org/wiki/Software_versioning https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licenses https://gist.github.com/jashkenas/cbd2b088e20279ae2c8e https://leanpub.com/principles-of-package-design https://www.sitepoint.com/starting-new-php-package-right-way https://runcommand.io/2016/06/26/my-condolences-youre-now-the-maintainer-of-a-popular-open-source-project http://www.slideshare.net/matthiasnoback/principles-of-php-package-design-for-amsterdamphp http://raphaelstolt.blogspot.com/2016/09/anatomy-of-dope-php-package-repository.html
Slide 53
Slide 53 text
Questions?
Slide 54
Slide 54 text
Thanks! @tmmx