.TL Software Project Revival .AU .ft R .sp 0.4i .ps 11 markus schnalke .LP .S "What this talk is about .LP \& .sp 3.5 .ce Experiences from my current effort of reviving masqmail .S "What is masqmail? .LP A small Mail Transfer Agent (MTA) .LP Covers a niche: .I non-permanent online links .I multiple routes for sending and relaying .LP Especially suited for notebooks, workstations, and home servers .LP Free Software (GPL-2+) .S "Masqmail in numbers .LP 10k lines of C code (uses glib) .LP Written between 1999 and 2002 .LP 1 main developer (Oliver Kurth) .LP 5\(en10 people with larger contributions .LP 53 releases (one every 3 weeks) .S "Start of my involvement .LP I used masqmail (since 2007) .LP It was orphaned (since 2006) .LP Wanted to take care (needs time) .LP Chance: Diploma Thesis .LP .sp 2 Do take such chances! .P "The diploma thesis .S "Diploma thesis .LP 5 months .LP Covers: The current state of masqmail and what it takes to make it modern again .LP No code written .LP Just theoretical research (with the practice in mind) .S "Becoming the new maintainer .LP Who is the original author? .LP How to contact him? (Old email addresses) .LP Debian MIA .LP Telephone calls: don't forget time shifts .S "Telling the world .LP Announcement mail to 40 addresses I found related to masqmail (old mailing list, docs, debian/changelog) .LP Received reply from 10 .LP Received valuable information from 5 .LP 2 subscribed to the new mailing list .LP .sp 2 Remember: .I Development stopped 6 years ago .I The project was orphaned 3 years ago .S "Acquiring knowledge .LP Reading docs (and mailing list archive, changelog, ...) .LP Books on related software (sendmail, postfix, exim, qmail) .LP Reading code! (10k SLOC) .S "Code reading .LP vim (#,gd,gf), grep, and call graphs .LP No ctags used, but would probably have been worthwhile .S "Emotions .LP Hype and depression .LP The wish to rewrite from scratch .P "The year afterwards .S "2009 .LP Wanted to work on masqmail but couldn't get it on .LP ``No time'' .LP More interesting alternatives .LP Busy in studying .LP .sp Retrospective: Needed some distance .P "Now .S "Individual project at university .LP Needed a practical project for my studies .LP Idea: Add the practical part to my diploma thesis .LP A new chance .LP Go for such chances! .LP (Important: A professor who supports you) .LP .sp Forced me to work on masqmail .S "Code reading revisited .LP vi, grep .LP Documentation .LP Working in the code reveals deeper knowledge .S "Bug fixing .LP Started with fixing old bugs .LP Became more familiar with masqmail's internals .LP Discovered new bugs by fixing old bugs ;-) .LP Which bug reports are still relevant? Which are already fixed somewhere? Where? .LP Supplied additional information to bugs .LP Have a bug tracker (Debian's currently) .S "The community .LP Holds a lot of knowledge .LP Lost community \(-> lost knowledge .I You need to learn everything from scratch on your own .I You cannot ask (!) .LP .sp .CW \s-2http://web.archive.org\s0 can be your friend .S "Good documentation .LP What is documented, where and how? .LP Praise the VCS log if you have one .LP Good commit messages (!) .LP Interesting `THOUGHTS' file from very old version .LP .sp 2 Ask yourself: What information could someone need when he will look at that in a couple of years? .S "Releasing .LP Release! (early and often) .LP When exactly to release? .LP Quality of releases .LP .sp 2 Announcements to the mailing list and on .CW \s-2http://freshmeat.net\s0 .LP Work steadily! .LP Be proud! (You have already achieved something) .S "Compatibility .LP Requires extra effort .LP Important for end-users .LP Cumbersome during active development .S "Coding style .LP Reformat the code or not? \(em It depends .LP But refactor (in the small) for clarity and simplicity .LP Remember: Everyone has his programming strength and weaknesses .LP It's good when several people read and improve the code .S "Refactoring .LP Is risky without a good test suite .LP Especially risky (but also especially valuable) if someone doesn't know the code. (Different POV) .LP .sp 2 .B Refactor! .sp .ft I .ce 3 Adding features makes software larger, .br fixing bugs makes software more correct, .br but refactoring makes software better. .ft P .S "Tests .LP Are great to have .LP But who wants to write them? .LP Is the code testable? .LP .sp 2 (Anyone here who wants to add a test framework to masqmail?) .S "The team .LP Masqmail has no development team yet .LP Currently I feel the wish to discuss decisions with others .LP Although being the only one who decides can make things easier .LP .sp 2 Subscribe to the mailings list if you are interested .P "Masqmail's future .S "Todo .I End-user documentation (howtos, sample configs, articles in magazines) .I Add a test suite .I Refactor in the large (simplify) .I Encryption and authentication .I .ps -8 Add features .S "Masqmail wants you! .LP I welcome: .I users .I active people on the mailing list .I developers .LP .sp Subscribe to the list and install masqmail. :-) .P "Final advice .S "Reviving orphaned software projects .LP Just do it! .LP It's a good way to start with project maintenance .LP It's a way on which everyone will benefit .LP Old software often has users, but it lacks developers .LP It's often easier than introducing new software .S "When developing software ... .LP Keep in mind: .I Release! .I Build up a community (work steadily) .I Document for the future (good commit messages) .I Refactor! .I Find someone who writes a test suite for you ;-) .P "References .S References .LP Masqmail's homepage: .CW \s-2http://marmaro.de/prog/masqmail\s0 .LP To subscribe to the mailing list: Send a mail with the subject ``subscribe masqmail'' to .CW \s-2\s0 .LP .sp My diploma thesis on masqmail: .CW \s-2http://marmaro.de/docs/diploma/\s0 .LP A ChaosSeminar about my diploma thesis: .CW \s-2http://ulm.ccc.de/ChaosSeminar/2009/03_masqmail\s0 .LP .sp The quote was from: ``Code Reading'' by Diomidis Spinellis .S Colophon .LP This talk was prepared using tools of the Heirloom project: .CW \s-2http://heirloom.sf.net\s0 .LP The slides macros are a (now much) modified version of .br .CW \s-2http://repo.cat-v.org/troff-slider/\s0 .sp 2 .LP The slides and their sources are available on my website .CW \s-2http://marmaro.de/docs\s0 and on .CW \s-2http://ulm.ccc.de/ChaosSeminar/\s0 .sp .sp 2 2010-07-12