Você está na página 1de 44

XNAT Custom Features & Open Source Development

John Paulett jpaulett@wustl.edu June 30, 2010

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


xnat_discussion@googlegroups.com For sensitive issues, bugs@xnat.org 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

Você também pode gostar