Spring Projects Infrastructure
Processes, Source Control, Builds, Community, and more!




                                                          © 2009 VMware Inc. All rights reserved
About Us


Gunnar Hillert, SpringSource, VMware
 Spring Integration
 @ghillert
 blog.springsource.org/author/ghillert/


Roy Clarkson, SpringSource, VMware
 Spring for Android, Spring Mobile
 @royclarkson
 blog.springsource.org/author/rclarkson/




                                           2
Agenda
   History
   New Tools
   Process
   Differences between projects
   Community and how you can get involved




                                             3
4
What is Spring?

   Spring AMQP           Spring Shell
   Spring for Android    Spring Social
   Spring Batch          Spring Web Flow
   Spring Data           Spring Web Services
   Spring Framework      And more …
   Spring Gemfire
   Spring Hadoop
   Spring Integration
   Spring Mobile
   Spring .NET
   Spring Roo
   Spring Security


                                                 5
6
History

 Spring Framework
 • Subversion Repository
 • Remember http://src.springframework.org/svn/spring-framework ?
 • Ant based build
 Some projects on internal Git repository (e.g. Spring Integraton)
 • http://git.springsource.org
 • Maven




                                                                      7
github.com/SpringSource
                          8
SpringSource on GitHub

   Spring Integration moved August 2011
   Spring Framework moved December 2011
   Spring Web Flow recently moved
   All major projects now on GitHub




                                           9
Benefits of GitHub

   Accessible UI built around Git
   Well known open source code repository
   Code browsing
   View history of changes, commits, and comments
   Community contributions are encouraged through Pull Requests
   Issue tracking
   Wiki pages




                                                                   10
Contributing




               11
Sign the Contributor License Agreement




 https://support.springsource.com/spring_committer_signu
 p
                                                           12
Fork the Repository

 Navigate to github.com/SpringSource/<project>
 Select the         button
 Select your local GitHub account as the destination




                                                        13
Local Development Environment

$ git clone git@github.com:<username>/<project>.git
$ cd <project>
$ git remote add upstream git@github.com:SpringSource/<project>.git
$ git fetch --all
$ git remote show
$ git branch -a




                                                                      14
Submitting a Pull Request

 Create a new topic branch based on issue number
 • $ git checkout -b <project>-123
 Complete your changes
 Push your branch to origin
 • $ git push origin <project>-123
 Select               when you are ready to submit your code to the
 project lead for review
 Please note that all pull requests must be able to be cleanly merged
 with the upstream master’s current state
 Recommended: Rebase with Master




                                                                         15
Reviewing Code via Pull Requests




                                   16
Reviewing Code via Pull Requests

   Comment on each commit or on individual lines
   Markdown supported
   Comments trigger notifications (Can address individual users)
   Pull Requests can be comprised of multiple commits
   Compare code between commits or branches



        GitHub Pull Request = Code + Issue + Code Comments



 Contributors and Committers follow same process!




                                                                    17
More Information




 Spring Framework Contributor Guidelines
 https://github.com/SpringSource/spring-framework/wiki/Contributor-guidelines
 Spring Integration Contributor Guidelines
 https://github.com/SpringSource/spring-integration/wiki/Contributor-Guidelines
 GitHub Help: Fork a Repo
 https://help.github.com/articles/fork-a-repo
 GitHub Help: Using Pull Requests
 https://help.github.com/articles/using-pull-requests




                                                                                  18
More Information




 Pro Git: Contributing to a Project
 http://git-scm.com/book/ch5-2.html
 Pro Git: Rebasing
 http://git-scm.com/book/ch3-6.html
 McCullough and Berglund on Mastering Git
 http://shop.oreilly.com/product/0636920017462.do




                                                    19
Code Reviews @ Cloud Foundry




                               20
Code Reviews using Gerrit




                            21
Code Reviews using Gerrit




   Originally developed at Google
   http://code.google.com/p/gerrit/
   Authorized Gerrit users can trigger merges
   Good for larger teams


 Recommendation: Try GitHub first, use Gerrit if needed




                                                           22
23
Gradle Hello World




task hello {
        doLast {
               println 'Hello world!'
        }
}




                                        24
Building Spring




$ git clone git://github.com/SpringSource/spring-framework.git
$ cd spring-framework
$ ./gradlew build




                                                                 25
Projects using Gradle

   Spring Framework (since Jan 2012)
   Spring Integration (since Oct 2010)
   Spring AMQP (since Jun 2012)
   Spring for Android (since May 2011)
   Spring Mobile (since Nov 2010)
   Spring Social (since Oct 2010)
   And more …




                                          26
Gradle Details

   Version 1.0 released 12-June-2012
   Version 1.1-rc-1 released 24-July-2012
   Gradle Wrapper
   Maven-like defaults
   More concise than Maven
   Scripting capabilities like Ant
   Supports multi-project builds
   Dependency management based on Apache Ivy
   Build scripts written in Groovy




                                                27
Common Gradle Tasks for Spring Projects


   clean – Deletes the build directory
   build – Assembles and tests this project
   dist – Creates Zip with Jars, Reference + Api Doc, Schema Files
   api – Generates aggregated Javadoc API documentation
   reference – Generates HTML and PDF reference documentation
   install – Install archives artifacts into local .m2 cache
   sonarAnalyze – Gather Sonar Metrics
   eclipse – Generates all Eclipse files
   idea – Generates IDEA project files




                                                                      28
Gradle IDE Support




 IntelliJ IDEA 11
  http://www.jetbrains.com/idea/webhelp/gradle-2.html
  http://confluence.jetbrains.com/display/IDEADEV/News


 SpringSource Tool Suite
  Support since 2.7.0
  Using 2.9.x works great
  Import Gradle projects directly into STS
  http://static.springsource.org/sts/docs/latest/reference/html/gradle




                                                                          29
build.springsource.org
                         30
Bamboo Features

   Continuous Integration
   Highly Configurable
   Instant Feedback
   Continuous Deployment
   Release Management
   JIRA Integration
   Plugin Support




                             31
repo.springsource.org
                        32
SpringSource Artifactory


 Replaces previous Maven
    repositories
 GA releases still available in
    Maven Central
   Unified search
   Put a watch on anything
   License information
   Transitive resolution
   Release process




                                   33
SpringSource Repository




                If you are using…
     maven.springframework.org

           You should update to…
          repo.springsource.org

                                    34
SpringSource Repository


 Local Repositories
 • libs-snapshot-local
 • libs-milestone-local
 • libs-release-local
 Virtual Repositories
 • snapshot
 • milestone
 • release
 Virtual Repositories with Third-Party Support
 • libs-snapshot
 • libs-milestone
 • libs-release


                                                  35
SpringSource Repository


<repository>
   <id>springsource-release</id>
   <name>SpringSource Release Repository</name>
   <url>http://repo.springsource.org/release</url>
</repository>

<repository>
   <id>springsource-milestone</id>
   <name>SpringSource Milestone Repository</name>
   <url>http://repo.springsource.org/milestone</url>
</repository>

<repository>
   <id>springsource-snapshot</id>
   <name>SpringSource Snapshot Repository</name>
   <url>http://repo.springsource.org/snapshot</url>
</repository>


                                                       36
More Information


 Spring Repository FAQ
 https://github.com/SpringSource/spring-framework/wiki/SpringSource-repository-
 FAQ
 Downloading Spring Artifacts
 https://github.com/SpringSource/spring-framework/wiki/Downloading-Spring-
 artifacts




                                                                                  37
sonar.springsource.org
                         38
Collecting Metrics using Sonar




                                 39
jira.springsource.org
                        40
Found a bug or miss features?

   Submit bug reports
   Request features
   Vote for issues
   Provide feedback
   Track status
   Watch issues




                                41
The Lifecycle of an Issue


 Lifecycle Phases
  Unassigned
  Waiting For Triage
  Triaged
  In Progress
  Resolved
  Closed
 More information:
 https://github.com/SpringSource/spring-framework/wiki/The-Lifecycle-of-an-Issue




                                                                                   42
Other Pieces in the Toolbox




                              43
News and Announcements


   SpringSource blog: http://blog.springsource.org
   News: http://www.springsource.org
   Twitter: http://twitter.com/springsource
   Twitter: http://twitter.com/springframework




                                                      44
Interact with the Community




 Forum: http://forum.springsource.org
 Stackoverflow: http://www.springsource.org




                                               45
Jürgenization




                46
Questions??



 Thanks!!




              47

Spring Projects Infrastructure

  • 1.
    Spring Projects Infrastructure Processes,Source Control, Builds, Community, and more! © 2009 VMware Inc. All rights reserved
  • 2.
    About Us Gunnar Hillert,SpringSource, VMware Spring Integration @ghillert blog.springsource.org/author/ghillert/ Roy Clarkson, SpringSource, VMware Spring for Android, Spring Mobile @royclarkson blog.springsource.org/author/rclarkson/ 2
  • 3.
    Agenda  History  New Tools  Process  Differences between projects  Community and how you can get involved 3
  • 4.
  • 5.
    What is Spring?  Spring AMQP  Spring Shell  Spring for Android  Spring Social  Spring Batch  Spring Web Flow  Spring Data  Spring Web Services  Spring Framework  And more …  Spring Gemfire  Spring Hadoop  Spring Integration  Spring Mobile  Spring .NET  Spring Roo  Spring Security 5
  • 6.
  • 7.
    History  Spring Framework • Subversion Repository • Remember http://src.springframework.org/svn/spring-framework ? • Ant based build  Some projects on internal Git repository (e.g. Spring Integraton) • http://git.springsource.org • Maven 7
  • 8.
  • 9.
    SpringSource on GitHub  Spring Integration moved August 2011  Spring Framework moved December 2011  Spring Web Flow recently moved  All major projects now on GitHub 9
  • 10.
    Benefits of GitHub  Accessible UI built around Git  Well known open source code repository  Code browsing  View history of changes, commits, and comments  Community contributions are encouraged through Pull Requests  Issue tracking  Wiki pages 10
  • 11.
  • 12.
    Sign the ContributorLicense Agreement https://support.springsource.com/spring_committer_signu p 12
  • 13.
    Fork the Repository Navigate to github.com/SpringSource/<project>  Select the button  Select your local GitHub account as the destination 13
  • 14.
    Local Development Environment $git clone git@github.com:<username>/<project>.git $ cd <project> $ git remote add upstream git@github.com:SpringSource/<project>.git $ git fetch --all $ git remote show $ git branch -a 14
  • 15.
    Submitting a PullRequest  Create a new topic branch based on issue number • $ git checkout -b <project>-123  Complete your changes  Push your branch to origin • $ git push origin <project>-123  Select when you are ready to submit your code to the project lead for review  Please note that all pull requests must be able to be cleanly merged with the upstream master’s current state  Recommended: Rebase with Master 15
  • 16.
    Reviewing Code viaPull Requests 16
  • 17.
    Reviewing Code viaPull Requests  Comment on each commit or on individual lines  Markdown supported  Comments trigger notifications (Can address individual users)  Pull Requests can be comprised of multiple commits  Compare code between commits or branches GitHub Pull Request = Code + Issue + Code Comments  Contributors and Committers follow same process! 17
  • 18.
    More Information  SpringFramework Contributor Guidelines https://github.com/SpringSource/spring-framework/wiki/Contributor-guidelines  Spring Integration Contributor Guidelines https://github.com/SpringSource/spring-integration/wiki/Contributor-Guidelines  GitHub Help: Fork a Repo https://help.github.com/articles/fork-a-repo  GitHub Help: Using Pull Requests https://help.github.com/articles/using-pull-requests 18
  • 19.
    More Information  ProGit: Contributing to a Project http://git-scm.com/book/ch5-2.html  Pro Git: Rebasing http://git-scm.com/book/ch3-6.html  McCullough and Berglund on Mastering Git http://shop.oreilly.com/product/0636920017462.do 19
  • 20.
    Code Reviews @Cloud Foundry 20
  • 21.
  • 22.
    Code Reviews usingGerrit  Originally developed at Google  http://code.google.com/p/gerrit/  Authorized Gerrit users can trigger merges  Good for larger teams  Recommendation: Try GitHub first, use Gerrit if needed 22
  • 23.
  • 24.
    Gradle Hello World taskhello { doLast { println 'Hello world!' } } 24
  • 25.
    Building Spring $ gitclone git://github.com/SpringSource/spring-framework.git $ cd spring-framework $ ./gradlew build 25
  • 26.
    Projects using Gradle  Spring Framework (since Jan 2012)  Spring Integration (since Oct 2010)  Spring AMQP (since Jun 2012)  Spring for Android (since May 2011)  Spring Mobile (since Nov 2010)  Spring Social (since Oct 2010)  And more … 26
  • 27.
    Gradle Details  Version 1.0 released 12-June-2012  Version 1.1-rc-1 released 24-July-2012  Gradle Wrapper  Maven-like defaults  More concise than Maven  Scripting capabilities like Ant  Supports multi-project builds  Dependency management based on Apache Ivy  Build scripts written in Groovy 27
  • 28.
    Common Gradle Tasksfor Spring Projects  clean – Deletes the build directory  build – Assembles and tests this project  dist – Creates Zip with Jars, Reference + Api Doc, Schema Files  api – Generates aggregated Javadoc API documentation  reference – Generates HTML and PDF reference documentation  install – Install archives artifacts into local .m2 cache  sonarAnalyze – Gather Sonar Metrics  eclipse – Generates all Eclipse files  idea – Generates IDEA project files 28
  • 29.
    Gradle IDE Support IntelliJ IDEA 11  http://www.jetbrains.com/idea/webhelp/gradle-2.html  http://confluence.jetbrains.com/display/IDEADEV/News  SpringSource Tool Suite  Support since 2.7.0  Using 2.9.x works great  Import Gradle projects directly into STS  http://static.springsource.org/sts/docs/latest/reference/html/gradle 29
  • 30.
  • 31.
    Bamboo Features  Continuous Integration  Highly Configurable  Instant Feedback  Continuous Deployment  Release Management  JIRA Integration  Plugin Support 31
  • 32.
  • 33.
    SpringSource Artifactory  Replacesprevious Maven repositories  GA releases still available in Maven Central  Unified search  Put a watch on anything  License information  Transitive resolution  Release process 33
  • 34.
    SpringSource Repository If you are using… maven.springframework.org You should update to… repo.springsource.org 34
  • 35.
    SpringSource Repository  LocalRepositories • libs-snapshot-local • libs-milestone-local • libs-release-local  Virtual Repositories • snapshot • milestone • release  Virtual Repositories with Third-Party Support • libs-snapshot • libs-milestone • libs-release 35
  • 36.
    SpringSource Repository <repository> <id>springsource-release</id> <name>SpringSource Release Repository</name> <url>http://repo.springsource.org/release</url> </repository> <repository> <id>springsource-milestone</id> <name>SpringSource Milestone Repository</name> <url>http://repo.springsource.org/milestone</url> </repository> <repository> <id>springsource-snapshot</id> <name>SpringSource Snapshot Repository</name> <url>http://repo.springsource.org/snapshot</url> </repository> 36
  • 37.
    More Information  SpringRepository FAQ https://github.com/SpringSource/spring-framework/wiki/SpringSource-repository- FAQ  Downloading Spring Artifacts https://github.com/SpringSource/spring-framework/wiki/Downloading-Spring- artifacts 37
  • 38.
  • 39.
  • 40.
  • 41.
    Found a bugor miss features?  Submit bug reports  Request features  Vote for issues  Provide feedback  Track status  Watch issues 41
  • 42.
    The Lifecycle ofan Issue  Lifecycle Phases  Unassigned  Waiting For Triage  Triaged  In Progress  Resolved  Closed  More information: https://github.com/SpringSource/spring-framework/wiki/The-Lifecycle-of-an-Issue 42
  • 43.
    Other Pieces inthe Toolbox 43
  • 44.
    News and Announcements  SpringSource blog: http://blog.springsource.org  News: http://www.springsource.org  Twitter: http://twitter.com/springsource  Twitter: http://twitter.com/springframework 44
  • 45.
    Interact with theCommunity  Forum: http://forum.springsource.org  Stackoverflow: http://www.springsource.org 45
  • 46.
  • 47.

Editor's Notes

  • #5 Mentioning how distributed the teams are US, across Europe, Australia