+ All Categories
Home > Internet > Package management for champions

Package management for champions

Date post: 22-Nov-2014
Category:
Upload: webfactory-gmbh
View: 65 times
Download: 1 times
Share this document with a friend
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.
43
Paketmanagement für Champions ;-) Matthias Pigulla – webfactory GmbH – 16.07.2014
Transcript
Page 1: Package management for champions

Paketmanagementfür Champions ;-)

Matthias Pigulla – webfactory GmbH –

16.07.2014

Page 2: Package management for champions

-(Foto wf)

Gestatten: webfactory.

Page 3: Package management for champions

War stories

Page 4: Package management for champions

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

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
Page 7: Package management for champions

BasicsGanz wichtig.

Page 8: Package management for champions

Ceci n‘est pas un paquet.

Page 9: Package management for champions

Wiederverwendung!= Ctrl-C, Ctrl-V

Page 10: Package management for champions

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

Was ist die Schnittstelle

(m)eines Pakets?

Page 12: Package management for champions

Schnittstellen-Dokumentation

Upgrading-NotesChangelogExtension pointscomposer.json, ...

Page 13: Package management for champions

Versionsnummern

Normal-wichtig.

Page 14: Package management for champions

Semantical Versioning

semver.org

Fun fact: Zwei von drei Teilnehmern der Online-Umfrage habennoch nie davon gehört.

Page 15: Package management for champions

X.Y.ZMajor.Minor.Bugfix

Page 16: Package management for champions

Beseitigt ein Problem, ohne dass dafür Änderungen am eigenen Code notwendig sind.

Bugfix

Page 17: Package management for champions

Geiler Scheiß, den andere bestimmt auch gerne hätten.

Feature

Page 18: Package management for champions

Neue oder strengere Abhängigkeiten.

Feature.Feature?Feature!

Page 19: Package management for champions

Alles, was Änderungen an existierendem Code erforderlich macht.

Schlechte Idee.

Page 20: Package management for champions

~X.Y

Page 21: Package management for champions

Release-Policy

So mittel-wichtig.

Page 22: Package management for champions

Welche Major/Minor pflegenwir noch?

Page 23: Package management for champions

Wann bringe ich eine neue Version?

Sofort, regelmäßig, beim Launch, wenn es sich lohnt...?

Page 24: Package management for champions

Prinzipien des Paketdesigns

Interessant.

Page 25: Package management for champions

Aller guten Dinge sind drei.

Page 26: Package management for champions

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
Page 28: Package management for champions
Page 29: Package management for champions

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
Page 31: Package management for champions

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

Stability

Schwer zu ändern

Wenig Anlass für Änderungen

Page 33: Package management for champions

Wann sollte das Design erfolgen?

Page 34: Package management for champions

Tools rund um Composer

Praktisch.

Page 35: Package management for champions

clue/graph-composergithub.com/clue/graph-composer

Page 36: Package management for champions

Satis

github.com/composer/satis

Page 37: Package management for champions

Toran Proxy

toranproxy.com(kommerziell)

Page 38: Package management for champions

track.wf Follow @webfactory

Page 39: Package management for champions

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

Security Advisories Checker

security.sensiolabs.org/check

Page 41: Package management for champions

„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

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

Danke!Dipl. Wirt. Inf. Matthias Pigulla

webfactory GmbH, Bonn

[email protected]@mpdude_degithub.com/mpdude

webfactory.de/blog


Recommended