F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices in Software Development:
Users and Developers Unite!
Bennett Landman, Ph.D.
David N. Kennedy, Ph.D.
Xiaodong Tao, Ph.D.
Paul A. Yushkevich, Ph.D.
Gary Hui Zhang, Ph.D.
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Schedule
13:30 - 15:00 Session 1: Presentations
13:30 - 13:40 Introduction to the Tutorial
13:40 - 14:00 Neuroimaging Informatics Tools and Resources Clearinghouse: NITRC
David N. Kennedy
14:00 - 14:20 3DSlicer3 Extension Modules: Concept and Implementation
Xiaodong Tao
14:20 - 14:40 Challenges of Collaborative Open-Source Development: Lessons learned
from the early evolution of the Java Image Science Toolkit
Bennett Landman
14:40 - 15:00 Making others use your software: Lessons learned from ITK-SNAP
Paul A. Yushkevich
15:00 - 15:30 Tea/Coffee Break
15:30 - 17:00 Session 2: Panel Discussion & Demonstrations
15:30 - 16:15 Panel Discussion
16:15 - 17:00 Demos
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Academic Objectives
All participants should gain knowledge regarding:
• Methods for open source software development
• Methods for software distribution, including licensing
issues
• Techniques for software validation
• Techniques for user interactions (documentation,
tutorials, feedback/communication, etc.)
• Resources for finding existing relevant software
projects.
• See http://www.nitrc.org/projects/best_practices
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Faculty
Bennett Landman, Ph.D.
Assistant Professor
Department of Electrical Engineering
Vanderbilt University Institute of Image Science
[email protected]
David N. Kennedy, Ph.D.
Professor, Department of Psychiatry
University of Massachusetts Medical School
Worcester, MA 01605
[email protected]
Xiaodong Tao, Ph.D.
Computer Scientist
GE Global Research Center
Imaging Technologies
[email protected]
Gary Hui Zhang, Ph.D.
PICSL, Department of Radiology
University of Pennsylvania School of Medicine
3600 Market Street, Suite 320
Philadelphia, PA 19104
[email protected]
Paul A. Yushkevich, Ph.D.
Assistant Professor
Penn Image Computing and Science Laboratory
Department of Radiology
University of Pennsylvania
[email protected]
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Neuroimaging Informatics Tools and Resources Clearinghouse - NITRC
Software Tools - A Users Perspective
David N. Kennedy, Ph.D.
Director, Division of Neuroinformatics
Department of Psychiatry, UMass Medical School
Child and Adolescent NeuroDevelopment Initiative
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
With apologies
and credit to
Gary Larson The Far Side
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
users
With apologies
and credit to
Gary Larson The Far Side
developers
How do I change the
contrast? How do I add
layers? How do I invert the
transform?
blah blah blah
blah blah blah
RTFM blah blah
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
developers
v
With apologies
and credit to
Gary Larson The Far Side
users
Well, this is really a
very complex piece of code.
Have you read my paper from
MICCAI? It’s probably too
complex for you…
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
User Scope:
• Data Acquisition & Analysis Normal Development and Studies in Child Psychiatry (Autism, Bipolar Disorder, etc.)
– Structure
– Diffusion
– Resting State
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Finding the Right Tool
“MRI segmentation software brain”
• Google?
– About 157,000 results
– Top Hit: Rescue
• Source Forge?
• NITRC?
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Google
Top
Hit
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Finding the Right Tool
“MRI segmentation software brain”
• Google?
– About 157,000 results
– Top Hit: Rescue
– Results include: papers, pdfs, ppts, programs,
pictures, videos, etc.
• Source Forge?
• NITRC?
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Finding the Right Tool
“MRI segmentation software brain”
• Google?
– About 157,000 results
• Source Forge?
– 15,539 results
– Top Hit: PortableApps.com: Portable Software/USB
– Results include: you name it…
• NITRC?
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Source
Forge
Results
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Finding the Right Tool
“MRI segmentation software brain”
• Google?
– About 157,000 results
• Source Forge?
– 15,539 results
• NITRC?
– 39 Software Packages
– Top Hit: ITK-SNAP
– Results include: All the ‘usual suspect’ tools, and
more!
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
NITRC
Result
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Refining the Search
• Operating System: MacOS
• Supported Image Type: DICOM
• Results in: 16 Resources
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
NITRC
Result
Refined
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices Take-Home Points:
User Requirements
Developer Requirements
1. Findability
Description/Promotion
2.
3.
4.
5.
6.
7.
8.
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Installation
• Findability is just first step. Can I install it,
easily?
• Examples:
– FSL
– Mango
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
FSL Installation Steps
1. Click download link
2. Agree to license
3. Provide some
personal information
4. Download
appropriate release
5. Run FSL installer
script (from
command line)
6. Test the installation
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Mango Installation Steps
1. Click download link
2. Open the download w/ ‘Archive Utility’
3. Run Installer (Double click from UI) Answer usual questions
4. Run Program (Double click from
‘Applications’ directory)
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices Take-Home Points:
User Requirements
Developer Requirements
1. Findability
Description/Promotion
2. Easy to Install
Easy to Install/Verify
3.
4.
5.
6.
7.
8.
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Ease of Use
• Now what? You’ve found and installed
your program, how do you use it?
• From the UI, is it clear what to do?
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
User Interface
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Documentation
• Of course the software is very powerful, and
it’s impossible for everything to be intuitively
obvious from the UI, who do you think we are,
Microsoft?
• Users are obligated to RTM (read the
manual) prior to bugging the developers with
questions.
• But, where is the manual? Is it easy to use?
Are there examples? Tutorials? FAQ?
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
FSL Documentation
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices Take-Home Points:
User Requirements
Developer Requirements
1. Findability
Description/Promotion
2. Easy to Install
Easy to Install/Verify
3. Easy to Use
Intuitive UI/Good Documentation
4.
5.
6.
7.
8.
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Help!
• OK, I REALLY did read the manual, and I just
can’t figure out how to [insert problem here]…
• I checked the FAQ, and searched on the mail list
archive…
• Oh, wait a minute, is there a FAQ? Is there a mail
list? Is there a users ‘forum’? Where are they?
• OK, I checked those too, how do I get more help?
– User Support Forums, Mailing Lists
– Email an administrator?
– What’s the preferred method for this project?
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices Take-Home Points:
User Requirements
Developer Requirements
1. Findability
Description/Promotion
2. Easy to Install
Easy to Install/Verify
3. Easy to Use
Intuitive/Good Documentation
4. Get Help
Bug Tracker/Forums/Mailing List
5.
6.
7.
8.
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Latest Version?
• Once you succeed at contacting the
developers, how often does the following
happen to you?
– Oh, you can’t do [blah]? ‘That’s been added in
the ‘most recent’ version’ Or worse yet, ‘that’s
only available in the development version’. Or,
‘that’s planned for release 3.X’.
• Users: Know your versions!
• Developers: Keep your public releases up
to date! (yes, ALL of them…)
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices Take-Home Points:
User Requirements
Developer Requirements
1. Findability
Description/Promotion
2. Easy to Install
Easy to Install/Verify
3. Easy to Use
Intuitive/Good Documentation
4. Get Help
Bug Tracker/Forums/Mailing List
5. Up-to-Date
Versioning/Synchronization/Dashboard
6.
7.
8.
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
I want the best!
• Of course, I only want to use the best software know to
human kind for my research.
• Unfortunately, ‘best’ is exceedingly domain dependent, and
many problems (and software packages) cross many
domains in a specific problem (skull striping, registration,
pre-filtering, statistical test, etc.).
• Also, ‘best’ is data dependent. The ‘best’ surface extraction
in post mortem tissue may not be the best in patients w/ AD.
• Users: Know what best means in your context!
• Developers: Provide quality metrics (on standard cases)
when possible!
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices Take-Home Points:
User Requirements
Developer Requirements
1. Findability
Description/Promotion
2. Easy to Install
Easy to Install/Verify
3. Easy to Use
Intuitive/Good Documentation
4. Get Help
Bug Tracker/Forums/Mailing List
5. Up-to-Date
Versioning/Synchronization/Dashboard
6. High Quality
Validation/Comparison Metrics
7.
8.
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Say I’m not the only one…
• Even if using the ‘best’ tool, the user will run into
publications problems if no one else has ever used
that tool before.
• Have you gotten reviewers who say: “You should
have used the Talairach coordinate system”, or
“You should have used SPM…”?
• Even if it’s not fair or optimal, users need to know
how popular a resource is. # of downloads  # of
users  # of publications, etc.
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices Take-Home Points:
User Requirements
Developer Requirements
1. Findability
Description/Promotion
2. Easy to Install
Easy to Install/Verify
3. Easy to Use
Intuitive/Good Documentation
4. Get Help
Bug Tracker/Forums/Mailing List
5. Up-to-Date
Versioning/Synchronization/Dashboard
6. High Quality
Validation/Comparison Metrics
7. Use Metrics
Downloads/Users/Publication Counts
8.
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
I can make it better…
• I’ve found a great tool, it works really well for me,
and does everything I need… almost.
• I submitted a ‘Feature Request’, and I completely
understand that your funding and time is limited,
and you will not get to my request until 2021.
• But hey, I’m a wicked good [insert programming
language here] programmer myself. Let me at your
source code…
• Open Source is not the solution for everything, but
with proper management and policy, it’s an
important tool for extensibility, transparency, and
public relations. Besides, it ought to be the law…
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices Take-Home Points:
User Requirements
Developer Requirements
1. Findability
Description/Promotion
2. Easy to Install
Easy to Install/Verify
3. Easy to Use
Intuitive/Good Documentation
4. Get Help
Bug Tracker/Forums/Mailing List
5. Up-to-Date
Versioning/Synchronization/Dashboard
6. High Quality
Validation/Comparison Metrics
7. Use Metrics
Downloads/Users/Publication Counts
8. Contribute/Extend
Source Code Availability/Policy
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Summary
• Top 10 reasons users use a specific software
package:
6. I wrote it… when I was a graduate student… 20 years
ago…
7. Is part of the LONI pipeline…
8. Is easiest to use…
9. Has the most publications…
10. It’s what my lab uses…
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Summary
• Top 10 reasons users use a specific software
package:
1. At least it’s not SPM…
2. Everyone uses SPM…
3. It’s written in ITK…
4. It works with 3D Slicer…
5. My graduate student wrote it… who is a botany major…
with no formal programming training…
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Summary, continued
• Top 1 reason NOT listed as a reason to use
a specific software package:
1. It is the best…
This is where developers and users have to continue to work together to:
• Insist on the best
• Define the parameters of best
• Develop standards for performance
• Document the performance
• And use the guidelines of Best Practices for software development!
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Acknowledgements
•
•
•
•
All NITRC Users and Developers
Today’s Presenters & Audience
MICCAI Organizers
NITRC Development Team
(Neuromorphometrics Inc, TCG Inc, UCSD)
• NITRC Sponsors (NIH Blueprint, NIBIB)
• The ‘tutorial’ lives on at
http://www.nitrc.org/projects/best_practices
www.nitrc.org
nitrc.nih.gov
F-T4: Best Practices in Software Development
MICCAI 2010 - September 24, 2010
Best Practices Take-Home Points:
User Requirements
Developer Requirements
1. Findability
Description/Promotion
2. Easy to Install
Easy to Install/Verify
3. Easy to Use
Intuitive/Good Documentation
4. Get Help
Bug Tracker/Forums/Mailing List
5. Up-to-Date
Versioning/Synchronization/Dashboard
6. High Quality
Validation/Comparison Metrics
7. Use Metrics
Downloads/Users/Publication Counts
8. Contribute/Extend
Source Code Availability/Policy
www.nitrc.org
nitrc.nih.gov