This story board concentrates on the way a developer would contribute an extractor or a format converter to the Brown Dog service. It includes setup of the development environment, testing, packaging/description and submission.
I am leaning more toward having the developer begin from the template project, i.e. an empty or bare-bones extractor or converter. We can include all the docker files that are necessary for the runtime environment with the template project, making it easy install/start/stop whatever is needed via docker-compose.
Question: Is there any way to make the docker container can describe itself in more detail and maybe include some sample files, such that a single upload will capture everything we need for submission of the contribution?
- Developer visits the Brown Dog developer/contributor web page, which provides an overview of what and how they can contribute. (TODO: create contributor web page)
- Developer installs prerequisites: possibly a development VM, Docker
- Developer downloads extractor / converter template project. (TODO: need a template project for converters)
- Developer runs docker-compose to create development environment with docker containers (TODO: Docker compose YAML for complete BD environment) (TODO: Any missing Docker containers)
- Includes running Clowder instance, Polyglot instance, basic development tools
- Maybe even an IDE configured and ready to go? (I'd assume any developer will have their own IDE -Gregory Jansen)
- Includes a bare-bones extractor container ready to be modified for a new tool (with comments suggesting where to edit) (Rui Liu has started this)
- Contains a bare-bones converter ready to be modified for a new tool (with comments suggesting where to edit)
- Developer installs tool, creates interface script(s)
- Adds sample input file(s)
- Example extractor: imagemagick edge detector
- Example converter: imagemagick jpg to ico converter
- Smruti Padhy and Inna Zharnitsky will assist Gregory Jansen here
- Developer creates dockerfile
- For extractors this should contain only the tool, its dependencies, and the extractor
- For converters this should contain the basic Polyglot setup, ideally only the Software Server, the tool, its dependencies, and the converter interface script
- Developer submits tool to Tools Catalog (using BrownDog account)
- Interface script(s), dockerfile, sample input, sample output
- Through web interface
- Through script in development environment (probably the ideal way)