Slide 1

Slide 1 text

#ContinuousUpdating @RobertReiz

Slide 2

Slide 2 text

100 libraries per project in avg.

Slide 3

Slide 3 text

How do you keep track of your LIBRARIES?

Slide 4

Slide 4 text

How many DEPENDENCIES do you have in your project?

Slide 5

Slide 5 text

Which LICENSES are your dependencies using?

Slide 6

Slide 6 text

You don’t know ?

Slide 7

Slide 7 text

Requirements Analysis Design Coding Testing Accepting 15 years ago we used to work with the WATERFALL MODEL

Slide 8

Slide 8 text

But today we are AGILE

Slide 9

Slide 9 text

Everything the Waterfall Model used to execute in one year ...  ... we nowadays execute in 2 weeks!

Slide 10

Slide 10 text

The way we develop software today totally changed!

Slide 11

Slide 11 text

Being AGILE got us CONTINUOUS Testing CONTINUOUS Refactoring CONTINUOUS Integration CONTINUOUS Delivery

Slide 12

Slide 12 text

But what about  CONTINUOUS Updating

Slide 13

Slide 13 text

How do you update your LIBRARIES ?

Slide 14

Slide 14 text

You don’t ?

Slide 15

Slide 15 text

Because you never touch a running system, right ?

Slide 16

Slide 16 text

So you wanna work  with COBOL! Right? Enjoy!

Slide 17

Slide 17 text

If you can't fly then run, if you can't run then walk, if you can't walk then crawl, but whatever you do you have to keep moving forward. Martin Luther King Jr.

Slide 18

Slide 18 text

Core committers don’t release new versions just for fun!

Slide 19

Slide 19 text

• Bug Fixes • Security Fixes • Speed & Memory optimisation • New Features They always have good reasons

Slide 20

Slide 20 text

How do you ensure that new versions don’t break the system?

Slide 21

Slide 21 text

Semantic Versioning Migration Paths Continuous Testing

Slide 22

Slide 22 text

http://semver.org/

Slide 23

Slide 23 text

1.MAJOR version when you make incompatible API changes 2.MINOR version when you add functionality in a backwards-compatible manner 3.PATCH version when you make backwards-compatible bug fixes. MAJOR.MINOR.PATCH

Slide 24

Slide 24 text

2.0.0 2.1.0 2.1.1 2.1.2 3.0.0 Major Minor Patch Patch Major

Slide 25

Slide 25 text

Always follow the MIGRATION PATH

Slide 26

Slide 26 text

Many small steps are  better than one big step You can do SMALL MIGRATIONS on the fly.  BIG MIGRATIONS are risky and expensive. If you miss versions, you miss migration paths, too. And that leads to TROUBLE!

Slide 27

Slide 27 text

1 2 3 4 migrate migrate migrate big migration … expensive! Don’t miss migration paths! on the fly on the fly on the fly

Slide 28

Slide 28 text

Always run your TESTS against new versions

Slide 29

Slide 29 text

Another reason for being current

Slide 30

Slide 30 text

Do you really believe those young talents wanna work with COBOL?  Or other OLD SHIT?

Slide 31

Slide 31 text

Tracking versions is a pain!

Slide 32

Slide 32 text

SOFTWARE LIBRARIES are NOT like iPhone Apps!

Slide 33

Slide 33 text

100 libraries per project in avg. After 2 weeks the first libraries are OUT-DATED!

Slide 34

Slide 34 text

Developers are missing critical BUG FIXES  and important UPDATES!

Slide 35

Slide 35 text

Manually checking for updates is no fun! It cost TIME & MONEY! NOBODY WANTS TO DO IT!

Slide 36

Slide 36 text

So, how do you wanna solve this PROBLEM

Slide 37

Slide 37 text

You have to AUTOMATE

Slide 38

Slide 38 text

You need a TOOL for that!

Slide 39

Slide 39 text

GemNotifier Gemnasium VersionEye Languages Ruby Ruby, Node.JS, Python 22 Languages GitHub no yes yes Bitbucket no no yes File upload no no yes URL parsing no no yes Changelogs no yes in progress Security no yes in progress Licenses no no yes API no no yes

Slide 40

Slide 40 text

www.VersionEye.com Keeps an eye on more than 550K open source libraries! Supports 22 Languages and 10 Package Managers!

Slide 41

Slide 41 text

https://www.versioneye.com/api API

Slide 42

Slide 42 text

https://www.versioneye.com/statistics

Slide 43

Slide 43 text

https://www.versioneye.com/statistics

Slide 44

Slide 44 text

@RobertReiz Questions?