Slide 1

Slide 1 text

www.easybib.com [email protected] Using & Extending Composer Your daily life with Composer

Slide 2

Slide 2 text

www.easybib.com [email protected] Till I’m Till Klampäckel

Slide 3

Slide 3 text

www.easybib.com [email protected] Till Good to meet you.

Slide 4

Slide 4 text

www.easybib.com [email protected] Find me online @klimpong
 http://github.com/till
 http://till.klampaeckel.de/


Slide 5

Slide 5 text

www.easybib.com [email protected] Till 15 years of experience

Slide 6

Slide 6 text

www.easybib.com [email protected] ImagineEasy Solutions LLC An information literacy company.

Slide 7

Slide 7 text

www.easybib.com [email protected] Information Literacy •avoid plagiarism •evaluate sources

Slide 8

Slide 8 text

www.easybib.com [email protected] EasyBib.com EasyBib is an citation management platform. 40 million students use EasyBib every year. Over 1000 institutions subscribe, including 100 large US universities and 900 high schools and districts.

Slide 9

Slide 9 text

www.easybib.com [email protected] ResearchReady.com ResearchReady teaches information literacy skills in a core curriculum. Universities and districts subscribe to give their students a research skill boost. Launched in January 2013.

Slide 10

Slide 10 text

www.easybib.com [email protected] Stack •PHP (5.3 & 5.4, on the way to 5.5) •Nginx + Linux •AWS (OpsWorks, RDS, ElasticCache) •Solr, ElasticSearch •CouchDB / BigCouch •Travis-CI, PHPUnit, Behat •Vagrant, Chef, Virtualbox, Packer

Slide 11

Slide 11 text

www.easybib.com [email protected] Commercial break Some rights reserved by claire.whitehouse http://www.flickr.com/photos/citysnidget/ SOUNDS GOOD?
 WE’RE HIRING! [email protected]

Slide 12

Slide 12 text

www.easybib.com [email protected] Composer We embrace it.

Slide 13

Slide 13 text

www.easybib.com [email protected] Composer Dependency management

Slide 14

Slide 14 text

www.easybib.com [email protected] Composer Dependency resolution

Slide 15

Slide 15 text

www.easybib.com [email protected] Composer Semantic Versioning


Slide 16

Slide 16 text

www.easybib.com [email protected] Composer Major.Minor.Bugfix
 1.0.1

Slide 17

Slide 17 text

www.easybib.com [email protected] Composer http://semver.org/

Slide 18

Slide 18 text

www.easybib.com [email protected] Composer Your first package

Slide 19

Slide 19 text

www.easybib.com [email protected] Composoring your code {
 “name”: “till/secret-sauce”,
 “license”: “MIT”
 }

Slide 20

Slide 20 text

www.easybib.com [email protected] Next step Publish code. —

Slide 21

Slide 21 text

www.easybib.com [email protected] Packagist •register on packagist.org •submit your package •setup the service-hook
 (Github)

Slide 22

Slide 22 text

www.easybib.com [email protected] Ship it!

Slide 23

Slide 23 text

www.easybib.com [email protected] Shipping it • `git tag -a 1.0.0 -m “this is my rock-solid 1.0.0”`
 `git push --tags` • `svn cp trunk tags/1.0.0`

Slide 24

Slide 24 text

www.easybib.com [email protected] Consuming {
 “name”: “fabpot/awesome”,
 “require”: {
 “till/secret-sauce”: “~1.0”
 }
 }

Slide 25

Slide 25 text

www.easybib.com [email protected] Consuming {
 “name”: “fabpot/awesome”,
 “repositories”: [
 {
 “type”:”package”,
 “package”: {
 “name”: “sensio/legacy-code”,
 “version”: “3.2.4”,
 “dist”: {
 “url”: “http://dev.local/secret.zip”,
 “type”: “zip”
 }
 }
 }
 ],
 “require”: {
 “sensio/legacy-code”: “3.2.4”,
 “till/secret-sauce”: “~1.0”
 }
 }

Slide 26

Slide 26 text

ACHTUNG, ACHTUNG.

Slide 27

Slide 27 text

www.easybib.com [email protected] Repositories • Repositories are not inherited. • Put open source code on packagist, or get satis.

Slide 28

Slide 28 text

www.easybib.com [email protected] Consuming • There are a lot, lot more options. • Check http://getcomposer.org/

Slide 29

Slide 29 text

www.easybib.com [email protected] Installing cd awesome-application
 curl -sS http://getcomposer.org/installer |php
 ./composer.phar install

Slide 30

Slide 30 text

www.easybib.com [email protected] What else? • Update your dependencies. • Search for dependencies. • Development dependencies. • Classmap and PSR-0 autoloaders. • “help”

Slide 31

Slide 31 text

Breath.

Slide 32

Slide 32 text

www.easybib.com [email protected] One more thing Do you know composer’s global command?

Slide 33

Slide 33 text

www.easybib.com [email protected] Go PEAR! Go global! •$COMPOSER_HOME/composer.json •./composer.phar global install

Slide 34

Slide 34 text

www.easybib.com [email protected] Satis Your own private packagist.org.

Slide 35

Slide 35 text

Because what could go wrong?

Slide 36

Slide 36 text

www.easybib.com [email protected] Things that will go wrong • Github is down. • Packagist is down. • Internet is slow. • Internet doesn’t work. • Tags get deleted. (cc fabpot :)

Slide 37

Slide 37 text

Own your availability!

Slide 38

Slide 38 text

www.easybib.com [email protected] Captain Obvious Your proprietary code is private.

Slide 39

Slide 39 text

www.easybib.com [email protected] Setup ./composer.phar \
 create-project \
 composer/satis \
 --stability=dev \
 --prefer-dist

Slide 40

Slide 40 text

www.easybib.com [email protected] satis.json {
 "name": "Till's satis",
 "homepage": "http://satis.local",
 "require-all": true,
 "repositories": [
 {"packagist": false},
 {
 "type":"vcs",
 "url":"http://github.com/fabpot/symfony"
 }
 ]
 }

Slide 41

Slide 41 text

www.easybib.com [email protected] Build ./bin/satis build ./satis.json public php -S 0.0.0.0:80 -t public

Slide 42

Slide 42 text

www.easybib.com [email protected] Build

Slide 43

Slide 43 text

www.easybib.com [email protected] Go back {
 “name”: “fabpot/awesome”,
 “repositories”: [
 {
 “type”:”composer”,
 “url”: “http://satis.local”
 }
 ],
 “require”: {
 “sensio/legacy-code”: “3.2.4”,
 “till/secret-sauce”: “~1.0”
 }
 }

Slide 44

Slide 44 text

www.easybib.com [email protected] Next steps • fork code — e.g. to a local backup server • generate your own downloads • configure Amazon S3 as a backend

Slide 45

Slide 45 text

www.easybib.com [email protected] Next steps http://www.flickr.com/photos/mightymightymatze/

Slide 46

Slide 46 text

Want even more?

Slide 47

Slide 47 text

www.easybib.com [email protected] Extending Composer Or, bending Composer to your will.

Slide 48

Slide 48 text

www.easybib.com [email protected] Plugins

Slide 49

Slide 49 text

www.easybib.com [email protected] Composer installer

Slide 50

Slide 50 text

www.easybib.com [email protected] Composer installer Install jQuery, bootstrap, etc.! https://github.com/RobLoach/component-installer

Slide 51

Slide 51 text

www.easybib.com [email protected] Composer installer • aura • ezPublish • flow/typo3 • fuel • magento • wordpress • yii

Slide 52

Slide 52 text

www.easybib.com [email protected] Event-Plugins

Slide 53

Slide 53 text

www.easybib.com [email protected] Plugin Events COMMAND
 https://github.com/easybiblabs/composer-newrelic


Slide 54

Slide 54 text

www.easybib.com [email protected] Plugin Events PRE_FILE_DOWNLOAD
 https://github.com/naderman/composer-aws


Slide 55

Slide 55 text

We’re almost done!

Slide 56

Slide 56 text

Lessons learned.

Slide 57

Slide 57 text

www.easybib.com [email protected] Deploying with Composer is hard

Slide 58

Slide 58 text

www.easybib.com [email protected] Github is down more
 often than you think

Slide 59

Slide 59 text

www.easybib.com [email protected] Github is not down as often as you think :)

Slide 60

Slide 60 text

www.easybib.com [email protected] API limits suck

Slide 61

Slide 61 text

www.easybib.com [email protected] Composer wants your RAM

Slide 62

Slide 62 text

www.easybib.com [email protected] ~/.composer/config.json

Slide 63

Slide 63 text

www.easybib.com [email protected] Always “composer validate”

Slide 64

Slide 64 text

www.easybib.com [email protected] Always check in the “composer.phar”

Slide 65

Slide 65 text

www.easybib.com [email protected] Versioning is hard

Slide 66

Slide 66 text

www.easybib.com [email protected] Dependency resolution

Slide 67

Slide 67 text

www.easybib.com [email protected] “composer update” broke my app

Slide 68

Slide 68 text

www.easybib.com [email protected] #1 contender for merge conflicts: The composer.lock

Slide 69

Slide 69 text

www.easybib.com [email protected] Thanks! Questions?