The Future of Software Development - Devin AI Innovative Approach.pdf
A software factory in a box
1. Software Factory in a Box
Marcello Teodori
JUG Milano
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
2. A few words about the speaker
- one of the JUG Leaders for JUG Milano
- moderator for SpringFramework-IT and Groovy Italian User Group mailing lists
- owner and CTO in ExcogitaNet
- owner, developer and pitcher for Git Enterprise
- now based in London, working as freelancer tech lead for various enterprises and startups
- somewhat twitterer: http://twitter.com/magomarcelo
and blogger: http://magomarcelo.blogspot.com
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
3. Let’s define a Software Factory
Once upon a time there was a little factory who was able to turn ideas into code...
...and make everyone happy!
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
4. But inside the factory truth was more often...
Like having a cat
in the waste bin...
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
5. It’s never too late to...
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
6. The state we’re in... the Joel test
Let’s assess the status of
our working environment
using the test of Joel Spolsky:
12 Steps to Better Code
(2000)
http://www.joelonsoftware.com/articles/fog0000000043.html
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
7. And the lesson we can learn is...
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
8. But trying to introduce tools can lead to some objections...
SOFTWARE
FACTORY
TOOLS ARE
EXPENSIVE
LOTS OF THEM
ARE OSS AND
ACTUALLY VERY
GOOD TOO
SETUP IS
COMPLICATED
I COULD TRY
AND INSTALL
IN A VM
WHAT ABOUT
TRAINING? WE
NEED TO DEFINE
WORKFLOWS AND
PROCEDURES
WELL...
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
9. What can we do...?
Software Factory in a Box!
- a Virtual Machine with an OSS OS (Ubuntu Server 10.04 LTS)
- built on OSS tools
- implementing a software factory
- for Maven/Java projects (mostly...)
- we can experiment best practices with
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
10. What’s inside the Software Factory in a Box...
The VM contents:
- redmine (issue tracker & wiki)
- subversion edge (scm + management tools)
- jenkins (continuous integration)
- artifactory (maven repository)
- sonar (source code reporting)
with the same identity across all systems provided by OpenLDAP (directory server)
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
11. Redmine
http://www.redmine.org/
- wiki with markdown syntax
- multi-project issue tracker
with customizable workflow
- milestone planning
- integration with subversion and many more SCM...
- notifications
- GPLv3 license, built on Ruby and Rails
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
12. Jenkins
http://jenkins-ci.org/
- possibly the most widely used OSS
continuous integration server
- can ran as job scripts, ant/maven builds
triggered on specific conditions
- integration with subversion and many more SCM...
- extensible via plugins with rich directory:
- sonar plugin
- promotion plugin
- artifactory plugin
- MIT licensed, built on Java
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
13. Subversion Edge
http://www.open.collab.net/go/csvne2_r2a/
- distribution of Subversion with tools
provided by CollabNet
- web-based repository management
- web configurable LDAP integration
- basic web permission editing
- includes ViewVC repository viewer
- AGPL licensed, built in Java
(excluding Subversion and ViewVC)
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
14. Artifactory
http://www.jfrog.com/products.php
- a generic repository manager
can host artifacts and dependencies
- built for Maven
but supporting also Ivy and Gradle
- remote REST APIs
supports publishing via POST of generic files
- cache for external repositories, pre-configured with most
used ones: (Maven Central, Codehaus, JBoss, Spring...)
- LDAP support
- LGPLv3 licensed, built on Java
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
15. Sonar
http://www.sonarsource.org/
- static code analysis and reporting
- statistics on code health
- plugin system
to support many languages beyond Java
- integrates well known tools:
FindBugs, CheckStyle, PMD, Cobertura...
- LGPL licensed, built on Java and JRuby
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
16. OpenLDAP + web management provided by Zentyal
http://www.zentyal.org/
- web interface for Small Business Server
- based on Ubuntu Server 10.04 LTS
- all the configuration is on OpenLDAP
http://www.openldap.org/
- we’re using just its user and group module
- can sync to external LDAP server
even Active Directory with password sync!
- provides self-service change password web
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
17. Let’s experiment with some best practices...
...and check if they’re fit for us! Let’s see some possible examples...
- use a wiki as project knowledge base
- slice requirement documents in issues and track them
- avoid “downloading the internet” with maven
- build project with dedicated maven repository
- one repository per project with standard trunk/tags/branches layout on subversion
- promote and release projects from the CI server
- share common project properties using a parent POM
- publish a documentation site for a project with maven
- monitor health state of source code through static analysis
- create our custom maven archetypes and publish them on artifactory
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
18. What’s next...
We can move our Software Factory in a Box
VM in the virtualized infrastructure of our
company datacenter!
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
19. What’s next too...
If we don’t want to host some of these tools...
many of them offer a cloud service version...
- DEV@cloud by CloudBees for Jenkins
- Artifactory Online by JFrog
- many more for Redmine and Subversion
...but don’t forget to manage identityacross all services!
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
20. Or yet what’s next again...
We can switch from Subversion to a more advanced SCM...
..like Git for example!
And use instead of Subversion Edge as a distribution of Git with web management
for user, repositories and permissions available as service and packaged...
http://www.gitenterprise.com
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
21. SFBOX - The Project
Some references:
- http://tinyurl.com/sfbox - the Software Factory in a Box in OVA format
(Open Virtualization Format Archive, runnable on VirtualBox, VMWare Player/
Workstation and possibly others...)
- login account with sudo privileges is: user/password
- hostname is sfbox.local published via DNS-SD
- https://github.com/mteodori/sfbox - the Software Factory in a Box project on
GitHub to collect feedback, input and share install scripts...
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
22. Q&A &... thanks!
- http://www.jugmilano.it/ - JUG Milano & endless discussions on tools and best
practices on our mailing list!
- http://www.liludori.com/ - the wonderful world of Liludori providing the pictures
in this presentation, courtesy of Mauro Gandini and Eloisa Scichilone
Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011