Open Source Jumpstart Tooling Up Intro

1,048 views

Published on

Following on from the Open Source Jumpstart in April we are running the first event in a series designed to introduce the most common Open Source tools encountered as a professional developer at work or when contributing to OSS projects. The series will show how the concepts taught at University in computing science and software engineering modules can be applied effectively with Open Source tools and help establish a highly agile approach to the whole software development cycle.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,048
On SlideShare
0
From Embeds
0
Number of Embeds
112
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Open Source Jumpstart Tooling Up Intro

  1. 1. Open Source Jumpstart: Tooling up ©LeanAgileMachine   Creative Commons License
  2. 2. ©LeanAgileMachine   Creative Commons License
  3. 3. Contents ● Goal of Open Source Jumpstart series ● Open source software (OSS) overview  ● Common development environment ● OSS tools overview ● How OSS tools support agile practices ● Eclipse ”live” demo ©LeanAgileMachine   Creative Commons License
  4. 4. Goals of OS Jumpstart ● Bridge the gap between academia and industry ● Introduce open source software (OSS) concept ● Highlight significance of OSS  ● Show how OSS tools support the agile process ● Introduce the commonly used OSS tools in  industry for development and testing ©LeanAgileMachine   Creative Commons License
  5. 5. The Modern Developer ● The role of a developer has changed radically ● They need to be extremely flexible ● They work on increasingly complex systems ● Requirements change at the drop of a hat  ©LeanAgileMachine   Creative Commons License
  6. 6. Gap between study  and industry ● University can only teach you so much ● Good placements help but are not easy to find ● Build on what you know ● Learn what happens in industry ● Build your skill set beyond your peers ● Experience practical application of skills on projects ● Make you CV more interesting to employers  ● Increase your earning potential ©LeanAgileMachine   Creative Commons License
  7. 7. Do you use OSS ? Raise your hand if you already use OSS ? ©LeanAgileMachine   Creative Commons License
  8. 8. Some popular OSS examples ©LeanAgileMachine   Creative Commons License
  9. 9. What is Open Source ● A licence model to distribute software ● http://en.wikipedia.org/wiki/Comparison_of_free_software_licenses ● Openness and freedom within software ● A open, collaborative and agile approach to  development ● A move away from  low value commercial  and/or restrictive software ©LeanAgileMachine   Creative Commons License
  10. 10. Why use Open Source ??      ● Its freely available – download it and try it out ● You can see how it works under the hood ● You can improve / extend how it works ● Communities to help you get things done ● OSS tools very common in industry ● Used extensively in agile companies  ● Latest technology often OSS ● Scala, Clojure, BDD tools, NoSQL, etc ©LeanAgileMachine   Creative Commons License
  11. 11. Is it really free? ● Copyright still applies ● Licence included in source code distribution ● Variety of licences ● GPL / LGPL – require giving back ● Apache License – commercial friendly ● Creative Commons – other creative works ● Community help given freely ● Commercial support available for big projects ©LeanAgileMachine   Creative Commons License
  12. 12. My company will provide...    ● Companies tend not to give you everything ● Fill in the gaps with OSS ● Cost savings on commondity things mean more  spending on high value stuff / training ● Many commercial products use OSS ● IBM, Microsoft, Oracle, Google,  ©LeanAgileMachine   Creative Commons License
  13. 13. So what's out there in  OSS land? ● Operating Systems ● Android, Ubuntu, Debian, Fedora, SuSe, etc ● Productivity suites ● Open Office, Inkscape, Gimp, OpenShot, Audacity,  blender, etc... ● Development languages ● Java, Scala, Clojure, C, C++, Python, Perl, PhP, etc ● Development and testing tools... ©LeanAgileMachine   Creative Commons License
  14. 14. OSS development and  testing tools ©LeanAgileMachine   Creative Commons License
  15. 15. A Basic Development  Environment ©LeanAgileMachine   Creative Commons License
  16. 16. End to end Development  & Test Environment ● Build Management ● Development ● Version control ● IDE / Editor ● Build managment ● Unit testing ● Continuous Integration ● Acceptance testing ● Deployment ● Issue / bug tracking ● Application testing ● Collaborative / Cloud  ● Functional workspaces ● Load / Performance ©LeanAgileMachine   Creative Commons License
  17. 17. Version Control ● Version all changes to the code  ● Snapshots of known code state CVS ● Identify release code bases Subversion ● Gives audit trail of changes Git ● Experiment with code in branches ● Rollback to a known state in code Mercurial ● Collective ownership of code ● Access open source project code ©LeanAgileMachine   Creative Commons License
  18. 18. Build Tools ● Build Automation ● Compile, test and deploy code  Ant.apache.org with simple commands ● Consistent build tasks ant.apache.org/ivy ● Manage dependant activties Maven.apache.org ● eg. run tests when compiling ● Library dependancy  Comparison of tools: management http://ant.apache.org/ivy/ m2comparison.html ● Call external tools / apps ©LeanAgileMachine   Creative Commons License
  19. 19. Integrated Development  Environments ● Manage large / multiple projects ● Debugger  ● Autocompletion (code api completion)                   ● Refactoring                  .org ● Build management Ant / Maven – compile, test, deploy                 .org ● ● Integration ● Application servers, databases, unit testing,  Scm, bug tracker, CI server, IntelliJ IDEA  jetbrains.org ©LeanAgileMachine   Creative Commons License
  20. 20. Unit Testing ● Unit testing foremost a design process ● Identify responsibilities and behavior ● Define success at class level ● Test framework for your Java classes ● Tests and test suites ● Supports test driven development (TDD) ● Write a failing test, write code to make it pass ● Run tests when compiling ● Contiually check code changes  ● Reduce bugs entering the code base ©LeanAgileMachine   Creative Commons License
  21. 21. Acceptance Testing ● Extends Test Driven Development ● Greater user focus ● Looser coupled testing Fitnesse.org ● Using the language of the business ● Thinking about the user interaction ● Knowing when you are done! ● Behaviour driven development Cuke4Duke EasyB ● a Lean thinking approach ©LeanAgileMachine   Creative Commons License
  22. 22. BDD Feature Example ©LeanAgileMachine   Creative Commons License
  23. 23. Continuous Integration ● Regularly runs unit / acceptance tests, compile  code, integration scripts, application tests, etc ● Triggered at intervals or on source code commits ● Builds all or part of code base  ● Helps with regular releases / agile practices Hudson­ci.org ● Know if your build will work for your showcase ● Early and continual feedback system ● Identifys chages that breaks the build ● Often used with large display / Lava lamp Continuum ● Code metrics and project health reports ©LeanAgileMachine   Creative Commons License
  24. 24. Issue / Bug Tracking ● Manage workload backlog ● Features, stories, etc Bugzilla ● Manage bugs Jira ● Linked to scm code check­in ● Show progress to non­technical  stakeholders ● Extend with Scrum or Kanban  board approach ©LeanAgileMachine   Creative Commons License
  25. 25. Collaborative workspace ● Capture important knowledge  and communication Mediawiki ● Limit need for over­bearing docs Liferay ● Discussion boards ● Wiki pages ● Coding standard documents ● Discuss issues ● Useful for disparate teams ©LeanAgileMachine   Creative Commons License
  26. 26. Summary ©LeanAgileMachine   Creative Commons License
  27. 27. Summary of OSS tools ● End to end tool support ● Helps your carrer  ● Tools incorporated into  prospects modern ide's ● Work on OSS  ● Tools can be used to give  projects continuous feedback on  your progress ● Access to new  technology and  ● Help you become more  techniques agile ©LeanAgileMachine   Creative Commons License
  28. 28. Eclipse Live Demo Version control demo using  Subversion, Eclipse  and the Subclipse plug­in by Ben Evans ©LeanAgileMachine   Creative Commons License
  29. 29. Jumpstart Summary ● OSS tools help create  ● Lots more to learn  an agile environment about each tool ● OSS tools are widely  ● Follow up sessions  used in industry discuss each tool  ● Knowing these kind of  area in detail tools help you get  ● Lots of tutorials and  interesting jobs books to help ©LeanAgileMachine   Creative Commons License
  30. 30. LJC Unconference 2 ● Saturday 26th June 2010 – 9.30am  ● Great opportunity to hear from people in industry ● Find out more about OSS tools, new things in Java,  Functional programming, agile practices, acceptance testing  and lots lots more... ● Discuss your ideas and problems ● Practice your presentation skills by giving a talk ● Gain confidence for presenting to a team / manager ● Register at London Java Community Meetup site ● Book on­line at SkillsMatter.com ©LeanAgileMachine   Creative Commons License
  31. 31. We want your feedback ©LeanAgileMachine   Creative Commons License
  32. 32. Open Source references ● Wikipedia: Open source software ● http://en.wikipedia.org/wiki/Open_source_software ● The Cathederal and the Bazaar ● http://en.wikipedia.org/wiki/The_Cathedral_and_the_Bazaar ● Free Software Foundation ©LeanAgileMachine   Creative Commons License
  33. 33. More OSS References ● News ● Slashdot.org ● TheServerSide.com ● Software sources  ● Freshmeat.net ● Sourceforge.net ● osalt.com – oss alternatives to commercial software ● jr0cket.com – JVM & OSS solutions ©LeanAgileMachine   Creative Commons License
  34. 34. Meet with Companies  looking for interns Talk to experienced  developers & testers Ask questions about  what you learnt tonight The Crown Tavern, 43 Clerkenwell Green Islington – Old SkillsMatter Pub  ©LeanAgileMachine   Creative Commons License

×