Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved versioning #212

Open
abremges opened this issue May 18, 2017 · 11 comments
Open

Improved versioning #212

abremges opened this issue May 18, 2017 · 11 comments

Comments

@abremges
Copy link
Contributor

Triggered by bioboxes/camiarquikr#1

To me, it seems that there is no (easy) way to pull a biobox for a specific tool version? I propose to somehow implement this.
I'm aware that you can specify the biobox version via its commit hash, but there seems to be no obvious mapping of tool version <-> biobox version.
Also, if the biobox is automatically built from the master, then we have no real control over which tool version is packaged (unless we build manually).

What am I missing?

@abremges
Copy link
Contributor Author

On a related note, I propose that bioboxes should print both version numbers (tool and container build) upon execution.

@fungs
Copy link
Member

fungs commented May 18, 2017

IMO tool versions could translate to docker tags but that's quite specific to Docker and makes it hard to support other backends in the future.

For support of meta-info, it would be quite easy to implement specific command line arguments, for instance that would mean to create a string in a standard text file with the template container which I created some while ago. This Debian-based template is much more modular and and structured than what most current bioboxes are built upon, but unfortunately it has not been used lately. It is also easier to set up as all yaml data is available via global shell variables to the programs.

https://github.com/bioboxes/bbx-base

@fungs
Copy link
Member

fungs commented May 18, 2017

However, I would rather prefer to not have to call a container for metadata but instead deliver that via the biobox specification and link that to the biobox.

@michaelbarton
Copy link
Contributor

michaelbarton commented May 18, 2017 via email

@michaelbarton
Copy link
Contributor

michaelbarton commented May 18, 2017 via email

@michaelbarton
Copy link
Contributor

michaelbarton commented May 18, 2017 via email

@michaelbarton
Copy link
Contributor

michaelbarton commented May 18, 2017 via email

@fungs
Copy link
Member

fungs commented May 19, 2017

True, documentation increases usage but before we should come to an agreement for all the images created by the bioboxes team, to adopt a common way and base image.

The mentioned options are for convenience to make implementation of new images easier. The bioboxes specs do not cover some parts like internal folder structure and I've tried to come up with a unique bioboxes namespace in UNIX style. The options help to coordinate these kind of things. I don't think they have to be part of the bioboxes spec, they are just the sugar which you get when using the template image. They need not be part of the specs because they are only relevant for how the container works internally, for instance variables, but the caller does not need to know about it, he calls a black box with bioboxes syntax.

@michaelbarton
Copy link
Contributor

michaelbarton commented May 30, 2017 via email

@abremges
Copy link
Contributor Author

Maybe I'm missing the point, but is there any reason why https://github.com/bioboxes/biobox-minimal-base won't work as such a common starting point?

@fungs
Copy link
Member

fungs commented May 31, 2017

@abremges: Good point. The code for both these is partially redundant. I did not know about the second but it seems we have several base images. That is, what I meant to address with my comment.

The former is two years old and has

  • a name-spaced UNIX-like file system structure /bbx/[...]
  • one-pass YAML to shell variable parsing
  • some additional resource variables, e.g. for the number of computing cores
  • a modular task and parameter specification system (each task or parameter is represented by a single text file which is easy to inherit from other base images)

The latter is younger and has

  • functionality for input validation
  • a script to download and unpack an archive?
  • a command line YAML parser which goes through the input YAML for every parameter that you want to parse

So I guess it would be supereasy to implement two on top of one or to unite them into a single image.

@michaelbarton: concerning the command line parameters, these are completely optional and only require that a task name does not start with two dashes. However, the provided options are very useful when you want to find out where parameters are mapped internally and for debugging your container in the development. I think that providing them will have more benefits than removing them because they are not part of the specification. As I said, they should not be specified because they are very specific to the implementation of the base image.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants