XNAT Custom Features & Open Source Development
Goal
Introduce potential contributors to the methods and tools for contributing to XNAT
XNAT is Open Source!
XNAT is Open Source!
Freedom
Leverage others work Contribute
HOW CAN I CONTRIBUTE?
Bug Reports & Feature Requests
[email protected] For sensitive issues,
[email protected] Provide details!
Environment Versions Steps to reproduce Screenshots Logs
6
Report a problem
Share Custom Schemas
(Jenny Gurneys previous Customizations talk)
Create Something New
Leverage the REST API
Examples: PyXNAT, xnatfs
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
blessed repository
developer public
developer public
integration manager
developer private
developer private
20
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