xnat open source development
DESCRIPTION
Talk from 2010 XNAT WorkshopTRANSCRIPT
Goal
Introduce potential contributors to the
methods and tools for contributing to XNAT
2
XNAT is Open Source!
3
XNAT is Open Source!
Freedom
Leverage others’ work
Contribute
4
HOW CAN I CONTRIBUTE?
5
Bug Reports & Feature Requests
For sensitive issues, [email protected]
Provide details!
• Environment
• Versions
• Steps to reproduce
• Screenshots
• Logs
6
“Report a problem”
7
Share Custom Schemas
(Jenny Gurney’s previous Customizations talk)
8
Create Something New
Leverage the REST API
Examples: PyXNAT, xnatfs
9
Develop XNAT
Fix Bugs
Add Features
10
XNAT ECOSYSTEM
11
12
XNAT Internals
xdat_core - org.nrg.xft
– translates between XML schema & other formats
– XFTItem.java
xdat_core - org.nrg.xdat
– admin, security, search infrastructure around XFT
– Web app structure
13
XNAT Internals
xdat_release/plugin_resources - org.nrg.xnat
– REST API
– Uploading & Downloading
– Neuroimaging specific models
xdat_release/projects
– Site customizations
14
3 TOOLS OF A XNAT DEVELOPER
15
#1 – Version Control with Mercurial
hg.xnat.org
Replacement for CVS & Subversion
Distributed (everyone has full repo & can commit)
Sane branching & merging
16
Why Leave CVS?
Network connectivity required
Lack of support for renaming/moving files
Lack of atomic commits
Single point of failure
Expensive branch operations
Day-long merges
17
Mercurial Quick Start
hg clone http://hg.xnat.org/xdat_release
# view differences
hg diff
# commit and send changes to remote repo
hg commit
hg push
# get the latest remote changes
hg pull --update
18
hg.xnat.org
19
Integration Manager Workflow
20
blessed repository
integration manager
developer private
developer public
developer private
developer public
Mercurial Resources
mercurial.selenic.com
hgbook.red-bean.com
hginit.com
21
#2 – Maven
Build & Dependency Management
Migrating to Maven 2
– xdat_release & pipelines still use Maven 1
(hidden behind bin/setup.sh)
– New projects should use Maven 2
22
Why not Ant?
Dependency management
– Reduce blobs in version control system
Standardized project layout & commands
23
xdat_core & Maven
$ cd xdat_core
$ mvn clean install
[INFO] Scanning for projects...
...
[INFO] BUILD SUCCESSFUL
24
#2 – Eclipse IDE
25
Useful Eclipse Plugins
• Mercurial
• Maven
• XML Schema Editor
• Velocity
26
HELPFUL TOOLS
27
Debugging with JPDA
Connect to external Tomcat & Applet
processes with Eclipse debugger
Set breakpoints, examine state
28
Connect Tomcat process with Eclipse debugger
DEMO: FIX A BUG & SUBMIT A PATCH
30
1) Clone & Set up Projects
hg clone http://hg.xnat.org/xdat_core
mvn clean install
hg clone http://hg.xnat.org/xdat_release
...
bin/setup.sh -Ddeploy=true
...
31
2) Register in Eclipse
cp sample.classpath .classpath
cp sample.project .project
32
3) Fix Code
33
4) Test it!
36
5) Commit
37
6) Publish the Change
Options include:
• Sending patch file
• Forking on Bitbucket
38
40
41
Go Forth and Develop
http://nrg.wikispaces.com/XNAT+2010+Workshop+-
+Custom+Features+and+Open+Source+Development
43
44