5. Software Library
“In computer science, a library is a collection
of implementations of behaviour, written in
terms of a language, that has a well-defined
interface by which the behaviour is invoked.”
http://en.wikipedia.org/wiki/Library_%28computing%29
Wikipedia
8. Dependency Management 1999
• Resolving transitiv dependencies by hand.
• No version tracking!
• Libraries checked in to SCM!
• Not reproducible!
• Dependency Hell!
9. Dependency Management Today
with Maven
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>2.1</version>
</dependency>
Define your dependencies in a pom.xml file
11. >mvncompile
Dependency Management
with Maven
• It downloads the dependencies.
• It resolves transitive dependencies.
• It puts the dep. into the right place.
• Reproducible.
• No need to check in dep. into SCM!
15. 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
22. Software License
“A software license is a legal
instrument governing the use or
redistribution of software.”
http://en.wikipedia.org/wiki/Software_license
Wikipedia
26. DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
30. The Normalisation Problem
The same license can be written in different ways!
• Apache License 2
• Apache License 2.0
• The Apache License, 2.0
• The Apache Software License 2.0
• ….
31. The Human Factor
Internet with millions of
open source libraries!
pull new OS library
pull new OS library
pull new OS library
Software developers download open source libraries every day and they
don’t care about licenses!
commercial
company
35. www.VersionEye.com
Keeps an eye on more than 550K open source libraries!
Supports 22 Languages and 10 Package Managers!
current status at 5th March 2015!