Top Banner
XNAT Custom Features & Open Source Development John Paulett [email protected] June 30, 2010
44

XNAT Open Source Development

Dec 17, 2014

Download

Technology

John Paulett

Talk from 2010 XNAT Workshop
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: XNAT Open Source Development

XNAT Custom Features

& Open Source DevelopmentJohn Paulett

[email protected]

June 30, 2010

Page 2: XNAT Open Source Development

Goal

Introduce potential contributors to the

methods and tools for contributing to XNAT

2

Page 3: XNAT Open Source Development

XNAT is Open Source!

3

Page 4: XNAT Open Source Development

XNAT is Open Source!

Freedom

Leverage others’ work

Contribute

4

Page 5: XNAT Open Source Development

HOW CAN I CONTRIBUTE?

5

Page 6: XNAT Open Source Development

Bug Reports & Feature Requests

[email protected]

For sensitive issues, [email protected]

Provide details!

• Environment

• Versions

• Steps to reproduce

• Screenshots

• Logs

6

Page 7: XNAT Open Source Development

“Report a problem”

7

Page 8: XNAT Open Source Development

Share Custom Schemas

(Jenny Gurney’s previous Customizations talk)

8

Page 9: XNAT Open Source Development

Create Something New

Leverage the REST API

Examples: PyXNAT, xnatfs

9

Page 10: XNAT Open Source Development

Develop XNAT

Fix Bugs

Add Features

10

Page 11: XNAT Open Source Development

XNAT ECOSYSTEM

11

Page 12: XNAT Open Source Development

12

Page 13: XNAT Open Source Development

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

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

3 TOOLS OF A XNAT DEVELOPER

15

Page 16: XNAT Open Source Development

#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

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

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

hg.xnat.org

19

Page 20: XNAT Open Source Development

Integration Manager Workflow

20

blessed repository

integration manager

developer private

developer public

developer private

developer public

Page 21: XNAT Open Source Development

Mercurial Resources

mercurial.selenic.com

hgbook.red-bean.com

hginit.com

21

Page 22: XNAT Open Source Development

#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

Why not Ant?

Dependency management

– Reduce blobs in version control system

Standardized project layout & commands

23

Page 24: XNAT Open Source Development

xdat_core & Maven

$ cd xdat_core

$ mvn clean install

[INFO] Scanning for projects...

...

[INFO] BUILD SUCCESSFUL

24

Page 25: XNAT Open Source Development

#2 – Eclipse IDE

25

Page 26: XNAT Open Source Development

Useful Eclipse Plugins

• Mercurial

• Maven

• XML Schema Editor

• Velocity

26

Page 27: XNAT Open Source Development

HELPFUL TOOLS

27

Page 28: XNAT Open Source Development

Debugging with JPDA

Connect to external Tomcat & Applet

processes with Eclipse debugger

Set breakpoints, examine state

28

Page 29: XNAT Open Source Development

Connect Tomcat process with Eclipse debugger

Page 30: XNAT Open Source Development

DEMO: FIX A BUG & SUBMIT A PATCH

30

Page 31: XNAT Open Source Development

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

2) Register in Eclipse

cp sample.classpath .classpath

cp sample.project .project

32

Page 33: XNAT Open Source Development

3) Fix Code

33

Page 34: XNAT Open Source Development
Page 35: XNAT Open Source Development
Page 36: XNAT Open Source Development

4) Test it!

36

Page 37: XNAT Open Source Development

5) Commit

37

Page 38: XNAT Open Source Development

6) Publish the Change

Options include:

• Sending patch file

• Forking on Bitbucket

38

Page 39: XNAT Open Source Development
Page 40: XNAT Open Source Development

40

Page 41: XNAT Open Source Development

41

Page 42: XNAT Open Source Development
Page 43: XNAT Open Source Development

Go Forth and Develop

http://nrg.wikispaces.com/XNAT+2010+Workshop+-

+Custom+Features+and+Open+Source+Development

43

Page 44: XNAT Open Source Development

44