SlideShare a Scribd company logo
1 of 22
Download to read offline
Software Factory in a Box
   Marcello Teodori
   JUG Milano

                               Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
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
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
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
It’s never too late to...




                                                  Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
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
And the lesson we can learn is...




                                                          Marcello Teodori - marcello.teodori@gmail.com – JUG Milano
sabato 5 marzo 2011
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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

More Related Content

Similar to A software factory in a box

JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015Codemotion
 
JavaScript Power Tools 2015
JavaScript Power Tools 2015JavaScript Power Tools 2015
JavaScript Power Tools 2015Marcello Teodori
 
Flowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDBFlowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDBFlowdock
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoDaniele Vistalli
 
Symony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkSymony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkRyan Weaver
 
IzPack - fOSSa 2009
IzPack - fOSSa 2009IzPack - fOSSa 2009
IzPack - fOSSa 2009julien.ponge
 
Metasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning TreeMetasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning TreeE Hacking
 
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualPaolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualDeft Association
 
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualPaolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualSandro Rossetti
 
Pareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaPareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaWey Wey Web
 
Building The Open Ntf Dev Playground
Building The Open Ntf Dev PlaygroundBuilding The Open Ntf Dev Playground
Building The Open Ntf Dev PlaygroundFactor-y S.r.l.
 
01 Metasploit kung fu introduction
01 Metasploit kung fu introduction01 Metasploit kung fu introduction
01 Metasploit kung fu introductionMostafa Abdel-sallam
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Molieremfrancis
 
Joomla: 10 years of progress (jd15fr)
Joomla: 10 years of progress (jd15fr)Joomla: 10 years of progress (jd15fr)
Joomla: 10 years of progress (jd15fr)Peter Martin
 
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...Lorenzo Maiorfi
 
DevOps in a Cloud Native World
DevOps in a Cloud Native WorldDevOps in a Cloud Native World
DevOps in a Cloud Native WorldMichael Ducy
 

Similar to A software factory in a box (20)

JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
JavaScript Power Tools 2015 - Marcello Teodori - Codemotion Rome 2015
 
JavaScript Power Tools 2015
JavaScript Power Tools 2015JavaScript Power Tools 2015
JavaScript Power Tools 2015
 
Spring Roo Internals Javaday IV
Spring Roo Internals Javaday IVSpring Roo Internals Javaday IV
Spring Roo Internals Javaday IV
 
Flowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDBFlowdock's full-text search with MongoDB
Flowdock's full-text search with MongoDB
 
Introducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM DominoIntroducing CrossWorlds for IBM Domino
Introducing CrossWorlds for IBM Domino
 
Symony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP FrameworkSymony2 A Next Generation PHP Framework
Symony2 A Next Generation PHP Framework
 
IzPack - fOSSa 2009
IzPack - fOSSa 2009IzPack - fOSSa 2009
IzPack - fOSSa 2009
 
Metasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning TreeMetasploit - The Exploit Learning Tree
Metasploit - The Exploit Learning Tree
 
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualPaolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
 
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 ManualPaolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
Paolo Dal Checco, Alessandro Rossetti, Stefano Fratepietro - DEFT 7 Manual
 
Fedora Modularity
Fedora ModularityFedora Modularity
Fedora Modularity
 
Metasploit
MetasploitMetasploit
Metasploit
 
Pareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo CollinaPareto will tell you to stop using your ORM - Mateo Collina
Pareto will tell you to stop using your ORM - Mateo Collina
 
Breaking the monolith
Breaking the monolithBreaking the monolith
Breaking the monolith
 
Building The Open Ntf Dev Playground
Building The Open Ntf Dev PlaygroundBuilding The Open Ntf Dev Playground
Building The Open Ntf Dev Playground
 
01 Metasploit kung fu introduction
01 Metasploit kung fu introduction01 Metasploit kung fu introduction
01 Metasploit kung fu introduction
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
 
Joomla: 10 years of progress (jd15fr)
Joomla: 10 years of progress (jd15fr)Joomla: 10 years of progress (jd15fr)
Joomla: 10 years of progress (jd15fr)
 
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
Codemotion 2013 Madrid - Modern OOP embedded development with .NET Micro Fram...
 
DevOps in a Cloud Native World
DevOps in a Cloud Native WorldDevOps in a Cloud Native World
DevOps in a Cloud Native World
 

More from Silvio Gulizia

Il blog come strumento di storytelling ed emancipazione
Il blog come strumento di storytelling ed emancipazioneIl blog come strumento di storytelling ed emancipazione
Il blog come strumento di storytelling ed emancipazioneSilvio Gulizia
 
iProduttivo - app e metodi per vivere e lavorare meglio con iPhone e iPad
iProduttivo - app e metodi per vivere e lavorare meglio con iPhone e iPadiProduttivo - app e metodi per vivere e lavorare meglio con iPhone e iPad
iProduttivo - app e metodi per vivere e lavorare meglio con iPhone e iPadSilvio Gulizia
 
Le startup dell'informazione - come cambierà il nostro modo di informarci
Le startup dell'informazione - come cambierà il nostro modo di informarciLe startup dell'informazione - come cambierà il nostro modo di informarci
Le startup dell'informazione - come cambierà il nostro modo di informarciSilvio Gulizia
 
360by360 competition 2014
360by360 competition 2014360by360 competition 2014
360by360 competition 2014Silvio Gulizia
 
Slides convegno iban 2014
Slides convegno iban 2014Slides convegno iban 2014
Slides convegno iban 2014Silvio Gulizia
 
The iPhoneography movement - history and trends
The iPhoneography movement - history and trendsThe iPhoneography movement - history and trends
The iPhoneography movement - history and trendsSilvio Gulizia
 
Startup PR: how to pitch your startup to the world
Startup PR: how to pitch your startup to the worldStartup PR: how to pitch your startup to the world
Startup PR: how to pitch your startup to the worldSilvio Gulizia
 
Analisi informazione online_italia_2011
Analisi informazione online_italia_2011Analisi informazione online_italia_2011
Analisi informazione online_italia_2011Silvio Gulizia
 
u-book Guida rapida a Ubuntu 11.04 Natty Narwhal
u-book Guida rapida a Ubuntu 11.04 Natty Narwhalu-book Guida rapida a Ubuntu 11.04 Natty Narwhal
u-book Guida rapida a Ubuntu 11.04 Natty NarwhalSilvio Gulizia
 

More from Silvio Gulizia (11)

Il blog come strumento di storytelling ed emancipazione
Il blog come strumento di storytelling ed emancipazioneIl blog come strumento di storytelling ed emancipazione
Il blog come strumento di storytelling ed emancipazione
 
iProduttivo - app e metodi per vivere e lavorare meglio con iPhone e iPad
iProduttivo - app e metodi per vivere e lavorare meglio con iPhone e iPadiProduttivo - app e metodi per vivere e lavorare meglio con iPhone e iPad
iProduttivo - app e metodi per vivere e lavorare meglio con iPhone e iPad
 
Le startup dell'informazione - come cambierà il nostro modo di informarci
Le startup dell'informazione - come cambierà il nostro modo di informarciLe startup dell'informazione - come cambierà il nostro modo di informarci
Le startup dell'informazione - come cambierà il nostro modo di informarci
 
360by360 competition 2014
360by360 competition 2014360by360 competition 2014
360by360 competition 2014
 
Slides convegno iban 2014
Slides convegno iban 2014Slides convegno iban 2014
Slides convegno iban 2014
 
The iPhoneography movement - history and trends
The iPhoneography movement - history and trendsThe iPhoneography movement - history and trends
The iPhoneography movement - history and trends
 
Startup PR: how to pitch your startup to the world
Startup PR: how to pitch your startup to the worldStartup PR: how to pitch your startup to the world
Startup PR: how to pitch your startup to the world
 
Emozionarsiconlarte
EmozionarsiconlarteEmozionarsiconlarte
Emozionarsiconlarte
 
Domino
DominoDomino
Domino
 
Analisi informazione online_italia_2011
Analisi informazione online_italia_2011Analisi informazione online_italia_2011
Analisi informazione online_italia_2011
 
u-book Guida rapida a Ubuntu 11.04 Natty Narwhal
u-book Guida rapida a Ubuntu 11.04 Natty Narwhalu-book Guida rapida a Ubuntu 11.04 Natty Narwhal
u-book Guida rapida a Ubuntu 11.04 Natty Narwhal
 

Recently uploaded

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 

Recently uploaded (20)

Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 

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