Ruby Can Haz                         EVERYONE!                                   Mikel Lindsaar                           ...
Working in Rails & Ruby for 5+ Years    Author of Mail, maintain TMail    Rails Committer    Entrepreneur    http://stilla...
Example of StillAlive.com                          Full stack production                        monitoring for your appFri...
Ruby Wants YouFriday, 22 April 2011Ruby needs developers like you to get in there and make cool stuffRuby is an inclusive ...
MINSWAN                        Matz is nice, so we are niceFriday, 22 April 2011Reason why ruby is greatRuby is a beautifu...
Scratch Your Own ItchFriday, 22 April 2011You don’t need to ask permissionFind a problem and solve itJust do itI have no s...
How do I start?                                      Patch a library                                     Write a libraryFr...
Patch a LibraryFriday, 22 April 2011I took over maintenance of TMail, Created website, Released 10 patch and minor version...
6 Steps to Patch                                 Fork on GitHub                                      Clone                ...
ForkFriday, 22 April 2011
ForkFriday, 22 April 2011
CloneFriday, 22 April 2011Run the testsCode should have info on how to run the testsIf not, write it! That is your first co...
CloneFriday, 22 April 2011Run the testsCode should have info on how to run the testsIf not, write it! That is your first co...
Write a Failing Test CaseFriday, 22 April 2011If it passes, it is already fixed
Write a Failing Test CaseFriday, 22 April 2011If it passes, it is already fixed
Fix the CodeFriday, 22 April 2011If it passes, it is already fixed
Fix the CodeFriday, 22 April 2011If it passes, it is already fixed
Run the tests                                 Multiple Rubies?                        Make it greener than you startedFrid...
Push to your fork                            Detailed commit message                        Don’t push changes to the vers...
Send a Pull RequestFriday, 22 April 2011Put detailed notes in the pull request
Send a Pull RequestFriday, 22 April 2011Put detailed notes in the pull request
ProfitFriday, 22 April 2011Put detailed notes in the pull requestProfit!
Write a LibraryFriday, 22 April 2011Not hard to doKey things to keep in mind
README Driven DevFriday, 22 April 2011
README Driven DevFriday, 22 April 2011
README Driven Dev                                 tom.preston-werner.com                         Google “README Driven Dev...
Write your Wish ListFriday, 22 April 2011
Write your Wish ListFriday, 22 April 2011
Friday, 22 April 2011
Friday, 22 April 2011
Research as NeededFriday, 22 April 2011Do you really need to write this thing? Can you fix an existing library?
Research as Needed                                         RFCsFriday, 22 April 2011Go find the information you need!
Research as Needed                                         RFCsFriday, 22 April 2011Go find the information you need!
Setup Your Gem                        Read http://docs.rubygems.org/read/book/7                           Create a simple ...
Simple Gem Creation                              You don’t need no tools                          http://github.com/rubyx/...
More on Nugget                             http://github.com/rubyx/nugget                        Need to do lots of things...
Nugget File StructureFriday, 22 April 2011Creates all the basic nessecitiesNote, there is a CHANGELOGAnd a LICENSE
Nugget Patches Wanted                        http://github.com/rubyx/nugget                               Add test unit su...
Test First Development                        I use RSpec because I am lazy and forget stuff                              ...
Testing for Libraries                                   Start Simple                          Comments in Spec Files are O...
Start SomewhereFriday, 22 April 2011
Start SomewhereFriday, 22 April 2011
Start SimpleFriday, 22 April 2011
Start SimpleFriday, 22 April 2011
Comments are OKFriday, 22 April 2011
Comments are OKFriday, 22 April 2011
Use Custom Matchers                               when appropriateFriday, 22 April 2011
Use Custom Matchers                               when appropriateFriday, 22 April 2011
Use Custom Matchers                               when appropriateFriday, 22 April 2011
Use Custom Matchers                               when appropriateFriday, 22 April 2011
Break Down Spec FilesFriday, 22 April 2011
Break Down Spec Files                                  26 Sub Directories                                  79 Ruby Spec Fi...
Spec in Multiple Rubies                        Have to be a good Ruby Citizen                               MRI - 1.8.7, 1...
Devil is in the DetailFriday, 22 April 2011
Devil is in the Detail                               And Thats It!                               Simple Hey?Friday, 22 Apr...
Devil is in the Detail           Header Errors                     Legacy Emails      Parsers     rfc822      Delivery Age...
Listen to your UsersFriday, 22 April 2011Users will tell you what they wantBut what they want and what they need are often...
Listen to your Users                                   (but not blindly)Friday, 22 April 2011Users will tell you what they...
Listen to your Users                                   (but not blindly)Friday, 22 April 2011Users will tell you what they...
Have Good SpecsFriday, 22 April 2011Have good test coverage is a life saverYou might take a 4 month breakHave to be able t...
Encourage Participation                                     MIT License                           Clear “How to Test” Inst...
Release OftenFriday, 22 April 2011Someone sends you a pull request, more than one line, pull it and release a version bump...
Questions?                                                   Mikel Lindsaar                                               ...
Friday, 22 April 2011
Upcoming SlideShare
Loading in...5
×

Ruby can haz Everyone

1,184

Published on

Talk about how to get involved in the ruby community and start patching and writing gems

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,184
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ruby can haz Everyone

  1. 1. Ruby Can Haz EVERYONE! Mikel Lindsaar @raasdnilFriday, 22 April 2011It’s an honourMatz and Iankeynote along side of Dave, Gregg and Tom.Incredible time to be a ruby devThis talk is a bit more technical than most keynotes
  2. 2. Working in Rails & Ruby for 5+ Years Author of Mail, maintain TMail Rails Committer Entrepreneur http://stillalive.com/ http://rubyx.com/Friday, 22 April 2011ActionMailer rewrite
  3. 3. Example of StillAlive.com Full stack production monitoring for your appFriday, 22 April 2011
  4. 4. Ruby Wants YouFriday, 22 April 2011Ruby needs developers like you to get in there and make cool stuffRuby is an inclusive club. Not members onlyWe need you to help make us greatAnyone can helpYou can help
  5. 5. MINSWAN Matz is nice, so we are niceFriday, 22 April 2011Reason why ruby is greatRuby is a beautiful and fun language to write inMailing lists are incredible to get supportIRC is there for your helpAwesome books and tutorials and blogs everywhere
  6. 6. Scratch Your Own ItchFriday, 22 April 2011You don’t need to ask permissionFind a problem and solve itJust do itI have no serious CS ExperienceI was not born specialI just had a problem with email in ruby and fixed it.
  7. 7. How do I start? Patch a library Write a libraryFriday, 22 April 2011Patch a library, or write a library, simple!Patching is a great way to learnDocumentation patchesNot just ruby core or rails coreWrite a library, more effort, but just takes work
  8. 8. Patch a LibraryFriday, 22 April 2011I took over maintenance of TMail, Created website, Released 10 patch and minor versionsI wrote over 600 lines of Docs.Docs great way to startCan just patch one small part,Github makes this really easy with pull requestsWrite your tests first!Authors LOVE YOU
  9. 9. 6 Steps to Patch Fork on GitHub Clone Write a failing test case Run the tests { Fix the code } Push to your fork Send a pull requestFriday, 22 April 2011Used to be a lot more complex
  10. 10. ForkFriday, 22 April 2011
  11. 11. ForkFriday, 22 April 2011
  12. 12. CloneFriday, 22 April 2011Run the testsCode should have info on how to run the testsIf not, write it! That is your first commit!
  13. 13. CloneFriday, 22 April 2011Run the testsCode should have info on how to run the testsIf not, write it! That is your first commit!
  14. 14. Write a Failing Test CaseFriday, 22 April 2011If it passes, it is already fixed
  15. 15. Write a Failing Test CaseFriday, 22 April 2011If it passes, it is already fixed
  16. 16. Fix the CodeFriday, 22 April 2011If it passes, it is already fixed
  17. 17. Fix the CodeFriday, 22 April 2011If it passes, it is already fixed
  18. 18. Run the tests Multiple Rubies? Make it greener than you startedFriday, 22 April 2011Check, does the library support multiple rubies?Use RVM
  19. 19. Push to your fork Detailed commit message Don’t push changes to the versionFriday, 22 April 2011If it passes, it is already fixedOn fix per pull
  20. 20. Send a Pull RequestFriday, 22 April 2011Put detailed notes in the pull request
  21. 21. Send a Pull RequestFriday, 22 April 2011Put detailed notes in the pull request
  22. 22. ProfitFriday, 22 April 2011Put detailed notes in the pull requestProfit!
  23. 23. Write a LibraryFriday, 22 April 2011Not hard to doKey things to keep in mind
  24. 24. README Driven DevFriday, 22 April 2011
  25. 25. README Driven DevFriday, 22 April 2011
  26. 26. README Driven Dev tom.preston-werner.com Google “README Driven Development” 2010/08/23/readme-driven-development.htmlFriday, 22 April 2011
  27. 27. Write your Wish ListFriday, 22 April 2011
  28. 28. Write your Wish ListFriday, 22 April 2011
  29. 29. Friday, 22 April 2011
  30. 30. Friday, 22 April 2011
  31. 31. Research as NeededFriday, 22 April 2011Do you really need to write this thing? Can you fix an existing library?
  32. 32. Research as Needed RFCsFriday, 22 April 2011Go find the information you need!
  33. 33. Research as Needed RFCsFriday, 22 April 2011Go find the information you need!
  34. 34. Setup Your Gem Read http://docs.rubygems.org/read/book/7 Create a simple directory structure Get your tests failingFriday, 22 April 2011Great basic introduction to setting up a gemDon’t worry about hoe, jeweler and the like, gemspecs are not hardUse a simple directory structure to begin
  35. 35. Simple Gem Creation You don’t need no tools http://github.com/rubyx/nugget Builds a gem skeleton with ruby $ ruby -s <(curl -s https://github.com/rubyx/nugget/raw/master/install.rb)Friday, 22 April 2011You can use NuggetWorks on windows as well
  36. 36. More on Nugget http://github.com/rubyx/nugget Need to do lots of things to get started Lowers barrier to entry to release a gem 5 minutes => Nothing to published on rubygemsFriday, 22 April 2011Great basic introduction to setting up a gemDon’t worry about hoe, jeweler and the like, gemspecs are not hardUse a simple directory structure to beginWorks on windows as well
  37. 37. Nugget File StructureFriday, 22 April 2011Creates all the basic nessecitiesNote, there is a CHANGELOGAnd a LICENSE
  38. 38. Nugget Patches Wanted http://github.com/rubyx/nugget Add test unit support Rails gem support? Make it a gemFriday, 22 April 2011Was literally built in about 2 hours.Sure to miss something critical :)
  39. 39. Test First Development I use RSpec because I am lazy and forget stuff EVERYTHING in Mail is BDD Regressions Caught Seriously - do itFriday, 22 April 2011
  40. 40. Testing for Libraries Start Simple Comments in Spec Files are OK Use Custom Matchers Break Down Your Spec Files Spec in Multiple RubiesFriday, 22 April 2011
  41. 41. Start SomewhereFriday, 22 April 2011
  42. 42. Start SomewhereFriday, 22 April 2011
  43. 43. Start SimpleFriday, 22 April 2011
  44. 44. Start SimpleFriday, 22 April 2011
  45. 45. Comments are OKFriday, 22 April 2011
  46. 46. Comments are OKFriday, 22 April 2011
  47. 47. Use Custom Matchers when appropriateFriday, 22 April 2011
  48. 48. Use Custom Matchers when appropriateFriday, 22 April 2011
  49. 49. Use Custom Matchers when appropriateFriday, 22 April 2011
  50. 50. Use Custom Matchers when appropriateFriday, 22 April 2011
  51. 51. Break Down Spec FilesFriday, 22 April 2011
  52. 52. Break Down Spec Files 26 Sub Directories 79 Ruby Spec Files 73 Edge Case Emails Many Many Lines of Specs 1,289 examples No Failures :)Friday, 22 April 2011
  53. 53. Spec in Multiple Rubies Have to be a good Ruby Citizen MRI - 1.8.7, 1.9.2 JRuby REE RubiniusFriday, 22 April 2011
  54. 54. Devil is in the DetailFriday, 22 April 2011
  55. 55. Devil is in the Detail And Thats It! Simple Hey?Friday, 22 April 2011
  56. 56. Devil is in the Detail Header Errors Legacy Emails Parsers rfc822 Delivery Agents And Thats It! SMTP Body Decoding SPAM PGP Signing POP3 File Types Mbox Simple Hey? Network IMAP Language SupportSendmail Delivery Bad Emails Encoding Edge Cases Pattern Matching OMGMIME! Decoding Attachments Interceptors File IO Domain Key Emails Observers Status Reports Inline AttachmentsFriday, 22 April 2011
  57. 57. Listen to your UsersFriday, 22 April 2011Users will tell you what they wantBut what they want and what they need are often differentBe opinionated
  58. 58. Listen to your Users (but not blindly)Friday, 22 April 2011Users will tell you what they wantBut what they want and what they need are often differentBe opinionated
  59. 59. Listen to your Users (but not blindly)Friday, 22 April 2011Users will tell you what they wantBut what they want and what they need are often differentBe opinionated
  60. 60. Have Good SpecsFriday, 22 April 2011Have good test coverage is a life saverYou might take a 4 month breakHave to be able to let other people code
  61. 61. Encourage Participation MIT License Clear “How to Test” Instructions Clear “How to Contribute” Instructions Modular Design Mail has 53 contributorsFriday, 22 April 2011Someone sends you a pull request, more than one line, pull it and release a version bumpEncourages participationValidates people
  62. 62. Release OftenFriday, 22 April 2011Someone sends you a pull request, more than one line, pull it and release a version bumpEncourages participationValidates people
  63. 63. Questions? Mikel Lindsaar @raasdnil RubyX.com StillAlive.com We are hiring! I can fix thiz: http://netherregionoftheearthii.blogspot.com/2010_04_18_archive.html Video Cat: http://www.coolfunnycats.com/?p=1954 Repair Cat: http://www.mike2.com/category/animals/cats/page/4/ All Other Cats: http://icanhascheezburger.com/Friday, 22 April 2011
  64. 64. Friday, 22 April 2011
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×