View Source

h4. Learning Outcomes


# Understand package management and distinguish between different practices relating to package objectives and chosen programming language.
# Carry out package management operations in order to critically appraise current packages and propose changes.
# Understand the importance of software licenses, versioning policy, and clear documentation and examples.
# Apply best practices to create a simple package suitable for long term maintenance.
# Evaluate options for managing configuration and behaviour relating to package installation, removal, upgrade and re-installation.
# Analyse opportunities for automating package management and releases, maintaining a clear focus on the user rather than the developer.
# Critically evaluate opportunities to generalise package management to allow the easy building and maintenance of packages on multiple platforms.
# Recognise and assess opportunities to apply package management techniques in your own environment.

*{_}There will be trainers and speakers from the SCAPE Project partners including the Open Planets Foundation, The British Library, and the National Library of the Netherlands._*




h4. Wednesday 26 March


h4. Day 1: Thinking Like a Package Maintainer

|| Time || Session || Learning outcomes ||
| 09:30 - 10:00 | *Registration* | |
| 10.00 - 10:20 | *Introduction and aims* \\
_Why software packaging matters_ \\
* Who will use your software?
* Making life easy for users.
* Software sustainability, can your project live without you?
* How a package maintainers perspective might help. | 1 |
| 10:20 - 11:00 | *The Advanced Packaging Tool (APT)* \\
_An introduction to APT_ \\
*   What is a package / package manager?
*   apt-get install and beyond.
*   APT repositories and sources. | 1, 2 |
| 11.00 - 11.15 | *Coffee* | |
| 11.15 - 12.30 | *Anatomy of an APT package* \\
_Looking at the internals of an APT package_
* Unpacking an APT package.
* Everything in its right place: following convention.
* Managing dependencies.
* Package hooks: update-alternatives. | 1, 2 |
| 12.30 - 13.30 | *Lunch* | |
| 13:30 - 14:30 | *Maintaining an APT Package* \\
_Creating and distributing your first package_ \\
* Packaging upstream development.
* The little details: Licensing, version numbers, changelog.
* Documentation, YES you heard me, documentation.
* When things go wrong: installation problems, using lintian. | 3, 4, 5 |
| 14:30 - 15:00 | *The Bigger Picture: Continuous Deploymen{*}{*}t* \\
_Making a software release business as usual_ \\
* Is releasing software a big deal? Only because we make it one.
* Beyond Continuous Integration to Continuous Deployment.
* Automate everything, developers should practise what they preach.
* BUT my project's too big, too complex, NO IT'S NOT.
* OR if it really is, reconsider. | 6, 7 |
| 15:00 - 15:15 | *Coffee* | |
| 15.15 - 16:30 | *Robots: For Package Maintainers* \\
_Using GitHub,Vagrant and friends to automate software releases_ \\
* Tools and services take the pain out of packaging.
* What's awkward to automate?
* Create and automated packaging and release workflow. | 4, 5 |
| 16.30 - 17.00 | *Wrap up* \\
_Summary and closing questions._ | |
| 17.00 | *Close* | |
| 20.00 | *Event dinner* | |

h4. Thursday 27 March


h4. Day 2: Behaving Like a Package Developer

|| Time || Session || Learning outcomes ||
| 09.15 - 09.30 | *Welcome back* \\
_Overview of agenda for the day_ | |
| | *Invited talk: My experience with Jpylyzer* | |
| 09:30 - 09:50 | *The Bigger Picture: DevOps* \\
_Software development and IT operations in harmony_ \\
* An introduction to DevOps.
* Develop using the platform and tools of your choice.
* Test and deploy on the platform chosen by IT Ops.
* Opportunities for collaboration. | 6 |
| 09.50 - 11.15 | *Robots: For Developers* \\
_Automating the development workflow_ \\
* Starting your project as you mean to go on.
* Ingredients for a personalised automated workflow.
* Python projects.
* C/C+\+ projects.
* Java projects.
* Version numbers and changelogs.
* Packaging development snapshots. | 6, 7 |
| 11.15 - 11.30 | *Coffee* | |
| 11.30 - 12.30 | *Going Public* \\
_Using public, free infrastructure_ \\
* Sharing your test and deployment environment.
* Using Travis-CI, a public Continuous Integration service.
* An introduction to BinTray for software releases. | 7, 8 |
| 12.30 - 13.45 | *Lunch* | |
| 13.45 - 15.00 | *Packaging for Other Platforms* \\
_Applying these principles to other OSs_ \\
* Translating to RPM, exe, etc.
* Alien for quick creation of RPM from an APT package.
* Using Vagrant to create real packages for other distros.
* A look at the Open Build Service for cross distro packaging.
* Support of Mac and Windows users. | 7, 8 |
| 15.00 - 15.15 | *Coffee* | |
| 15.15 - 16.30 | *Open Session* \\
_Build your own package._ | 8 |
| 16.00 - 16.30 | *Wrap up* \\
_Questions, discussion and event evaluation_ | |
| 16.30 | *Close* | |

Register at: [https://scape-preserving-tools.eventbrite.co.uk]