xnat open source development
DESCRIPTION
Talk from 2010 XNAT WorkshopTRANSCRIPT
![Page 2: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/2.jpg)
Goal
Introduce potential contributors to the
methods and tools for contributing to XNAT
2
![Page 3: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/3.jpg)
XNAT is Open Source!
3
![Page 4: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/4.jpg)
XNAT is Open Source!
Freedom
Leverage others’ work
Contribute
4
![Page 5: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/5.jpg)
HOW CAN I CONTRIBUTE?
5
![Page 6: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/6.jpg)
Bug Reports & Feature Requests
For sensitive issues, [email protected]
Provide details!
• Environment
• Versions
• Steps to reproduce
• Screenshots
• Logs
6
![Page 7: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/7.jpg)
“Report a problem”
7
![Page 8: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/8.jpg)
Share Custom Schemas
(Jenny Gurney’s previous Customizations talk)
8
![Page 9: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/9.jpg)
Create Something New
Leverage the REST API
Examples: PyXNAT, xnatfs
9
![Page 10: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/10.jpg)
Develop XNAT
Fix Bugs
Add Features
10
![Page 11: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/11.jpg)
XNAT ECOSYSTEM
11
![Page 12: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/12.jpg)
12
![Page 13: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/13.jpg)
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
![Page 14: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/14.jpg)
XNAT Internals
xdat_release/plugin_resources - org.nrg.xnat
– REST API
– Uploading & Downloading
– Neuroimaging specific models
xdat_release/projects
– Site customizations
14
![Page 15: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/15.jpg)
3 TOOLS OF A XNAT DEVELOPER
15
![Page 16: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/16.jpg)
#1 – Version Control with Mercurial
hg.xnat.org
Replacement for CVS & Subversion
Distributed (everyone has full repo & can commit)
Sane branching & merging
16
![Page 17: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/17.jpg)
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
![Page 18: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/18.jpg)
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
![Page 19: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/19.jpg)
hg.xnat.org
19
![Page 20: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/20.jpg)
Integration Manager Workflow
20
blessed repository
integration manager
developer private
developer public
developer private
developer public
![Page 21: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/21.jpg)
Mercurial Resources
mercurial.selenic.com
hgbook.red-bean.com
hginit.com
21
![Page 22: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/22.jpg)
#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
![Page 23: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/23.jpg)
Why not Ant?
Dependency management
– Reduce blobs in version control system
Standardized project layout & commands
23
![Page 24: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/24.jpg)
xdat_core & Maven
$ cd xdat_core
$ mvn clean install
[INFO] Scanning for projects...
...
[INFO] BUILD SUCCESSFUL
24
![Page 25: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/25.jpg)
#2 – Eclipse IDE
25
![Page 26: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/26.jpg)
Useful Eclipse Plugins
• Mercurial
• Maven
• XML Schema Editor
• Velocity
26
![Page 27: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/27.jpg)
HELPFUL TOOLS
27
![Page 28: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/28.jpg)
Debugging with JPDA
Connect to external Tomcat & Applet
processes with Eclipse debugger
Set breakpoints, examine state
28
![Page 29: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/29.jpg)
Connect Tomcat process with Eclipse debugger
![Page 30: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/30.jpg)
DEMO: FIX A BUG & SUBMIT A PATCH
30
![Page 31: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/31.jpg)
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
![Page 32: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/32.jpg)
2) Register in Eclipse
cp sample.classpath .classpath
cp sample.project .project
32
![Page 33: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/33.jpg)
3) Fix Code
33
![Page 34: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/34.jpg)
![Page 35: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/35.jpg)
![Page 36: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/36.jpg)
4) Test it!
36
![Page 37: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/37.jpg)
5) Commit
37
![Page 38: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/38.jpg)
6) Publish the Change
Options include:
• Sending patch file
• Forking on Bitbucket
38
![Page 39: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/39.jpg)
![Page 40: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/40.jpg)
40
![Page 41: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/41.jpg)
41
![Page 42: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/42.jpg)
![Page 43: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/43.jpg)
Go Forth and Develop
http://nrg.wikispaces.com/XNAT+2010+Workshop+-
+Custom+Features+and+Open+Source+Development
43
![Page 44: XNAT Open Source Development](https://reader033.vdocuments.site/reader033/viewer/2022051610/5492221aac79593f288b46cd/html5/thumbnails/44.jpg)
44