Everyone,
Here's a better description of what we are doing in ICE. This is just a big brain dump with a lot of moving parts for now. We welcome community engagement on this too!
A year or so ago I came up with the ideal of a simple "Developer" menu in ICE because I really like the developer menu that you can find in MS Office products. We had a brilliant request from students to automate the provisioning process for ICE bundles in Eclipse for development since doing it by hand requires a lot of knowledge about the project and how to work with PDE apps. We also had some requests from others to add support for cloning and provisioning some of the frameworks that we use, all of which are written in C++. This dev menu has been really handy for ICE, but where we really see the most growth for it is with natively compiled scientific software - C, C++ and Fortran applications - for modeling and simulation.
Obviously doing this as a menu won't work in the long run, so I asked Torkild about his experience building the DAWN marketplace. It would also be far better to do this type of work with a package manager than building out our own infrastructure for pulling and building, especially since we need to compile source code. This is why I mentioned Spack (
https://github.com/LLNL/spack) in my email to Philip.
Our vision is that 3rd party dependencies come from Spack and projects under development are pulled directly from the repository. Right now developers can add their projects through an extension point, but we would have to change that in an actual marketplace app. So, if someone decides to download and do development on, say, "MyCode" on Linux, then MyCode would be checked out from the repository and provisioned as a project. We would build all of its dependencies - to the extent possible - using Spack, configure it to point at those dependencies, and finish its build.
What about other operating systems? In that case we would use Docker and do the same procedure as above in the container. Alex and I have been testing this and it works well. It is still possible to do development inside that container using PTP Synchronized projects, which also works very well. Alex wants to do this on Linux as well, but I would like to have the option to do completely native builds on Linux too. In addition to solving our cross-platform problems, we could in theory configure the Docker containers so that they could be used in cloud environments or, possibly, on HPC systems that support containers.
Here are some use cases we have in mind:
* Build apps based on common frameworks ("the modeling and simulation" use case)
* Improve development on common frameworks themselves
* Build native Linux binaries of 3rd party dependencies for other Science projects. For example, what if someone wanted to use OGRE with EAVP?
* Configure "basic" scientific software in Docker containers for cloud deployment
We would greatly appreciate your feedback!
Jay