package management for champions
DESCRIPTION
Vortrag in der Symfony2 User Group Köln vom 16.07.2014. Welche Rolle spielt das Paket-Management für den Software-Entwicklungsprozess? Welche Dinge sollte man als Paket-Maintainer bewusst entscheiden und planen? In diesem Talk haben wir die Erfahrungen, Probleme und gelernten Lektionen aus knapp drei Jahren mit Composer vorgestellt.TRANSCRIPT
![Page 1: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/1.jpg)
Paketmanagementfür Champions ;-)
Matthias Pigulla – webfactory GmbH –
16.07.2014
![Page 2: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/2.jpg)
-(Foto wf)
Gestatten: webfactory.
![Page 3: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/3.jpg)
War stories
![Page 4: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/4.jpg)
wfLibSystemweite (eigene) Bibliothek im include_path
Bugs/BC breaks machen viel auf einmal kaputt
Was einmal drin ist, können wir nur noch schwer
ändern.
PEAR_DB vs. Zend_DB
Branches in Sync?
![Page 5: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/5.jpg)
Composer to the rescue!Schrittweiser Umbau in Pakete
Composer-Repo selbstgeschrieben in 11/2011
Es geht schnell und leicht, für irgendwas ein Paket anzulegen.
Dank .lock-File können wir gut weiterentwickeln.
![Page 6: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/6.jpg)
![Page 7: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/7.jpg)
BasicsGanz wichtig.
![Page 8: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/8.jpg)
Ceci n‘est pas un paquet.
![Page 9: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/9.jpg)
Wiederverwendung!= Ctrl-C, Ctrl-V
![Page 10: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/10.jpg)
Release Reuse Equivalence Principle
The granule of reuse is the granule
of release. Only components that are
released through a tracking system
can be effectively reused. This
granule is the package.
Robert C. Martin: Granularity (1997)
http://www.objectmentor.com/resources/articles/granularity.pdf
![Page 11: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/11.jpg)
Was ist die Schnittstelle
(m)eines Pakets?
![Page 12: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/12.jpg)
Schnittstellen-Dokumentation
Upgrading-NotesChangelogExtension pointscomposer.json, ...
![Page 13: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/13.jpg)
Versionsnummern
Normal-wichtig.
![Page 14: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/14.jpg)
Semantical Versioning
semver.org
Fun fact: Zwei von drei Teilnehmern der Online-Umfrage habennoch nie davon gehört.
![Page 15: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/15.jpg)
X.Y.ZMajor.Minor.Bugfix
![Page 16: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/16.jpg)
Beseitigt ein Problem, ohne dass dafür Änderungen am eigenen Code notwendig sind.
Bugfix
![Page 17: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/17.jpg)
Geiler Scheiß, den andere bestimmt auch gerne hätten.
Feature
![Page 18: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/18.jpg)
Neue oder strengere Abhängigkeiten.
Feature.Feature?Feature!
![Page 19: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/19.jpg)
Alles, was Änderungen an existierendem Code erforderlich macht.
Schlechte Idee.
![Page 20: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/20.jpg)
~X.Y
![Page 21: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/21.jpg)
Release-Policy
So mittel-wichtig.
![Page 22: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/22.jpg)
Welche Major/Minor pflegenwir noch?
![Page 23: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/23.jpg)
Wann bringe ich eine neue Version?
Sofort, regelmäßig, beim Launch, wenn es sich lohnt...?
![Page 24: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/24.jpg)
Prinzipien des Paketdesigns
Interessant.
![Page 25: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/25.jpg)
Aller guten Dinge sind drei.
![Page 26: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/26.jpg)
Common Reuse Principle
The classes in a package are reused
together. If you reuse one of the
classes in a package, you reuse
them all.
Robert C. Martin: Granularity (1997)http://www.objectmentor.com/resources/articles/granularity.pdf
![Page 27: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/27.jpg)
![Page 28: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/28.jpg)
![Page 29: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/29.jpg)
Common Closure Principle
The classes in a package should be
closed together against the same
kinds of changes. A change that
affects a package affects all classes
in that package.
Robert C. Martin: Granularity (1997)
http://www.objectmentor.com/resources/articles/granularity.pdf
![Page 30: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/30.jpg)
![Page 31: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/31.jpg)
Stable Dependencies Principle
The dependencies between packages
in a design should be in the direction of
the stability of the packages. A
package should only depend upon
packages that are more stable than it
is.
Robert C. Martin: Stability(1997)
http://www.objectmentor.com/resources/articles/stability.pdf
![Page 32: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/32.jpg)
Stability
Schwer zu ändern
Wenig Anlass für Änderungen
![Page 33: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/33.jpg)
Wann sollte das Design erfolgen?
![Page 34: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/34.jpg)
Tools rund um Composer
Praktisch.
![Page 35: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/35.jpg)
clue/graph-composergithub.com/clue/graph-composer
![Page 36: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/36.jpg)
Satis
github.com/composer/satis
![Page 37: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/37.jpg)
Toran Proxy
toranproxy.com(kommerziell)
![Page 38: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/38.jpg)
track.wf Follow @webfactory
![Page 39: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/39.jpg)
Depending
„Depending is an online tool to
monitor your PHP project
dependencies. It shows your project
dependencies status, right away
after you're commiting new code
into your Github repository.“
– depending.in
![Page 40: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/40.jpg)
Security Advisories Checker
security.sensiolabs.org/check
![Page 41: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/41.jpg)
„Gemnasium parses your projects
dependencies and notifies you when
new versions are released or need
to updated.“
– gemnasium.com
![Page 42: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/42.jpg)
Kopfschmerzen, weil...1. Schnittstelle aus Versehen
geändert2. Schnittstelle absichtlich geändert3. SemVer falsch angewendet4. Zu wenig Planung und bewusstes
Paketdesign
TL;DR
![Page 43: Package management for champions](https://reader033.vdocuments.us/reader033/viewer/2022051513/54747d19b4af9f980a8b5670/html5/thumbnails/43.jpg)
Danke!Dipl. Wirt. Inf. Matthias Pigulla
webfactory GmbH, Bonn
[email protected]@mpdude_degithub.com/mpdude
webfactory.de/blog