= !SasView Code Camp V = == Introduction == The fifth !SasView Code Camp was held at the [http://neutrons.ornl.gov Spallation Neutron Source], Oak Ridge, Tennessee from 4th to 11th October, 2016 Local arrangements were made by Mathieu Doucet with details on the [wiki:CodeCampV/Planning planning page]. == Initial Goals == The management team met on Monday afternoon just prior to the Code Camp to work on a proposed set of goals for the Camp based on the [https://github.com/SasView/documents/blob/master/SasView%20Roadmap%202015-11-24.md published roadmap] but informed by the many developments and activities that have taken place since the last official update. For example the ESS contribution through its SINE2020 funding to work on refactoring the GUI, an activity targeted for 2019 in the roadmap, makes moot some of the smaller GUI enhancements envisaged earlier. Further, the final release of !SasView version 4.0, completing the work from the [wiki:CodeCampIV previous Code Camp in Delft], was released just prior to the code camp. The plan was presented to the developers and after a brief disscussion the primary goals for the code camp, which will be translated to the next update to the [https://github.com/SasView/documents/blob/master/SasView%20Roadmap.md roadmap], were agreed: * TBA from list of tickets * Add a new corfunc perspective * Added file converter to support multifile data * Integrate SESANS into the !SasView GUI * Fix Save Project when constrained fits are used * Continue work on GUI refactoring (and the clean separation of UI from computational code). * Work on increasing model coverage looking at non-overlap with SASfit models. * Begin work refactoring/clean-up of Batch fitting (to include batch operations on roi such as box sum and slices). * Finish model documentation review and formatting * Add missing documentation and documentation of new functionality * Work on improving infrastructure (build systems, 64 bit/Anaconda on all platforms of build machines, trac, licensing, etc) These tasks build on the work done for release 4.0 and are aimed at a 4.1 release in late 2016/early 2017. The major items for this release are the integration of SESANS analysis, improvements to the Save Project functionality, inclusion of some models from !SasFit, enhanced documentation and improved reliability. == Participants == || Mathieu Doucet (ORNL) ||Andrew Jackson (ESS) || Paul Butler (NIST) || Steve King (STFC) || || Ricardo Ferraz Leal (ORNL) || Piotr Rozyczko (ESS) || Jeff Krzywon (NIST) || Richard Heenan (STFC) || || Wim Bouwman (Delft) || Wojciech Potrzebowski (ESS) || Dirk Honecker (ILL) || David Mannicke (ANSTO) || || Jurrian Bakker (Delft) || || || || == Progress and Outcomes == This code camp brought 13 developers together to work for 7 days on the [http://github.com/sasview/sasview SasView] and [http://github.com/sasview/sasmodels sasmodels] code, documentation, and development infrastructure. One new developer, Dirk Honecker from ILL, joined the project. As usual the camp began with introductions and updates from all the partner labs. NIST indicated that !SasView usage has grown significantly among its users and staff, a trend that should only continue with the new features available in release of 4.0. This collaborative community approach to analysis software development is key to NIST’s ability to provide maximum data analysis support for the long term and the hope is to expand the number of staff able to contribute beyond the current 3 developers as time goes on. ANSTO have been focused on delivering data reduction for two new beam lines - Kookaburra and Bilby - but they want to be able to support their users who analyse their data using !SasView. ISIS were happy to report that they had somehow managed to hire a summer undergrad to work on the code this summer who was extraordinarily productive providing many fixes and new features to the project. Several people asked about the possibility of hiring him again and it was suggested that was not out of the realm of possibility. From the ILL, Dirk Honecker introduced himself and said that his primary interest was in getting magnetic and oriented models working properly. SNS has users who use !SasView and the primary interest from the facility is in incorporating sasmodels into their web-based data work flow, requiring some work on the sasmodels API. Delft has done some work on the SESANS project but not progressed as much as it would have liked on the code since last code camp. Their hope is that they can get an initial access to modelling SESANS data from within the !SasView GUI at this code camp. Finally, ESS have continued the work laid out in the SINE2020 project - the first new specific funding for !SasView since the UTK NSF grant ended mid 2012 - focusing on GUI redesign for !SasView, !SasFit integration work and performance enhancement of sasmodels. While not slated for deployment in the next release, the work on GUI refactoring and SASfit model integration, tasks receiving the attention of the full time !SasView developers at ESS, continued at this code camp in preparation for release 5.0. As part of that effort, some review discussions were undertaken and a few other developers began to help with those tasks both to speed up the development to meet our target release but more importantly to start learning the new code base for a smooth transition as the time approaches. To focus the work for the code camp, the management team made proposed we target late 2016 for a v4.1 release of the features discussed and agreed. In order to achieve this, the development team was placed in [wiki:CodeCampVWorkingGroups groups] focusing on: * New GUI * SESANS analysis integration * Sasmodels bug fixing and enhancement * !SasView bug fixing and enhancement * Documentation & Training * Developer Infrastructure By the end of the code camp, most of the main goals had been achieved. SESANS functionality was working in the GUI - both transforming SANS models automatically and calculating SESANS function directly. The save project functionality had been improved and repaired. The models from SASFit that do not currently overlap with sasmodels had been identified and work started on shipping them to the sasmodels marketplace for users to download. Refactoring of oriented cylinder-type models had begun to improve the behaviour when using orientation distributions. The documentation was broadly reviewed, then corrected and significantly expanded and enhanced to keep pace with the large number of new features and improved existing ones. As can be seen from the list of tickets that were closed or worked on during the code camp, there was a lot of work on stability improvements and bug fixing. The work that had been done by Lewis O'Driscoll at ISIS over the summer was integrated into the main code base, adding a Correlation Function perspective, and a data converter for file formats that put Q and I in separate files. Perhaps the most exciting addition however is the sasmodels [http://http://marketplace.sasview.org marketplace] that Lewis wrote which is now live and has the potential of changing the way new models are developed and shared. At the same time, several infrastructure enhancements needed to support the efficient development and deployment of !SasView were made: some of the build servers were upgraded to deploy with scipy 0.18 (which proved to be more difficult than anticipated); a test build server for a 64bit windows build was set up and it was agreed that 4.1 will be the last 32bit Windows release; the Trac server was properly integrated with Github so that code browsing works and commit messages can add comments to and close Trac tickets. The developers all became comfortable with a branch-work-merge/pull request workflow, rather than committing all changes to master. This approach will hopefully allow us to make more frequent releases as we can choose to not include code in master that is not yet stable enough. Overall, very good progress was made towards the 4.1 release goals. === Code Stats === Over the camp [[TicketQuery(changetime=2016-10-03..2016-10-11&status=closed,group=milestone,desc=1,count)]] tickets were closed. Over the period of the camp, ten developers contributed to the [http://github.com/sasview/sasview !SasView code repository]. There were 113 commits to all branches and master had 344 files changed with 79,668 additions and 39,499 deletions. There were contributions from 10 developers to the [http://github.com/sasview/sasmodels sasmodels code repository]. There were 52 commits to all branches and master had 1 pull request and a total of 46 commits. 57 files changed with 1,462 additions and 550 deletions. == Next Steps == All the developers will continue to work on the tickets that are assigned to them. The aim is for anything that is going to make it into 4.1 to be ready for merging with master by the end of October or mid-November at latest. It is interesting to not the ever increasing productivity and efficiency of the code camps, an indication of the growth and maturation of the development community. == Photos == [https://flic.kr/s/aHskJrKEMo All photos from the code camp on Flickr] [[Image(https://c2.staticflickr.com/6/5751/30181537281_e0590738ec_n.jpg)]] [[Image(https://c5.staticflickr.com/9/8419/30232050876_82ae34ae08_n.jpg)]] [[Image(https://c8.staticflickr.com/9/8560/30267014415_7605539c24_n.jpg)]] == Ticket Summary == === Tickets Closed === [[TicketQuery(changetime=2016-10-03..2016-10-11&status=closed,group=milestone,desc=1,format=table,col=resolution|summary|owner|reporter)]]