1 / 18

Hands On Open Source Development

Hands On Open Source Development. Dr. Mark Pollack Sr. Staff Engineer: SpringSource. Introductions…. Who is this guy? Who are you? All about SpringSource and the Spring Framework Project Goal: Build open source software Using ‘modern’ development processes and tools Why should you care?.

cathal
Download Presentation

Hands On Open Source Development

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Hands On Open Source Development Dr. Mark Pollack Sr. Staff Engineer: SpringSource

  2. Introductions… • Who is this guy? • Who are you? • All about SpringSource and the Spring Framework • Project Goal: Build open source software • Using ‘modern’ development processes and tools • Why should you care?

  3. Projects to develop • Portable “Blob” storage API • Data access library for the open source database CouchDB

  4. Blob project • “Cloud” data storage is where many individuals and companies store data. • Your personal family pictures • Internal audit trail logs • Several public providers of this fully managed service • Amazon S3 • OpenStack • Microsoft Azure • Host your own service on your own infrastrucutre. • Eucalyptus • Riak • 10,000 ft project goals • API ease of use for common cases • API portability

  5. Data Access library for CouchDB • What is CouchDB • Part of a new ‘wave’ of non-relational databases • Open source Apache project • Considered a ‘document’ database. Data is stored as a JSON document • HTTP/REST requests to interact with the database • “GET” – get a document • “PUT - put a new document • “DELETE” - delete a document • … • Query is done by creating ‘views’ on the document • Specifically using “Map/Reduce” framework in JavaScript • 10,000 ft. project goals • Provide full Java API for all HTTP requests • Simplify the storage of Java objects in the database • Simplify querying the database for common cases

  6. Development Philosophy • Follow agile development principals • Adherence to core OO design principals • Decoupling, encapsulation, orthogonality • Unit/Integration tests • Rapid feedback on the impact of my own changes • Continuous integration • Rapid feedback on the impact of everyone else’s changes • Iterations/Sprints/Intervals… • “Stakeholder” feedback on the impact of changes

  7. Traditional and Agile software development approaches • Traditional • Assumes change is avoidable • Manage change by sufficient pre-planning and design to avoid change • Big design up front • Agile • Assumes change is inevitable and unavoidable • Assumes impossible (or impractical) to plan-around change • Ties to manage change by ensuring the software remainds flexible enough or respond to change • Ensures that sufficient tooling, process and methods are in place to allow response to change within the context of an incredibly tight feedback loop

  8. Key Practice : Version control • Manages the source code across the team • Mark known points in time for releases • We will also integrate source control with bug tracking • Version control is a requirement for Continuous Integration • Will use subversion for version control • Central repository model • You may have to handle merges when there are simultaneous changes to the same lines of code. • Will be hosted at SpringSource • Will use “Fisheye” to browse code on the web • See https://fisheye.springsource.org/browse

  9. Key Practice: Continuous Integration • Automated way to enable us to rapidly respond to change while continuing to have working software. • Software that constantly checks out code and does the following • Compiles code • Run unit/integration tests • Run code metrics (optional) • Deploy (optional) And notifies you on failure… • We will use CI product “Bamboo” • Setup for you already. See http://build.springsource.org/ • Just need to check email for notification

  10. Key Practice: Unit/Integration Testing • Developers write tests to ensure software behave as expected • May test an individual class in isolation (unit testing) or larger parts of the system collaborating together (integration testing) • Both are important • Regression harness • Feedback on code changes • Allows code to be changed/refactored quickly, easily, and safely in response to change in requirement, architecture, etc. • The quicker you find a bug, the cheaper it is to fix it • To follow this practice need to select a testing framework • We will use JUnit inside Eclipse

  11. Key Practice: Bug, Issue, Project Tracking • Manage project goals for components, versions, timelines • “Issues” are entered into the system for new features • Estimates made when to complete stories • “Bugs” entered to report bugs • In practice used to drive much of the reporting and status of the project • We will use JIRA • See https://jira.springsource.org/secure/Dashboard.jspa

  12. Product documentation • Many ways to provide this, SpringSource has generally settled on DocBook • XML schema defines book content. e.g. chapter, paragraph, etc. • XMLMind is a graphic semi WYSIWIG editor

  13. General flow • Discuss/teach tools/process at each meeting • We will have a planning session at the beginning of each meeting • We will make goals, decide what’s required to achieve those goals, and the goals need to be measurable • We will also talk about how well we did, what we could have done better, and what to do for the next iteration- retrospective • We will also need to figure out the feasibility and estimate the time it will take to complete iterations • During iterations, if we have questions contact Mark via the mailing list. • 2 week iterations so iterations cycle=meeting cycle

  14. Resources • “Big Picture” agile overview • Agile Samuari – some free chapters (on estimation) • Code Leader: Using People, Tools, and Processes to Build Successful Software • Agile Estimating and Planning – Mike Cohn • Agile Software Development, Principle, Patterns, and Practices – Bob Martin • http://www.agilefirestarter.com/ Free conference material (pdfs) • https://github.com/agilefire/November2010 (power poit) • Eclipse 3.6 or SpringSource Tool Suite 2.5.2 • http://eclipsetutorial.sourceforge.net/totalbeginnerlessons.html (videos!) • JUnit • www.junit.org (note: JUnit is already integrated into eclipse) • http://www.vogella.de/articles/JUnit/article.html • http://pragprog.com/titles/utj/pragmatic-unit-testing-in-java-with-junit (book)

  15. Resources • Subversion • http://subversion.tigris.org/ • Tortoise SVN - http://tortoisesvn.tigris.org/ • http://subclipse.tigris.org/ eclipse add-in • http://svnbook.red-bean.com (free book) • Pragmatic Version Control using Subversion (book) • DocBook • http://www.docbook.org/ • http://www.xmlmind.com/xmleditor/ • JIRA • See videos/docs on http://www.atlassian.com/software/jira/ • Continuous Integration (“Bamboo”) • See videos on http://www.atlassian.com/software/bamboo/ • Continuous Delivery (book)

  16. Resources • CouchDB • http://couchdb.apache.org/ • http://guide.couchdb.org/ (free book) • Amazon S3 • http://aws.amazon.com/s3/ • http://docs.amazonwebservices.com/AmazonS3/latest/gsg/ • http://www.sitepoint.com/books/cloud1/ book • Before, many out of date and difficult to read books on AWS/S3 out there…

  17. Resources • Spring Framework • http://en.wikipedia.org/wiki/Spring_Framework • http://www.springsource.org/documentation • Spring in Action V3 (book) • Spring RestTemplate • http://blog.springsource.com/2009/03/27/rest-in-spring-3-resttemplate/ • Reference Manual • RESTful Web Services (book)

  18. Fun for the weekend • Read the chapter on estimation in the Agile Samurai • http://media.pragprog.com/titles/jtrap/estimate.pdf • Take a look at CouchDB/Amazon S3 • With an eye to see which project you want to develop. If you are not familiar with Java/Eclipse/JUnit already start a bit with the following • Download latest Eclipse or SpringSource Tool Suite and get familiar with the environment • Follow the JUnit tutorial

More Related