CTK-Hackfest-September-2010: Difference between revisions

From Commontk
Jump to navigationJump to search
No edit summary
 
(60 intermediate revisions by 9 users not shown)
Line 1: Line 1:
== Event pictures ==
== Event pictures ==
{|
{|
|align="left"|This is a working meeting - the goal is to start writing code! The event will look something like these pictures from the May 2010 meeting in Washington.
|align="left"|This was a working meeting - we wrote and debugged a lot of code!.
|[[File:DSC00681.JPG|thumb|300px|<big>CTK team hacking...</big>]]
|[[File:Chiara-and-Yves.JPG|thumb|200px|<big>Most Excellent Hosts</big>]]
|[[File:DSC00684.JPG|thumb|300px|<big>CTK team hacking...</big>]]
|[[File:Julien-and-Jc.JPG|thumb|200px|<big>Happy Hackers</big>]]
|[[File:Pedro,Sascha,Xavi,Benoit,Yves,Ivo,Marco.JPG|thumb|200px|<big>Cooperative Problem Solving</big>]]
|[[File:Paolo-and-Daniele.JPG|thumb|200px|<big>More Happy Hackers</big>]]
|}
|}


== Introduction ==
== Introduction ==


'''Date:''' September 13-17
'''Date:''' September 13-17 2010


'''Location:'''  
'''Location:'''  
TBD
Barcelona
 


'''Goal:''' A follow on to the wildly successful [http://www.na-mic.org/Wiki/index.php/Events:CTK-Pre-Hackfest-2010 March 2010 pre-hackfest] and [[CTK-Hackfest-May-2010| May 2010 hackfest]] .
'''Goal:''' A follow on to the wildly successful [http://www.na-mic.org/Wiki/index.php/Events:CTK-Pre-Hackfest-2010 March 2010 pre-hackfest] and [[CTK-Hackfest-May-2010| May 2010 hackfest]] .
Line 22: Line 24:
'''Organizers:''' Ivo Wolf, Steve Pieper, Stephen Aylward
'''Organizers:''' Ivo Wolf, Steve Pieper, Stephen Aylward


'''Site Hosts:''' Kevin Cleary and Patrick Cheng
'''Site Hosts:''' TBD


'''Attendees:''' (due to limited space, please contact the organizers to attend)
'''Attendees:''' (due to limited space, please contact the organizers to attend)
Line 29: Line 31:
# Marco Nolden,                    DKFZ, Germany
# Marco Nolden,                    DKFZ, Germany
# Sascha Zelzer,                    DKFZ, Germany
# Sascha Zelzer,                    DKFZ, Germany
# Dan Blezek,                      Mayo Clinic, USA
# Julien Finet,                     Kitware, USA
# Jean-Christophe Fillion-Robin    Kitware, USA
# Xavi Planes,                      UPF, Spain
# Pedro Omedas                      UPF, Spain
# Yves Martel                       UPF, Spain
# Benoit Bleuze                    INRIA, France
# Daniele Giunchi,                  Italy
# Daniele Giunchi,                  Italy
# Alessandro Chiarini,             Italy
# Paolo Quadrani,                   Italy
# Pedro Omedas,                    Spain
 
# Xavier Planes,                    Spain
''Virtual Attendees (by email or phone): Lawrence Tarbox, Michael Onken, Stephen Aylward''
# Patrick Cheng,                   Georgetown
# Ziv Yaniv,                        Georgetown
# Micheal Onken,                   OFFIS, Germany
# Will Schroeder,                  Kitware
# Stephen Aylward,                  Kitware
# Julien Jomier,                    Kitware
# Julien Finet,                    Kitware
# Jean-Christophe Fillion-Robin,    Kitware
# Oliver Kutter                    Siemens
# Nicolas Rannou                    Harvard


'''Future Events:''' The organizing committee invited a group of developers to get the CTK project started and we've believe we've reached capacity for this event.  Future hackfests will be announced in advance and we hope lots of people will be interested in participating.  The venue and activities at future hackfests will be determined based on the number of active participants in the project.
'''Future Events:''' The organizing committee invited a group of developers to get the CTK project started and we've believe we've reached capacity for this event.  Future hackfests will be announced in advance and we hope lots of people will be interested in participating.  The venue and activities at future hackfests will be determined based on the number of active participants in the project.
Line 52: Line 49:


Use the [http://public.kitware.com/cgi-bin/mailman/listinfo/ctk-developers CTK developers mailing list] to discuss build issues and topics for ongoing work.
Use the [http://public.kitware.com/cgi-bin/mailman/listinfo/ctk-developers CTK developers mailing list] to discuss build issues and topics for ongoing work.
'''We plan to hold weekly phone conferences during the month leading up to the actual hackfest.  Be prepared to discuss projects so we can make the most effective use of the face-to-face hackfest time.'''
== Preliminary Agenda ==
Nominally 9am to 5pm each day Monday through Friday.  Monday will start with a review of the topics.  Anyone who has prepared material they would like to present can suggest a time slot so a detailed agenda for the rest of the week can be prepared.  Unless otherwise allocated, it is expected that the time will be spent hacking, with ad hoc discussions and debugging sessions as needed.
*''Monday''
** 9am - welcome
** Everyone should say a few words of what they want to accomplish during the week.  Also state if you would like to present on a topic and lead a discussion so these can be added to the agenda.
** Review of git methodologies (Jc, Benoit, Sascha and all)
** Options for C++ DICOM Application Hosting implementation in CTK (Sascha and other) [[media:DicomAppHosting.pdf|Presentation]]
** Questions for packaging CTK in debian: 1) what to enable as 'standard ctk' 2) package name: commontk or ctk? 3) build against VTK trunk or release version?  Same question for DCMTK, Qt, etc...
** Demos/Presentation: CreatTools, DTK/MedInria, MAF Scripts
*''Tuesday''
*''Wednesday''
** afternoon status update from everyone, review to-do items for the rest of the week.
*''Thursday''
*''Friday''
** afternoon summary of progress and discussion of ongoing work, future {talk,hack}fests...


== Topics and Projects ==
== Topics and Projects ==


Pick up threads of discussion and activity from [http://www.na-mic.org/Wiki/index.php/Events:CTK-Hackfest-2010 Pre-Hackfest]
Pick up threads of discussion and activity from [http://www.na-mic.org/Wiki/index.php/Events:CTK-Hackfest-2010 Pre-Hackfest] and [[CTK-Hackfest-May-2010|May 2010 Hackfest]]


General set of topics (attendees, please flesh this out with your own ideas!)
General set of topics (attendees, please flesh this out with your own ideas!)
=== Schedule Talkfest ===
* Pick a time and place for a talkfest in the US (perhaps at Washington University in St. Louis).
=== Review driving application ===
* First: Define the purpose of CTK:
** Candidate: CTK is meant to span the boundaries of current toolkits and applications.  Specifically, its parts are intended to be easily integrated into current software systems and help them address software engineering challenges that impede their clinical use.  We are currently focusing simplifying the challenging tasks of (1) integrating DICOM Q&R functionality into applications (i.e., thereby enabling the integration of applications into the data workflow of a clinical environment) and (2) providing clean and effective user interfaces that are appropriate for use in a clinical environment (e.g., intuitive user-interface widgets for window and level selection).  Future challenges to be addressed include methods for software testing, event handling, and more.
* Second: Define the driving application to be bundled with CTK (that demonstrates the utility of CTK).
** "cool" application for users = "WOW!" application for computer scientist
** Candidate: The WOW! application could be achieved by working towards three goals:
*** Goal1: Provide Qt widgets for browsing data on a PACS and downloading (Q&R) select images to local disk.
**** Should support batch download based on selected slices, series, studies, and patients.
**** Would be nice to save in another format such as NIFTI, but that is a nice-to-have.
**** Query/browse Qt widget would show results as a tree (patient, study, series, images) with optional keys (sex, etc), when available
**** Provide progress reporting of transfers
**** This would be HUGE for the community.  Imagine having a small set of Qt/DCMTK widgets that combined together form a Q&R workstation.  This is a great place to start sharing.
*** Goal2: slice-based view of downloaded data (data on disk)
**** Qt image viewer with intensity window/level and not much more.  This is meant to be minimalistic.
*** Goal3: initiate processing on data (server-based data or downloaded data) using the dicom plug-in standard
**** This is where we can really help the community.  Provide a C++ reference implementation, and some Qt widgets that help initiate calls to available services.
=== Organization and Workflow ===
* First day will be dedicated to code organization and policies for git-based workflow.
** expected result will be a set of procedures for dissemination to the ctk community for comment and adoption.


=== DICOM ===
=== DICOM ===
* Marco
* Review of ITKv4 DICOM Plans and discussion of DCMTK and GDCM.
* Cache/Database issues
 
* Application Hosting
=== Widgets ===
* Unified CMake for DCMTK (Michael, JJ, Dan, Jc)
* Review status of Qt-based CTK widget developments
** Slicer4, DTK, GoFigure (others?)
 
=== Plugins, Modules ===
(utilities for discovering and invoking code blocks)
* Use case demonstrating the benefits of the plugin framework (Slicer Command Line Plugins?)
* Integration of Qt SOAP (?) http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Utilities/qtsoap/ for DICOM application hosting
 
Old:
* Plugins: not-application dependent (like a java plugin that runs in firefox or internet explorer or in our case something like a registration routine that gets invoked from a host application)
* Modules: rely on some of the API of the host application (like a loadable module that creates a custom GUI using a Qt API so it may work in more than one Qt-based application)


*Wednesday:
=== Interoperability ===
** MITK superbuild, with CTK widgets
(plugin toolkits together)
** DCMTK CMakeFiles
* VTK/OpenInventor shared OpenGL rendering context
** Stalled on findscu - integrating dcmtk, fetchdicom, sumatra ideas into CTK implementation


*Friday:
=== Events and Communications ===
** Progress on ctkDICOM app (still much to do)
(run-time messaging within and among applications)
** MITK now uses superbuild and ctkDICOMIndexer (to be committed in the next few weeks)
* ZMQ
** New demos of Service Class User (SCU) classes for DCMTK in CTK repository
* OpenIGTLink
** Need more testing data and "dummy" server that can be run during tests
* Event Bus (MAF, Patrick's ZMQ)
** mingw build ctk for MAF to incorporate DCMTK in MAF (nightly build on mingw coming).


=== Integration ===
=== Integration ===
* Marco and Ivo
(using CTK code in different applications)
* Integrating CTK into MITK and Slicer, gimias, MAF
* Change the private implementation macros to behave like Qt (derivable pimples)
* Slicer's Execution Model into MITK
* Improve unit testing macros (interactive mode, property check...)


* Wednesday
== Progress Reports and Updates ==
** Started the CTK App Launcher: http://github.com/jcfr/CTK-AppLauncher
** Discussion of generalizing execution model independent of MRML, but may wait until next hackfest
* Friday
** More progress on app launcher (almost finished)  Need to think about the GPL for statically linked binary.
** discussions of unstructured grids for command line module i/o


=== Widgets ===
=== Wednesday ===
* Julien F.
* Review of CTKWidgets and [[Documentation/WidgetPlans|wishlist]]
* PythonQt
* Wednesday
** progress on [[Documentation/ctkTransferFunctionWidget|transfer function]] editor
* Friday
** New functionality in transfer function editor
** Some new widgets from DICOM
** New Qt-based command line argument parser
** Log4Qt is now in CTK


=== Events and Communications ===
* DICOM Application Hosting:
* Patrick
** architecture of client/server web services is coming together - examples are coming soon.
* [[Documentation/Events|Inter- and Intra-process events]]
** mods to CTK build system so only need libraries and includes are only included if needed (avoid compile/link errors)
* Sascha
** will send a pointer to Lawrence for comment.
* EventBus as a Service
* DICOM test application [http://github.com/pieper/CTK/commit/304990558a522b391da7aaa31e1642f8deb37e09] [http://github.com/pieper/CTK/commit/0571b151312db2b310bf0a5dd1aa189294eeb3be]
* Wednesday
** requires change currently only in [http://github.com/pieper/DCMTK this dcmtk fork]
** patches for ZMQ and git repository
* creating new dcmtk fork in commontk that can track dcmtk.org
* Friday
* bbtk (CreaTools) merged with ctk on Jc branch - integrated with console and superbuild
** CMake'ifying the latest ZMQ - into github fork of ZMQ 
* new CTKLauncher (sets environment before starting real app)
***http://github.com/PatrickCheng/zeromq2
** will be available for any app
** Included in CTK (builds on multiple platforms)
* Changover to CTK pimpl macros to use Qt style [http://github.com/commontk/CTK/commit/bab18744b88d3166d37bdcb628389ec46c782398]
** requires cmake 2.8.1
* Command Line module switchover so slicer command line modules can be used in any ctk app
** Initial tests, more applications to come
* MAF bus with patches to work with QtSOAP (patches to QtSOAP in cmake) and how to connect map MAF signal/slots to Qt
** Sascha, Daniele and Patrick to discuss
** Removing MAF dependencies from event bus code to commit to ctk
** MAF event bus integrated with ctk Plugin event bus (to be integrated with MAF after some more discussion and testing)
* Qt application host - pick app, start/stop, listen for SOAP messages.  Also manages screen area for hosted app. 
* Should have an example tomorrow that uses server and service. 
* Some common code shared between client and server


=== Plugins, Modules ===
=== Friday ===
* Sascha
* Plugin system: [http://wiki.github.com/pieper/CTK/ctk-plugin-framework Design Document]
** Xavier: Writing a plugin for a vtk bulls eye plot as a service
** Xavier: Writing an LDAP expression filter for use in the service framework
** Sascha: Finishing the service registry for the plugin framework
** Daniele: Integrating the MAF Event Bus as a plugin -> maybe discussion with Patrick needed
* Friday
** Plugin branch is merged with master in CTK/Libs/PluginFramework


=== Interoperability ===
* Discussed and agreed on a [[Contributing_to_CTK#Git_Commit_Style | git commit style]]
* Oliver
* Pushed changes to commontk/DCMTK on github as proper fork of the offis dcmtk.org git [http://github.com/commontk/DCMTK]
* [[Documentation/Interfacing_Via_OpenGL|Interfacing systems at the OpenGL level (i.e. VTK and OpenInventor)]]
* MAF event bus and plug in now in ctk (extracted from MAF)
* Wednesday
** demo application is close to finished
** VTK/Inventor integration - basic demo working, but many integration issues being investigated
** loads plugin
* Friday
** code is in a branch on Danielle's fork [http://github.com/dgiunchi/CTK/commits/mafEventBusBranch]
** Now working to load scene graphs into VTK render windows (tested volume rendering, transparent rendering...)
* Inherit include paths from external projects added to build system
** Events, resize, etc being mapped from VTK to XIP
* Architecture of integration of command line modules into GIMIAS as example of general purpose utilities (involves moving XML parser into ctk)
** need to have generic input setting (need to be able to export image data into XIP volumes)
* CTK being integrated in GIMIAS (need to add dependencies of Qt in build system)
* (TODO: example of external application that uses CTK using a find_package)
* Application Hosting
** protocol to start and monitor applications
** finishing data exchange
** ctk host can talk with ctk hosted application
*** start/stop/resize/progress messages
*** dicom data sending and file paths are being sorted out
** currently trying to talk with xip host/app
** wsdl types are being sorted out (some intermittent windows / java / .net issues)
** working remotely Lawrence on debugging
** [[Documentation/DicomApplicationHosting | summary wiki page]]
* Discussed testing and dashboards
** ctk tests include gui testing, so linux clients need to have access to X server (possibly using Xvfb)
* ctkLauncher pretty close to working [http://github.com/jcfr/CTKAppLauncher]
* dicom query retrieve example application is now in commontk on github and is [http://github.com/commontk/CTK/tree/81897d57563348b95e63172ebcbc325963a2e1e9/Applications/Testing/Cpp enabled as a test]


=== Organization and Workflow ===
=== Next Steps ===
* Steve and Jean-Christophe
* Conventions for using git.  Ideas: [https://cirl.berkeley.edu/mb312/gitwash/index.html gitwash example], [http://www.dinnermint.org/tutorial/dead-simple-git-workflow-for-agile-teams/ dead simple example], [http://www.vtk.org/Wiki/VTK/Git vtk plans].
* Coding styles and conventions
* Dashboard issues (setting up nightly and continuous build machines)
** Dash21 now has a nightly (documentation + coverage) and continuous dashboard
* Superbuild (Jc)
** Solve problem related to MITK/CTK
** Fix bug in FindDCMTK
* Wednesday
** Work on git documentation
** doxygen coming soon to doc.commontk.org
** superbuild/CTK support for multiple applications MITK, MAF, gimias
** Now 3 machines submitting to dashboard - JJ will do mac submission, SA and SP to do windows machines.
* Friday
** Doxygen documentation is online (being built at 7:00 am Eastern time) - perhaps it can be grouped automatically based on directory structure?
** Code coverage is reported in nightly build
** More nightly test machines to be set up (builds should enable all options for better testing)
** topic forks preferred in general over topic branches (good for experiments that you may delete).
** people should be careful not to push things to the main repository that might break other people's work (in the future we may move to pull requests and have fewer people with write access to the main repos)
** "Georgetown Breadsoda Snapshot" of CTK - 0.01 pre-alpha.
** KWStyle will be set up (Jc) - use Qt style for most classes unless explicitly derived from VTK or other package
** git workflow:
*** write a wiki page on commontk.org (or link to git hub wiki) and announce to mailing list to solicit other help.
*** fork ctk on github for topic specific work, then create and publish a branch to name your project topic - give write access to your collaborators for the topic.
*** keep rebasing your fork from CTK git (when needing features) into fork while adding new functionality
*** run tests with make Experimental - or create topic-specific mycdash dashboard and point your build submissions to that dashboard
*** when finished with new functionality:
**** do final rebase and test
**** announce to mailinglist with pointer to your forked project (URL of diffs on github)
**** push to master
**** Watch continuous and nightly builds and fix any issues that arise


* Next hackfest Sept 13 - 17 in Barcelona? Bologna?  Sophia-Antipolis?
* Next Hackfest
* Also need a 'talkers' meeting
** Proposal is sometime in February in Orlando (possibly before or after SPIE)
* Need for a Talkfest
** Possibly a one or two day meeting. Even a dedicated phone call would be a good idea.
* Focus on Application Hosting
** need examples of working binaries in various languages
** it would be good for CTK to have the reference C++ implementation and contribute to the spec
** a good application hosting solution has the potential to be the WOW application of ctk
* Need better documentation and example for using ctk in other applications
* Distributing Binaries
** Still have the dependencies on non-release versions of upstream tools (e.g. VTK and DCMTK)
** need to have method for maintaining binary compatibility when distributing bug fixes, e.g. http://ispras.linux-foundation.org/index.php/ABI_compliance_checker


== Travel & Hotel ==
== Travel & Hotel ==


'''Travel:'''  
'''Travel'''  
# For flights you can use Dulles Airport (code: '''IAD''') (most international flights), National Airport (code: '''DCA''') (closest), or Baltimore Airport (code: '''BWI''') (alternative international airport but the furthest away)
 
#* DCA is about 7 miles away
*Airport
#** Travel option 1: Taxi ($25)
** El Prat (airport code: BCN). Located at 15km from the city center, is where most international flights arrive. Accessible by Train, Bus+Metro and Taxi.
#** Travel option 2: Metro blue line ($1.35 direction Largo Town, [http://www.wmata.com/rail/maps/map.cfm see map]) to Rosslyn, and then take a taxi ($10)
*** Option 1. Take the [http://www.sgmt.cat/aerobus/index.php/en/linies.html AeroBus] to "Barcelona-Pl. Catalunya" (5 eur 30 min). Take the [http://www.tmb.net/img/genplano.pdf underground] L1 red line direction L1-Fondo, from L1-Catalunya to L1-Glòries (1,4 eur 10 min). Take care of your wallet in the city center.
#* IAD is about 23 miles away from the hotel
*** Option 2. Take the taxi until Glorias shopping centre (30 eur 30 min)
#** Travel option 1: Taxi/[http://www.supershuttle.com/ Super Shuttle] ($50)
** Girona (airport code: GRO). Located at 90 km from Barcelona, low cost flights from Ryanair company arrive here. Only accessible by Bus.
#** Travel option 2: [http://www.wmata.com/getting_around/metro_events/5a%20Time%20Table_1.pdf Bus 5A] ($3-$4) to Rosslyn, then take a Taxi ($10)
*** Take the [http://www.sagales.com/pubdocs/1799_aeroport-girona-costa-brava---barcelona-%28estacio-nord%29-2010-06-14.pdf Sagales bus] (Barcelona way) to "Estacio del Nord" in Barcelona (75 min). In "Estacio del Nord" take the [http://www.tmb.net/img/genplano.pdf underground] red line L1 direction L1-Fondo, from L1-Arc de Triomf to L1-Glòries (1,4 eur 10 min).
 
*Location
** The event will occur in Communication Campus of the Universitat Pompeu Fabra, Barcelona.
** [http://cilab2.upf.edu Universitat Pompeu Fabra – CISTIB]: C/ Roc Boronat , 138, 08018 Barcelona
** [http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=C%2F+Roc+Boronat,+138,+08018+Barcelona,+Espa%C3%B1a+(Universitat+Pompeu+Fabra)&sll=41.397608,2.15538&sspn=0.052796,0.132093&ie=UTF8&hq=&hnear=Carrer+de+Roc+Boronat,+138,+08018+Barcelona,+Catalunya,+Spain&t=h&z=17 Gooogle Map location]. The building is finished, even if in the map appears in construction :-)
** Meeting room number is 52.421


'''Hotel'''
'''Hotel'''
# We are reserving a room block at the Georgetown Holiday Inn: http://www.higeorgetown.com/
 
#* Room rate Monday to Friday May 17-21 will be 169 per night: single or double
We have made a pre hotel booking for CTK in a hotel that is very close to the meeting place. We booked 10 rooms (individual or double). There’s a reduced price for UPF (15%), so you can directly contact to the hotel using the name “CTK UPF” and you will get the reduction. This reduction will be applied individually, not for a group.
#** We need to book 10 rooms to get this rate
 
#** Please sign up on the Wiki if you are attending and email me your hotel needs
To formalize this pre hotel booking you need to contact with the hotel and provide the credit card number and Expiry date. This pre hotel booking is valid until 06.09.10. If you will stay more days in Barcelona, you can request these to the hotel as soon as possible.
#* Room rate the weekend before (May 14-16) will be 149 per night: single or double
 
#* Taxes are 14.5% additional
''Details:''
# The meetings will be next door to the hotel at our research center
* Hotel booking name: “CTK UPF”
* Hotel: “Hotel Amrey Diagonal”: http://www.amrey-hotels.com/hoteldiagonal/home.php?lang=EN&c=1
* Arrival date: 13.09.10 (Monday)
* Departure date: 17.09.10 (Friday)
* Daily rate:
** 95.89 € VAT Incl. – DOBLE
** 85.79 € VAT Incl. – SINGLE
* Breakfast included
* You need to pay directly when you arrive on 13.09.10 until 18H
 
If you need further details or we can give you more support, please contact Xavier Planes Cid (xplanes at cistib.upf.edu)
 


'''Connectivity'''
'''Connectivity'''
# We will provide both wired and wireless connection
# We will provide both wired and wireless connection

Latest revision as of 10:44, 19 April 2011

Home < CTK-Hackfest-September-2010

Event pictures

This was a working meeting - we wrote and debugged a lot of code!.
Most Excellent Hosts
Happy Hackers
Cooperative Problem Solving
More Happy Hackers

Introduction

Date: September 13-17 2010

Location: Barcelona


Goal: A follow on to the wildly successful March 2010 pre-hackfest and May 2010 hackfest .

Requirements: attendees must be enthusiastic about CTK and willing to spend their time with the details of dicom, git, cmake, c++, Qt, vtk, itk, openinventor, and related technologies. People who do not feel qualified for this are politely not invited :)

Group size: maximum 20 participants so we can have a manageable working meeting. The organizing committee will invite and select participants based on input from TheTeam.

Organizers: Ivo Wolf, Steve Pieper, Stephen Aylward

Site Hosts: TBD

Attendees: (due to limited space, please contact the organizers to attend)

  1. Steve Pieper, Isomics, Inc., USA
  2. Ivo Wolf, Hochschule Mannheim and DKFZ, Germany
  3. Marco Nolden, DKFZ, Germany
  4. Sascha Zelzer, DKFZ, Germany
  5. Julien Finet, Kitware, USA
  6. Jean-Christophe Fillion-Robin Kitware, USA
  7. Xavi Planes, UPF, Spain
  8. Pedro Omedas UPF, Spain
  9. Yves Martel UPF, Spain
  10. Benoit Bleuze INRIA, France
  11. Daniele Giunchi, Italy
  12. Paolo Quadrani, Italy

Virtual Attendees (by email or phone): Lawrence Tarbox, Michael Onken, Stephen Aylward

Future Events: The organizing committee invited a group of developers to get the CTK project started and we've believe we've reached capacity for this event. Future hackfests will be announced in advance and we hope lots of people will be interested in participating. The venue and activities at future hackfests will be determined based on the number of active participants in the project.

Preparation

Developers should bring a laptop with the current CTK source code downloaded and built.

Use the CTK developers mailing list to discuss build issues and topics for ongoing work.

We plan to hold weekly phone conferences during the month leading up to the actual hackfest. Be prepared to discuss projects so we can make the most effective use of the face-to-face hackfest time.

Preliminary Agenda

Nominally 9am to 5pm each day Monday through Friday. Monday will start with a review of the topics. Anyone who has prepared material they would like to present can suggest a time slot so a detailed agenda for the rest of the week can be prepared. Unless otherwise allocated, it is expected that the time will be spent hacking, with ad hoc discussions and debugging sessions as needed.

  • Monday
    • 9am - welcome
    • Everyone should say a few words of what they want to accomplish during the week. Also state if you would like to present on a topic and lead a discussion so these can be added to the agenda.
    • Review of git methodologies (Jc, Benoit, Sascha and all)
    • Options for C++ DICOM Application Hosting implementation in CTK (Sascha and other) Presentation
    • Questions for packaging CTK in debian: 1) what to enable as 'standard ctk' 2) package name: commontk or ctk? 3) build against VTK trunk or release version? Same question for DCMTK, Qt, etc...
    • Demos/Presentation: CreatTools, DTK/MedInria, MAF Scripts
  • Tuesday
  • Wednesday
    • afternoon status update from everyone, review to-do items for the rest of the week.
  • Thursday
  • Friday
    • afternoon summary of progress and discussion of ongoing work, future {talk,hack}fests...

Topics and Projects

Pick up threads of discussion and activity from Pre-Hackfest and May 2010 Hackfest

General set of topics (attendees, please flesh this out with your own ideas!)

Schedule Talkfest

  • Pick a time and place for a talkfest in the US (perhaps at Washington University in St. Louis).

Review driving application

  • First: Define the purpose of CTK:
    • Candidate: CTK is meant to span the boundaries of current toolkits and applications. Specifically, its parts are intended to be easily integrated into current software systems and help them address software engineering challenges that impede their clinical use. We are currently focusing simplifying the challenging tasks of (1) integrating DICOM Q&R functionality into applications (i.e., thereby enabling the integration of applications into the data workflow of a clinical environment) and (2) providing clean and effective user interfaces that are appropriate for use in a clinical environment (e.g., intuitive user-interface widgets for window and level selection). Future challenges to be addressed include methods for software testing, event handling, and more.
  • Second: Define the driving application to be bundled with CTK (that demonstrates the utility of CTK).
    • "cool" application for users = "WOW!" application for computer scientist
    • Candidate: The WOW! application could be achieved by working towards three goals:
      • Goal1: Provide Qt widgets for browsing data on a PACS and downloading (Q&R) select images to local disk.
        • Should support batch download based on selected slices, series, studies, and patients.
        • Would be nice to save in another format such as NIFTI, but that is a nice-to-have.
        • Query/browse Qt widget would show results as a tree (patient, study, series, images) with optional keys (sex, etc), when available
        • Provide progress reporting of transfers
        • This would be HUGE for the community. Imagine having a small set of Qt/DCMTK widgets that combined together form a Q&R workstation. This is a great place to start sharing.
      • Goal2: slice-based view of downloaded data (data on disk)
        • Qt image viewer with intensity window/level and not much more. This is meant to be minimalistic.
      • Goal3: initiate processing on data (server-based data or downloaded data) using the dicom plug-in standard
        • This is where we can really help the community. Provide a C++ reference implementation, and some Qt widgets that help initiate calls to available services.

Organization and Workflow

  • First day will be dedicated to code organization and policies for git-based workflow.
    • expected result will be a set of procedures for dissemination to the ctk community for comment and adoption.

DICOM

  • Review of ITKv4 DICOM Plans and discussion of DCMTK and GDCM.

Widgets

  • Review status of Qt-based CTK widget developments
    • Slicer4, DTK, GoFigure (others?)

Plugins, Modules

(utilities for discovering and invoking code blocks)

Old:

  • Plugins: not-application dependent (like a java plugin that runs in firefox or internet explorer or in our case something like a registration routine that gets invoked from a host application)
  • Modules: rely on some of the API of the host application (like a loadable module that creates a custom GUI using a Qt API so it may work in more than one Qt-based application)

Interoperability

(plugin toolkits together)

  • VTK/OpenInventor shared OpenGL rendering context

Events and Communications

(run-time messaging within and among applications)

  • ZMQ
  • OpenIGTLink
  • Event Bus (MAF, Patrick's ZMQ)

Integration

(using CTK code in different applications)

  • Change the private implementation macros to behave like Qt (derivable pimples)
  • Improve unit testing macros (interactive mode, property check...)

Progress Reports and Updates

Wednesday

  • DICOM Application Hosting:
    • architecture of client/server web services is coming together - examples are coming soon.
    • mods to CTK build system so only need libraries and includes are only included if needed (avoid compile/link errors)
    • will send a pointer to Lawrence for comment.
  • DICOM test application [1] [2]
  • creating new dcmtk fork in commontk that can track dcmtk.org
  • bbtk (CreaTools) merged with ctk on Jc branch - integrated with console and superbuild
  • new CTKLauncher (sets environment before starting real app)
    • will be available for any app
  • Changover to CTK pimpl macros to use Qt style [3]
  • Command Line module switchover so slicer command line modules can be used in any ctk app
  • MAF bus with patches to work with QtSOAP (patches to QtSOAP in cmake) and how to connect map MAF signal/slots to Qt
    • Removing MAF dependencies from event bus code to commit to ctk
  • Qt application host - pick app, start/stop, listen for SOAP messages. Also manages screen area for hosted app.
  • Should have an example tomorrow that uses server and service.
  • Some common code shared between client and server

Friday

  • Discussed and agreed on a git commit style
  • Pushed changes to commontk/DCMTK on github as proper fork of the offis dcmtk.org git [4]
  • MAF event bus and plug in now in ctk (extracted from MAF)
    • demo application is close to finished
    • loads plugin
    • code is in a branch on Danielle's fork [5]
  • Inherit include paths from external projects added to build system
  • Architecture of integration of command line modules into GIMIAS as example of general purpose utilities (involves moving XML parser into ctk)
  • CTK being integrated in GIMIAS (need to add dependencies of Qt in build system)
  • (TODO: example of external application that uses CTK using a find_package)
  • Application Hosting
    • protocol to start and monitor applications
    • finishing data exchange
    • ctk host can talk with ctk hosted application
      • start/stop/resize/progress messages
      • dicom data sending and file paths are being sorted out
    • currently trying to talk with xip host/app
    • wsdl types are being sorted out (some intermittent windows / java / .net issues)
    • working remotely Lawrence on debugging
    • summary wiki page
  • Discussed testing and dashboards
    • ctk tests include gui testing, so linux clients need to have access to X server (possibly using Xvfb)
  • ctkLauncher pretty close to working [6]
  • dicom query retrieve example application is now in commontk on github and is enabled as a test

Next Steps

  • Next Hackfest
    • Proposal is sometime in February in Orlando (possibly before or after SPIE)
  • Need for a Talkfest
    • Possibly a one or two day meeting. Even a dedicated phone call would be a good idea.
  • Focus on Application Hosting
    • need examples of working binaries in various languages
    • it would be good for CTK to have the reference C++ implementation and contribute to the spec
    • a good application hosting solution has the potential to be the WOW application of ctk
  • Need better documentation and example for using ctk in other applications
  • Distributing Binaries

Travel & Hotel

Travel

  • Airport
    • El Prat (airport code: BCN). Located at 15km from the city center, is where most international flights arrive. Accessible by Train, Bus+Metro and Taxi.
      • Option 1. Take the AeroBus to "Barcelona-Pl. Catalunya" (5 eur 30 min). Take the underground L1 red line direction L1-Fondo, from L1-Catalunya to L1-Glòries (1,4 eur 10 min). Take care of your wallet in the city center.
      • Option 2. Take the taxi until Glorias shopping centre (30 eur 30 min)
    • Girona (airport code: GRO). Located at 90 km from Barcelona, low cost flights from Ryanair company arrive here. Only accessible by Bus.
      • Take the Sagales bus (Barcelona way) to "Estacio del Nord" in Barcelona (75 min). In "Estacio del Nord" take the underground red line L1 direction L1-Fondo, from L1-Arc de Triomf to L1-Glòries (1,4 eur 10 min).
  • Location
    • The event will occur in Communication Campus of the Universitat Pompeu Fabra, Barcelona.
    • Universitat Pompeu Fabra – CISTIB: C/ Roc Boronat , 138, 08018 Barcelona
    • Gooogle Map location. The building is finished, even if in the map appears in construction :-)
    • Meeting room number is 52.421

Hotel

We have made a pre hotel booking for CTK in a hotel that is very close to the meeting place. We booked 10 rooms (individual or double). There’s a reduced price for UPF (15%), so you can directly contact to the hotel using the name “CTK UPF” and you will get the reduction. This reduction will be applied individually, not for a group.

To formalize this pre hotel booking you need to contact with the hotel and provide the credit card number and Expiry date. This pre hotel booking is valid until 06.09.10. If you will stay more days in Barcelona, you can request these to the hotel as soon as possible.

Details:

  • Hotel booking name: “CTK UPF”
  • Hotel: “Hotel Amrey Diagonal”: http://www.amrey-hotels.com/hoteldiagonal/home.php?lang=EN&c=1
  • Arrival date: 13.09.10 (Monday)
  • Departure date: 17.09.10 (Friday)
  • Daily rate:
    • 95.89 € VAT Incl. – DOBLE
    • 85.79 € VAT Incl. – SINGLE
  • Breakfast included
  • You need to pay directly when you arrive on 13.09.10 until 18H

If you need further details or we can give you more support, please contact Xavier Planes Cid (xplanes at cistib.upf.edu)


Connectivity

  1. We will provide both wired and wireless connection