xnat open source development

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

Upload: john-paulett

Post on 17-Dec-2014

706 views

Category:

Technology


2 download

DESCRIPTION

Talk from 2010 XNAT Workshop

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