Itch Scratching is the basis of all Open Source development. But how do you start? What is the process to get from having done NOTHING to releasing a massive and complete library?
This talk goes through the steps that I went through to develop the Ruby Mail Gem
15. Why not just fix TMail?
Released 10 patch and minor versions
16. Why not just fix TMail?
Released 10 patch and minor versions
I wrote over 600 lines of Docs
17. Why not just fix TMail?
Released 10 patch and minor versions
I wrote over 600 lines of Docs
Built on a Strategy Pattern
18. Why not just fix TMail?
Released 10 patch and minor versions
I wrote over 600 lines of Docs
Built on a Strategy Pattern
Parser Written in C
19. Why not just fix TMail?
Released 10 patch and minor versions
I wrote over 600 lines of Docs
Built on a Strategy Pattern
Parser Written in C
HARD TO FOLLOW
21. Why not just fix TMail?
TMail was not very modular and hard to maintain
22. Why not just fix TMail?
TMail was not very modular and hard to maintain
Wanted to write a major library
23. Why not just fix TMail?
TMail was not very modular and hard to maintain
Wanted to write a major library
How hard could email be?
24. Why not just fix TMail?
TMail was not very modular and hard to maintain
Wanted to write a major library
How hard could email be?
I wanted a nice DSL
25. Why not just fix TMail?
TMail was not very modular and hard to maintain
Wanted to write a major library
How hard could email be?
I wanted a nice DSL
Not as fun
81. But What About Real Life?
Mail parses the Enron and Trec Data Sets
82. But What About Real Life?
Mail parses the Enron and Trec Data Sets
mikel@baci ~/Code
$ du -hs corpus/
2.4G of Emails
83. But What About Real Life?
Mail parses the Enron and Trec Data Sets
mikel@baci ~/Code
$ du -hs corpus/
2.4G of Emails
mikel@baci ~/Code
$ find corpus -name "*" -print | wc -l
328,248 Emails
92. show me the model!
Message Body
Header FieldList
93. show me the model!
Message Body
Header FieldList Fields
94. show me the model!
Message Body
Header FieldList Fields
StructuredField
Content-Type
Content-Transfer-Encoding
To, From, Cc, Bcc, Reply-To
95. show me the model!
Message Body
Header FieldList Fields
StructuredField UnstructuredField
Content-Type Subject
Content-Transfer-Encoding X-Headers et al
To, From, Cc, Bcc, Reply-To Any other unparsable field
130. Deprecated API
Decapitation Free Zone
Did not nuke the old API
131. Deprecated API
Decapitation Free Zone
Did not nuke the old API
New API triggers ONLY if you call “mail”
132. Deprecated API
Decapitation Free Zone
Did not nuke the old API
New API triggers ONLY if you call “mail”
Old API in place if no “mail” call
133. Deprecated API
Decapitation Free Zone
Did not nuke the old API
New API triggers ONLY if you call “mail”
Old API in place if no “mail” call
Will be Removed in 3.1