Dear council members, I've completed a first phase of development of RomaJS (a placeholder name) and I would like to both give you an update and seek volunteers for the next phase of work. *The prompts for your contributions are highlighted in bold below (bring friends!).* The code is on GitHub: https://github.com/raffazizzi/romajs 1. Summary of work: I've have been writing this Redux / React http://redux.js.org/docs/basics/UsageWithReact.html application by focusing on data operations first, user interface second. Briefly, the application is now capable of: - reading in an ODD file from the web or from disk - reading in a source file (ie p5 subset in JSON format) - add and remove modules - add and remove elements - write an updated ODD to disk (This is actually only mocked for user testing at the moment.) - provide basic UI components for these operations (working towards what's been sketched in the wireframes https://docs.google.com/presentation/d/1sUESuY9pF3DkHoQMJJjrVMV2SPFQYE1YqmGr... ) 2. Tests Each operation is comprehensively tested. I've aimed at creating a solid testing infrastructure that is at the core of the application development. I have created two wiki pages to help understanding and developing tests: - a list of test scenarios https://github.com/raffazizzi/romajs/wiki/Test-scenarios - a short guide on how to write tests https://github.com/raffazizzi/romajs/wiki/How-to-write-tests *Please look at the list of test scenarios: have I not tested something?* You'll see that the list includes different ways of including/excluding modules and elements in ODD. *Have I covered all the mechanisms for doing so? What's missing?* We could discuss this on this email or on the wiki. It would be awesome if then someone besides me would write new tests that result from the discussion! 3. Parsing ODD In order to avoid using a heavy DOM processor, and to make it possible to include ODD directly in the application state, I've opted to convert ODD to JSON. At first I was using an off the shelf library that served me very well until I had to serialize back to XML and realized that mixed content was all screwy... So I wrote my own library here: https://github.com/raffazizzi/squash-xml-json The library is quite central to the success of RomaJS and while it has some tests, it needs more extensive testing. *Would anyone like to help test and develop it? Or perhaps know of viable alternatives I've overlooked?* 4. Getting started with the UI I've created basic UI components to do the operations described above. Here is the current very bare version: https://raffazizzi.github.io/romajs/ *Please try it out with as many (canonicalized) ODD files that you have lying around. Does it do what you expect? Do you get back XML that matched what you wanted? **Please break it (hopefully it will take a few hits first).* 5. Next steps I think I may focus more on UI development now (as per wireframes https://docs.google.com/presentation/d/1sUESuY9pF3DkHoQMJJjrVMV2SPFQYE1YqmGr...). Getting started with a CSS framework library and nail down general functionality up to the point where we are now. At the same time, I'd like to get started on operations to change elements (basically creating elementSpec[@mode="change"]). *This would be a good time for others to step in the development process: others could start writing operations and tests for changing elements while I focus on UI. Or viceversa. The current module/element operations and tests provide examples of how this all works (and of course I'd be happy to explain stuff).* 6. Finally: decision tree At the F2F we started talking about a possible "decision tree" as a way into RomaJS. I started a document https://docs.google.com/document/d/1r33QbY7O0HqOHvTxZtOq_-MrYqtIE572YqPEY3Jr... with a list of possible questions to the user; James commented on it. *Please comment and add your additions if you can. I would be thrilled if others would want to explore this further as a mind map, etc. so that it's nicely planned out before starting development on a decision tree feature.* As development gains momentum, I hope to write similar reports to this one at least once monthly. Raff