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
Release Process #44
Comments
@aerostitch agree 9.0.0. We can certainly tag versions @MasterOdin I don't suppose you have tested that release process actually works right with this repo? Come to that, does it actually work at all, since it still has website stuff in it by my quick perusal. If there are significant fixes needed to the old AAP system that (AFAIK) nobody knows, rather than work it out, maybe its better to change to a modern build/release system, like meson. |
Maybe the 1st step would be to define what we expect to happen when a release is built so that we can define what is needed. To me, the website stuff should be managed in a separate repo so a release here should not affect the doc (maybe it can create a PR in the doc repo to update the latest release version and point to the changelog, but I don't think it should be more). So basically the only things left I see in the release process would be:
I see in the Makefile.in that the man pages are regenerated but maybe that could be just a build done and attached as a tarball to the release? But I honnestly doubt that anybody still installs asciidoc manually unless we decide to port it to pypi but that's not ready yet. We could also make the Do you see anything else? |
The website is a whole 'nother problem. Because its a gh-pages website it is a branch, so its actually inside the repository at the moment. Updating it is manual I believe, run That won't update THE Asciidoc website though, since the No the docs (and therefore the website source) should not be in another repo, they should be with the code so that one pull request updates both in sync. Asciidoctor currently has them separate and is planning to combine them IIUC. The website product should only be in the gh-pages branch. Whichever build system is used, it should make the website pages, but not automatically as part of the build. It doesn't seem sensible to have a separate build process for the website.
Ahh, I missed
Agree, I see the build as being simply to update embedded version stuff and make the distribution tarball. Asciidoc itself runs quite happily without installation so no "build" process is needed for that. But don't you need the ROFF manpages made for the tarball?
Should be done by the build
Which is sadly a manual step that "somebody" has to do.
Well, the updated stuff from the build above should be made into a PR which is then merged. Then the changelog PR (which is a single commit) is merged and that is what should be tagged. Not sure what you mean by "populate the release description".
Which brings us circularly back to the website 😁 |
The website product could be in another repo and it wouldn't affect the release process too much, as I'd like to make the whole thing just run through Travis anyway.
I've looked through the AAP sources and they're all relatively simple that it shouldn't be too hard to convert them to straight makefiles (or a higher level build tool like meson, but we certainly don't need to use AutoTools for this, just make), or even just simple bash scripts depending on what a "release" constitutes or if anyone actually needs the build tools for certain tasks (especially if more automation through Travis is done for releases). AAP should 100% be dropped though.
That's actually the source for the the gh-pages, even though a large number of the pages are "symlinks" to other pages within the repo. It's also used for a couple of the tests. However, we can setup the build of the website and subsequent pushes to gh-pages to be hooked up to pushes to master or tagged releases within Travis, which I'd advocate for.
I've tested parts of the build as I've played around with both make and a setup.py for the repo, and would be confident I could certainly produce a full setup for the build as part of Travis-CI. Just need to know what you'd constitute as a "release".
It doesn't, but easy enough to fix. |
Nope we regenerate the man pages from the asciidoc format. using the Makefile. :)
There are plenty of tools out there to take care of that automatically! :) I agree with @MasterOdin and I don't think the release process for the actual tool should be more than:
To me the tasks about updating the website and advertising on whatever communication channels/social medias you have available for asciidoc are satellites tasks that comes post-release. The website could be re-generated with each commit via travis, this way we wouldn't have to think about it. |
At this current stage, I don't think an automated step is necessary for the changelog. I'll make a PR later today to start the changelog for 9.0.0. I'll also go through the various *.aap and makefiles within the project and give a description of all of the different tasks that they do (in a separate issue) so that we can make steps towards unifying it all under something that isn't aap. |
Ok.
Never found any that were useful, a changelog isn't just a list of commits in Git for developers, its a human list of changes for users. And its usually ordered by something like "New Features", "Changes", "Fixes", "Incompatibilities", not commit ordering. Still AI is improving every day :)
Yes, from a packagers point of view. But the "release" process from a project point of view isn't just tagging and making a tarball. Non-technical things are also all part of the release process, and for the project just as important, that includes documentation webpages, and dissemination ... including pinging packagers. 😁 BTW thanks for maintaining Asciidoc packages for ages and helping get this set up to be packaged.
Ok, maybe the version number should be in a separate file independent of build system, not in the AAP files.
Thanks.
It seems a nice system, its just that nobody uses it AFAIK so there isn't any expertise about, and its developer is busy with his other minor project, called "vim" :) Autotools isn't really designed for a Python project, but if it works at least its supported by most of the distros build farms. |
Yeah, it looks kind of neat, but outside of this project and in some brief looking around some vim stuff, I've never seen A-A-P used which I think makes for a good reason to switch to something that more people are likely familiar with and also will probably already have installed (make). I'd like to point out that I'm proposing switching to just make, and not requiring anything else (I'd use CMake over autotools, which I think has aged really poorly) as there's no compilation step happening here, nor any sort of linkage of dynamic libraries or the like which is really when those higher level tools over make shine. |
I think thats fine, so long as it produces the relevant products, both *x tarball and windows zip file and runs on any platform (this means be careful of GNU make extensions). I guess targets default (ie update versions), "dist", and "check" are the main ones, for a Python program that runs from its source directory I don't see "install" and "uninstall" being very useful make targets. |
If you want to play nice with package managers (like Homebrew), then a |
Ok, so install I guess, although really what goes where is up to the distribution, asciidoc doesn't care. And given that distributions don't agree what goes where it is making the Note that because Asciidoc is Python, the "runs from source dir" needs no make or anything, even in a raw git clone asciidoc.py and a2x.py should run correctly. |
Usually it's only Java projects that take such a "some assembly required" approach to installation. :)
IMHO, from the user's perspective, the fact that Asciidoc is Python is an irrelevant internal implementation detail. What the user cares about is that
If you can create a Makefile that follows the GNU Makefile conventions, then you will have reasonable defaults, and standard customization hooks for all of the distribution-specific paths that all common distributions care about. The autotools toolchain supports this. I can help with PRs to do this if you're interested. Speaking as a package maintainer, if you don't have a |
Agreed.
It was my understanding that you thought that Ummm, overall I think @apjanke @MasterOdin and I are mixing up which "makefile" we are talking about. Certainly I was confused at least once. I am proposing a project tool to patch the version number and create a distribution tarball and windows zipfile and website and so on to replace the AAP script. It doesn't have This is a tool for Asciidoc team to help with release, it could just as easily be a Python script as a makefile, but a makefile has the advantage that it can ensure patches, webfiles etc are remade consistently if any file changes, without rebuilding everything. So its an improvement on AAP in that way. My comment about avoiding GNU make extensions was aimed at ensuring it met the multi-platform requirements noted above. The tarball still has the traditional On the other hand the Windows zipfile does not have a configure or makefile since it just unzips, which I guess is why the
We don't have a "product", in one of the rare cases where I agree with RMS, let me paraphrase him, "we make the software because we want to, and we make it available for others to use, we are happy if they find it useful, but we do not gain from their use, we are sad if they do not find it useful, but we do not lose if they stop using it", something to remember about volunteer projects in this age of corporate sponsored open source with "products" whose success is judged by "user numbers". [sorry, end rant] |
One thing I'm curious about is how does distros handle distribution/installation of python projects like numpy, scipy, or some other example that has a mix of python and data files that have a setup.py and don't have a makefile and can be installed via pip, but can also be installed via apt, yum, etc.? Just so we have a point of view of "what would happen if we forwent AAP and make altogether for the more standard python approach" for distribution. |
The ones I like are the ones that rely on PR instead of commits. The idea is to add relevant labels on the PR so that they are categorized properly in the changelog with the tool.
I think the simplest thing to do would just use setuptools and build a setup.py like every other python projects and then push it via pip. This way we don't reinvent the wheel and if someone wants to install it on any platform without package manager, then one uses pip.
The distro have complete tooling for that to make it almost totally transparent. I think we should just go ahead and do that. Looks like the cleanest way to go here and a lot of python people are already familiar with it, so easier to maintain in the long run. |
Ok, that makes more sense, I had only found projects that essentially used the git history as the changelog, something to look at later.
Ok, thats great, I didn't want to only have a Python literate install method (pip) since many of the Asciidoc users are likely to be writers, not Pythonistas :) I totally agree that using the standard Python mechanisms as the only (well, except windows) install mechanism within the project is the way to go, and if it makes distros work easier, even better. @apjanke does homebrew work like that for Python apps too? Now all we need is to have a script that does the version patch (or even better, do away with it somehow) and a script that tests, makes the windows zipfile, and (future) website. It could even be Python, which has portable zip built in so no need for a separate tool. |
If this repo is moved towards more "proper" python setup, then this would be become easier to do, but for now, a minimal makefile that has a "make version" path or something is probably best for now. Same with a "make test" that just executes "test/testasciidoc.py" is also easy, but the explicit here is that the makefile is totally a developer tool and not anything a normal end user would have to really worry about using. They would be pushed to use setup.py (either through pip, their package manager, or via a
These tasks are best suited I think towards Travis (for the generating of a zip and building the website) as these can be hooked up to run on pushes to master, tagged releases, etc. (with the ability to append files to tagged releases as well). |
Oh, thanks. You're right. Sorry for any confusion. I'm just coming at this primarily from a package maintainer's viewpoint, so I've got biases.
You are right; I think I've gotten confused here too. As long as the distribution tarball has the traditional After reading @elextr's comments, I think you can ignore all my comments, because I didn't understand the staged makefile you're talking about here. |
/rant mode engaged True. True. But don't you want it to take over the world? As the developer, you're uniquely positioned to make this software more portable and easily installable than any packager is. Not saying you should. Not saying you gotta. But don't you wanna? /rant mode disengaged And if you don't, no worries. This software is still useful, and package managers can adapt. |
As I understand it, Homebrew handles Python-implemented applications by:
This is for stability and isolation purposes, so that To make this work, (I think) Homebrew uses standard Python installation mechanisms, but wraps them in an application-installation-specific root directory. The documentation for Homebrew is at: The main thing to note here is that (IMHO) AsciiDoc counts as a Python "application", not a Python "library", in Homebrew terms. |
I think it would probably help splitting this issue up into a couple of actionable items of what it is that we want done here. I finally had time to sit down and look at what the project has and is currently doing with regards to both make (via the included common.aap:
main.aap
./doc/main.aap:
./examples/website/main.aap:
The actual installation steps of asciidoc have always been handled by the Of the files in At this point, I think trying to move to a more "pythonic" setup.py is not feasible without making much larger changes to the asciidoc source as it does a lot of wonky things around the concept of trying to locate asciidoc and its resources on the filesystem. |
So my plan here is to translate @elextr please let me know if you're alright with the target names, want any changes, etc. I've opened #81 as a sort of test of what this translation process might look like, though as I go along, will probably be going back and refactoring old targets, variables used, etc. |
With 9.0.0 out, the release process I followed was:
Are there steps that people think are missing here, or is this good? I think making a |
Maybe: And how about updating the version to |
GH will automatically create a new tag as part of a release so it's not really necessary to manually do that. Going the route of creating and pushing a tag would be to then I guess generate a GH release automatically (via GH action), but the end result is the same. |
Gotcha. Nevermind then. |
Documented the process at https://github.com/asciidoc/asciidoc-py3/wiki/Release-Process. Agreed on the |
Moved from closed #41 #41 (comment) #41 (comment) #41 (comment)
The text was updated successfully, but these errors were encountered: