wmclifford / lazybones-ng

A simple project creation tool that uses packaged project templates.
Apache License 2.0
6 stars 1 forks source link

Bintray being sunsetted this year - where to store templates #7

Open wmclifford opened 3 years ago

wmclifford commented 3 years ago

Just stumbled upon this today - Bintray is going away, and existing data will be removed. Presently, lazybones uses Bintray as the hosting space for its project templates. Do we continue to try and host them online? If so, where? If not, do we only support local (that is, on the developer's machine) publishing? Do we switch to using standard Maven or Ivy style publishing and let the user push to whatever service they use?

grv87 commented 3 years ago

My company uses Lazybones internally. If there were local repositories only, we wouldn't use Lazybones on team/company level at all - it just makes no sense. A sole developer may use whatever tools he wants, but collaborative work requires shared templates and network repositories.

For our use case, standard Maven/Ivy publishing would be sufficient.

And we don't use Bintray and never used. For two reasons: 1) We need custom templates to support our specific processes and environment, and such templates of course can't be found in Bintray 2) Direct connection to Bintray is mostly prohibited, shared libraries from internet go via security review into internal proxy repositories. IIRC Lazybones' support for local repos (aliases) is limited: it can't detect latest version. Current Lazybones' tight binding to Bintray was always cumbersome, and if it supported just any Maven/Ivy repository, it would have been much better from the very beginning.

So, I'm not even sure what templates are available on Bintray now and whether they are up-to-date. But I believe they should be saved somewhere, at least for history. It's somewhat ungraceful move from JFrog to just turn off Bintray and annihilate work results of millions of people. Comparing to GitHub Archive Program, for instance.

wmclifford commented 3 years ago

@grv87 Agreed - no idea why JFrog made that decision, but I figure it's best to have a plan in place before it happens so nothing is lost, at least for this project.

I am leaning towards the Maven/Ivy approach, and will probably implement that once I get a chance to do so. It just makes more sense to me anyway as the templates are meant to be versioned, they are zip archives, and that basically describes that type of repository, at least in its most basic terms. I am still in the process of working my way through the codebase to have a full understanding of what is presently implemented before I go about making any significant changes to the current design. I have enough significant changes on my hands as I am converting the sources to Kotlin and working on adding UTs and ITs. :)

As for what is presently on Bintray, I believe that, yes, the templates are "up-to-date", relatively speaking. Last update to the upstream master branch was quite some time ago, and I believe that the templates are published as part of the build process. So they should be the latest available, but they are old. As for third-party templates, I have not looked at the Bintray repository to see what specifically is there, if anyone else has contributed and published there. If there are any, they will most definitely need to be backed up so that they are not cast to the void when Bintray is shut down.

jest commented 3 years ago

@wmclifford For what it's worth, please also consider GitHub/GitLab (or plain git maybe?) repositories. They give you all the benefits (requirements?) that you mentioned - versioning, zip archives - with the addition of easy template authoring: publishing (git push), versioning (branches, tags, etc.) and creating variants (GitHub forks, git repo clone). Not to mention possibility to use private or corporate repositories.

A lot of other tools around generating content from templates took that approach and do not regret it: Giter8, Cookiecutter or Antora.

grv87 commented 2 years ago

@jest, nice idea! No need to zip anything. Just commit, tag and push. And no need for separate file (or more complex) servers.