SlideShare ist ein Scribd-Unternehmen logo
1 von 44
Downloaden Sie, um offline zu lesen
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




                                              2
XNAT is Open Source!




                       3
XNAT is Open Source!
Freedom

Leverage others’ work

Contribute




                        4
HOW CAN I CONTRIBUTE?


                        5
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”




                     7
Share Custom Schemas
(Jenny Gurney’s previous Customizations talk)




                                                8
Create Something New
Leverage the REST API

Examples: PyXNAT, xnatfs




                           9
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      developer   developer
     repository      public      public




     integration   developer   developer
      manager       private     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

Weitere ähnliche Inhalte

Was ist angesagt?

Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Giovanni Toraldo
 

Was ist angesagt? (16)

Red Hat Container Development Kit
Red Hat Container Development KitRed Hat Container Development Kit
Red Hat Container Development Kit
 
Blt introduction
Blt  introductionBlt  introduction
Blt introduction
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Automated testing with Openshift
Automated testing with OpenshiftAutomated testing with Openshift
Automated testing with Openshift
 
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2TagImplementation of the new REST API for Open Source LBS-platform Geo2Tag
Implementation of the new REST API for Open Source LBS-platform Geo2Tag
 
Introduction to Containers
Introduction to ContainersIntroduction to Containers
Introduction to Containers
 
The automated tests inside Openshift
The automated tests inside OpenshiftThe automated tests inside Openshift
The automated tests inside Openshift
 
BeagleBoard Workshop ESC Boston 2011
BeagleBoard Workshop ESC Boston 2011BeagleBoard Workshop ESC Boston 2011
BeagleBoard Workshop ESC Boston 2011
 
containerd and CRI
containerd and CRIcontainerd and CRI
containerd and CRI
 
Robot Evolution
Robot EvolutionRobot Evolution
Robot Evolution
 
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
Deploying an Open Source DAM in SAAS Mode (European Drupal Days 2015)
 
Portainer
PortainerPortainer
Portainer
 
Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)Continuous Delivery: 5 years later (Incontro DevOps 2018)
Continuous Delivery: 5 years later (Incontro DevOps 2018)
 
Intro to NuGet
Intro to NuGetIntro to NuGet
Intro to NuGet
 
Create Dynamic console with OSGi and Adobe Flex
Create Dynamic console with OSGi and Adobe FlexCreate Dynamic console with OSGi and Adobe Flex
Create Dynamic console with OSGi and Adobe Flex
 
BKK16-310 The HiKey AOSP collaborative experience
BKK16-310 The HiKey AOSP collaborative experience BKK16-310 The HiKey AOSP collaborative experience
BKK16-310 The HiKey AOSP collaborative experience
 

Andere mochten auch

OPM Cities Creative Scenario Workshop
OPM Cities Creative Scenario WorkshopOPM Cities Creative Scenario Workshop
OPM Cities Creative Scenario Workshop
seesds
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
seesds
 
Getting Started with (Distributed) Version Control
Getting Started with (Distributed) Version ControlGetting Started with (Distributed) Version Control
Getting Started with (Distributed) Version Control
John Paulett
 
Kustos na mreži - kuriranje u doba velikih podataka
Kustos na mreži - kuriranje u doba velikih podatakaKustos na mreži - kuriranje u doba velikih podataka
Kustos na mreži - kuriranje u doba velikih podataka
Klaudio Štefančić
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
seesds
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
seesds
 
Kustos na mreži - mehanički arhivski uređaj za osobnu primjenu
Kustos na mreži - mehanički arhivski uređaj za osobnu primjenuKustos na mreži - mehanički arhivski uređaj za osobnu primjenu
Kustos na mreži - mehanički arhivski uređaj za osobnu primjenu
Klaudio Štefančić
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
seesds
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
seesds
 
Defensa tesis jose salinas 2013
Defensa tesis jose salinas 2013Defensa tesis jose salinas 2013
Defensa tesis jose salinas 2013
maigva
 

Andere mochten auch (20)

OPM Cities Creative Scenario Workshop
OPM Cities Creative Scenario WorkshopOPM Cities Creative Scenario Workshop
OPM Cities Creative Scenario Workshop
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
 
Getting Started with (Distributed) Version Control
Getting Started with (Distributed) Version ControlGetting Started with (Distributed) Version Control
Getting Started with (Distributed) Version Control
 
Kustos na mreži - kuriranje u doba velikih podataka
Kustos na mreži - kuriranje u doba velikih podatakaKustos na mreži - kuriranje u doba velikih podataka
Kustos na mreži - kuriranje u doba velikih podataka
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
 
Esp753
Esp753Esp753
Esp753
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
 
Patterntext
PatterntextPatterntext
Patterntext
 
Kustos na mreži - mehanički arhivski uređaj za osobnu primjenu
Kustos na mreži - mehanički arhivski uređaj za osobnu primjenuKustos na mreži - mehanički arhivski uređaj za osobnu primjenu
Kustos na mreži - mehanički arhivski uređaj za osobnu primjenu
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
 
MEGA brands
MEGA brandsMEGA brands
MEGA brands
 
Malmö Workshop Exercise
Malmö Workshop ExerciseMalmö Workshop Exercise
Malmö Workshop Exercise
 
XNAT Tuning & Monitoring
XNAT Tuning & MonitoringXNAT Tuning & Monitoring
XNAT Tuning & Monitoring
 
GeoDjango & HTML5 Geolocation
GeoDjango & HTML5 GeolocationGeoDjango & HTML5 Geolocation
GeoDjango & HTML5 Geolocation
 
XNAT Case Study: DIAN QC Uploader
XNAT Case Study: DIAN QC UploaderXNAT Case Study: DIAN QC Uploader
XNAT Case Study: DIAN QC Uploader
 
Vera Horvat Pintarić, "O političkom plakatu" - 37 godina poslije
Vera Horvat Pintarić, "O političkom plakatu" - 37 godina poslijeVera Horvat Pintarić, "O političkom plakatu" - 37 godina poslije
Vera Horvat Pintarić, "O političkom plakatu" - 37 godina poslije
 
Mercurial: Modern Source Control Management
Mercurial: Modern Source Control ManagementMercurial: Modern Source Control Management
Mercurial: Modern Source Control Management
 
Defensa tesis jose salinas 2013
Defensa tesis jose salinas 2013Defensa tesis jose salinas 2013
Defensa tesis jose salinas 2013
 
PostgreSQL Scaling And Failover
PostgreSQL Scaling And FailoverPostgreSQL Scaling And Failover
PostgreSQL Scaling And Failover
 
Drools
DroolsDrools
Drools
 

Ähnlich wie XNAT Open Source Development

The Source Control Landscape
The Source Control LandscapeThe Source Control Landscape
The Source Control Landscape
Lorna Mitchell
 
Oscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to ProductionOscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to Production
Patrick Chanezon
 
TransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MSTransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MS
Lana Kalashnyk
 

Ähnlich wie XNAT Open Source Development (20)

Revolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App FactoryRevolutionizing WSO2 PaaS with Kubernetes & App Factory
Revolutionizing WSO2 PaaS with Kubernetes & App Factory
 
Agile Software Development & Tools
Agile Software Development & ToolsAgile Software Development & Tools
Agile Software Development & Tools
 
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
Montreal Kubernetes Meetup: Developer-first workflows (for microservices) on ...
 
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App FactoryWSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
WSO2Con USA 2015: Revolutionizing WSO2 PaaS with Kubernetes & App Factory
 
Free GitOps Workshop
Free GitOps WorkshopFree GitOps Workshop
Free GitOps Workshop
 
Cloud Foundry Roadmap Update - OSCON - May 2017
Cloud Foundry Roadmap Update - OSCON - May 2017Cloud Foundry Roadmap Update - OSCON - May 2017
Cloud Foundry Roadmap Update - OSCON - May 2017
 
Devoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and BoltsDevoxx 2016 - Docker Nuts and Bolts
Devoxx 2016 - Docker Nuts and Bolts
 
Alibaba Cloud Conference 2016 - Docker Open Source
Alibaba Cloud Conference   2016 - Docker Open Source Alibaba Cloud Conference   2016 - Docker Open Source
Alibaba Cloud Conference 2016 - Docker Open Source
 
Collabograte
CollabograteCollabograte
Collabograte
 
Oscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby projectOscon 2017: Build your own container-based system with the Moby project
Oscon 2017: Build your own container-based system with the Moby project
 
The Source Control Landscape
The Source Control LandscapeThe Source Control Landscape
The Source Control Landscape
 
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)Breaking the monolith to microservice with Docker and Kubernetes (k8s)
Breaking the monolith to microservice with Docker and Kubernetes (k8s)
 
Operator Framework Overview
Operator Framework OverviewOperator Framework Overview
Operator Framework Overview
 
PaaSTA: Running applications at Yelp
PaaSTA: Running applications at YelpPaaSTA: Running applications at Yelp
PaaSTA: Running applications at Yelp
 
What's New in Docker - February 2017
What's New in Docker - February 2017What's New in Docker - February 2017
What's New in Docker - February 2017
 
Oscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to ProductionOscon London 2016 - Docker from Development to Production
Oscon London 2016 - Docker from Development to Production
 
TransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MSTransitioningToMicroServonDocker_MS
TransitioningToMicroServonDocker_MS
 
Gerrit linuxtag2011
Gerrit linuxtag2011Gerrit linuxtag2011
Gerrit linuxtag2011
 
Dynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to MicroservicesDynatrace - Red Hat workshop : Monolith to Microservices
Dynatrace - Red Hat workshop : Monolith to Microservices
 
Docker Application to Scientific Computing
Docker Application to Scientific ComputingDocker Application to Scientific Computing
Docker Application to Scientific Computing
 

Kürzlich hochgeladen

Kürzlich hochgeladen (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

XNAT Open Source Development