1. Introduction describe the purpose of the document describe the problem being solved: reconstruction, simulation, trigger make it clear that we are not solving the analysis problem 2. Different metrics for optimization -- maximize througput -- minimize latency 3. Properties of the reco/sim/trigger problem These are to distinguish our problem from the analysis problem -- use events as a whole (not sure if this is true) -- use the object model view of the event data (as opposed to the tabular view common in analysis) -- command-line driven (as opposed to interactive) -- coordination of large-scale processing (so provenance tracking is valued) -- touch full datasets (is this part of large-scale processing?) 4. Requirements -- technology constraints (grid, HPC, cloud platforms) -- use of computing node resources (memory, coprocessors, storage) -- use of networking resources 5. Software engineering issues (desired qualities of our implementation, to help assure we are meeting functional requirements) composibility configurability debugability encapsulation-ility extensibility instrumentability lifetime-of-code-ability maintainability portability programmability reusability scalability sustainability testability 6. Time periods of interest -- HL-LHC era -- DUNE startup -- Icarus? 7. Granularity of processing -- What are the processing elements? Services, tools, algorithms, modules, conditions -- What is scheduled? -- What is managed? -- What are the supported concepts? -- Single-pass or multi-pass processing? -- What are the customization points of the program? (plug-in models, definitions of data types) 8. Granularity of detector readout data -- Is the Event as a universal container old? 9. Configuration -- a point of connection with the workflow management system 10. Data context (non-event data, ancillary data) -- calibration data -- conditions data -- geometry -- handling anything to do withunderstanding "event" data 11. Monitoring program performance 12. Monitoring physics performance -- data quality monitoring 13. Modernization -- best practices -- use of new C++ language features -- multi-language programming 14. What high-level primitives ought to be supported? -- map-reduce -- scatter-gather -- stencils 15. Interfaces to external "frameworks" (e.g. visuaization) 16. What other working groups are impacted by our WG? 17. Using pieces of the framework outside of the framework context -- address problem of testing individual components