adamkewley / jobson

A platform for transforming command-line applications into a job service.
Apache License 2.0
256 stars 20 forks source link

ubuntu:16.04 is a bit old #97

Closed frafra closed 1 year ago

frafra commented 2 years ago

https://github.com/adamkewley/jobson/blob/b5c014a20719dc410af68f18347a96a559618f67/jobson-docker/Dockerfile#L1

I would have sent a PR already, but I think it would be better to have two different Docker images (one for nginx, the other for jobson), and I also think that the Dockerfile should be self-contained, instead of copying files that need to be generated externally, so I prefer to open some issues before moving forward :)

adamkewley commented 2 years ago

w.r.t. ubuntu version, agreed - the base image is too old. Hopefully, this can be upgraded pretty easily.


For splitting into multiple docker containers, it's possible, but there's a usability/legacy story behind the current mess.

The earliest iterations of jobson were developed as separate repositories (jobson, previously SUEDE in Gaia; and jobson-ui). Those were published separately, with separate docker guides. Those guides followed the usual docker manta of "each service should have one Dockerfile".

Practically, this meant that the earliest deployments of jobson involved something like 2 images, one jobson one (a custom openjdk-based image) and one standard nginx one (that uses a volume mount or similar for mapping the UI, with relevant portmapping between the containers). This approach was generally considered "best practices", dev-wise, because everything was separated and the code dependencies etc. were minimized.

However, when I was pushing for a 1.0 release (/w YouTube videos, etc.), I conducted some ad-hoc usability tests with friends, researchers, and other developers (e.g. by asking them to deploy their own jobson instance). Those tests indicated that most of the target demograph (e.g. researchers, hobbyists) weren't entirely comfortable with setting up multiple inter-connected (via portmaps, etc.) docker containers. The testing also revealed a more general problem, which was that users generally hated the separation of the server part of Jobson from the UI part.

So, based on that feedback, I spent a few weeks just focusing on creating a build for jobson that builds everything (server, UI, documentation, packages, docker, etc.) end-to-end. That build code (incl. the Dockerfile) is probably the messiest part of the source code right now--it was written in a very short amount of time to specifically fulfill the purpose of making it easier for downstream users to get up and running--but it fulfills a fairly important role for users who don't care about the separation between the UI and the server.


The above is a roundabout way of explaining that:

So I'd suggest, for your improvements:


Another niggle.: I personally have almost no time to develop jobson. I maintain it occasionally (and, clearly, feel passionate enough about its history to write lengthy issue replies), but my development interests are currently focused on fully-integrated native applications (C++, Rust, etc.), rather than web stack development. There has been no development funding to support jobson, etc. for around 5 years now. I mostly only work on it whenever I have a spare day here or there ☹️

So any support is definitely welcome, and if you're worried that I might disagree or bounce something then feel free to keep asking questions in issues etc. - the time taken to write this is probably still an order of magnitude less than the time taken to develop, integrate, document, and ship something.

adamkewley commented 2 years ago

821eae5b updates the base image from 16.04 to 20.04

I'll need to double-check that this doesn't break anything internal to jobson before minting 1.0.14, it looks fine but needs investigation.

adamkewley commented 1 year ago

Closing this,

Thanks for the input, but the project has has a Jobson is effectively unmaintained notice for 10 months now, and has had no further changes since then, so I am closing all issues and archiving the project until further notice.