Package: wnpp
Severity: wishlist
Owner: adoyle <alexddo...@gmail.com>

* Package name    : due
  Version         : 1.3.1
  Upstream Author : Alex Doyle <alexddo...@gmail.com>
* URL             : https://github.com/CumulusNetworks/DUE
* License         : MIT
  Programming Lang: Bash
  Description     : Wrapper tool to create and run Docker container software 
build environments.

Dedicated User Environment (DUE) is a framework for creating preconfigured 
build/development
environments in Docker containers. It serves two primary purposes:

1 - Maintains configurations for creating Docker images for any build 
environment, using
any architecture of any Debian based release it can find an image for.
 For example, the Open Network Install Environment 
(https://github.com/opencomputeproject/onie)
 currently builds on Debian 8 and 9, but requires some Backports packages, and 
a program that
 isn't packaged for Debian. DUE maintains a configuration to get all of that 
added when the
 Docker image is created so ONIE can 'just build'. Apart from not requiring the 
end user to
 have to configure the build environment, it also allows all developers to use 
the same build
 environment when debugging - regardless of where they happen to be.

2 - It goes beyond 'just using a Dockerfile' by using a launcher application 
that supplies
runtime configuration to Docker for the Docker images it has created. Apart 
from reducing
typing and being smart about the containers that it runs (ex: containers 
building Debian
packages mount the host directory _above_ the build directory so the resulting 
.debs aren't
stored in the container), DUE preserves the user's identity in the container by 
creating an account
for them with their user ID, and mounting their home directory so they can 
access their .config files.
This creates a less intrusive development environment when the user is in a 
build/test/debug
cycle.

While the above are the most important features DUE provides, there are a lot 
more ways
it makes using different development configurations easier, which are 
documented in
the Readme.md (https://github.com/CumulusNetworks/DUE/blob/master/README.md)

I also created a tutorial video using DUE to build ONIE as part of a talk I 
gave at
OpenCompute here: https://www.youtube.com/watch?v=-5onRbZA0QQ&feature=youtu.be

History:
 DUE came out of work I did at Cumulus Networks to provide build environments 
for
 teams of engineers building packages for Cumulus' Jessie and Buster based
 releases of Cumulus Linux. When I took over as ONIE Project Lead, I saw the 
opportunity
 to use it to create a standard way of setting up build environments for ONIE 
and any other
 software projects. Cumulus saw the value in any developer being able to use it
 and DUE was open sourced under the MIT license.

Q&A:
Why is this package useful/relevant?
 See above.

Is it a dependency for another package?
 No. It does require a version ( Debian or upstream ) of Docker to work though.

Do you use it?
 All. The. Time.  Building packages at work, building ONIE, and if I just need
 an environment to quickly test configuration changes.
 This 'dogfooding' has provided insight into fixing program behaviors that
 initially seemed okay, and then became irritating through repeated use.

If there are other packages providing similar functionality, how does it 
compare?
 I looked around for quite a while before starting on DUE ( why reinvent the 
wheel?),
 but couldn't find anything that had the combination of:
  - Consistent, user friendly interface
  - Easy build environment configuration
  - And support for Debian derivatives
  ...that I was looking for.
 
 I think the closest software to this would be using schroots, and while they
 can be functionally the same, the end user experience, especially for users 
that
 are new to Debian ( or are trying to build code that partially exists outside
 the Debian ecosystem ) has less of a learning curve, and is faster to set up.
 
How do you plan to maintain it?
 I will be updating the upstream source and doing the work to make sure it is
 Debian compliant.
 
Are you looking for co-maintainers?
 Not at the moment.
 
Do you need a sponsor?
 Yes, as I am not a Debian Developer ( in the official sense, anyway :) )
 
Thank you for your consideration,
Alex Doyle

Reply via email to