Distribution is pretty straightforward, the process I follow after 'build' is complete:
## Release Cassandra CQLSH You must have the maintainer privilege of `https://pypi.org/project/cqlsh/` 1. verify package locally with pip pip install -e . 2. Test upload on testpypi twine upload --repository testpypi dist/* pip install --index-url https://test.pypi.org/simple/ cqlsh 3. prod upload twine upload --repository pypi dist/* Regards, Brad On Thu, Aug 10, 2023 at 3:27 PM Patrick McFadin <pmcfa...@gmail.com> wrote: > Dinesh raises some good points. > > If we do adopt this, there will be non-zero overhead of the release > process. This is fine but we need volunteers to run this process. My > understanding is that they need to be ideally PMC or at least Committers > on the project to go through all the steps to successfully release a new > artifact for our users. > > Which was addressed in the proposed changes part of the CEP: > > > - A document detailing procedures for releasing to PyPI.org. This > document should include details on: > > > 1. How release to PyPI can be integrated into the build process. Can > this be done with automation? > 2. How will credentials, permissions and ownership of packages on PyPI > be managed? > > > - > > My first thought was automation and integration into the build release. > > Can you briefly outline the steps that need to be followed for a PyPI > release, Brad? > > Patrick > > > On Wed, Aug 9, 2023 at 2:54 PM Abe Ratnofsky <a...@aber.io> wrote: > >> I think it would be good for the project to have an official PyPI >> distribution, and the signal from users (40K downloads per month) is a >> clear indication that this is useful. Timely releases would help us get >> future improvements to cqlsh out faster, and moving this to an official >> distribution would protect users against any changes in this volunteer >> effort in case something happens in the future. >> >> +1 (nb) >> >> -- >> Abe >> >> On Aug 9, 2023, at 1:33 PM, Brad <bscho...@gmail.com> wrote: >> >> HI Dinesh, >> >> You are correct that the scope of this CEP is practical, narrow and >> limited to having an official distribution of CQLSH on the official Python >> package repository. Cassandra end-users, who use the CQLSH command line, >> would benefit in several direct ways: >> >> - A timely distribution of new CQLSH versions on the official Python >> package repository aligned with Apache Cassandra releases >> - A trusted distribution overseen by Apache Cassandra instead of >> third party maintainers. Today, there is only trust-based faith that the >> PyPI distribution of CQLSH matches the Apache Open Source one. >> - A lightweight distribution of CQLSH clocking in at 110KB vs >> downloading a 50MB tarball. >> >> Perhaps those are modest goals, but I would suggest they are big wins for >> the Cassandra user community. If you haven't tried it yet, please run '*pip >> install cqlsh*' on your desktop and see how nicely it works. Indeed, the >> return-on-investment of effort here should be really high, as the work is >> mostly already done, it's just run from a private repo at >> https://github.com/jeffwidman/cqlsh and has been maintained continually >> since 2013. >> >> Other initiatives such as subdividing the project(s) or re-writing the >> REPL in another language would be out-of-scope. It would be entirely >> appropriate to have a separate discussion on those two topics, if you wish >> to start that discussion. >> >> The process and degree of overhead required to publish to PyPI will >> require some discovery and discussion. Ideally, it would be possible to >> automate it. That is definitely a topic we need further input from the >> engineers involved in the build-release process. >> >> A pre-CEP discussion of this proposal was started by Jeff on the mailing >> list back in early July, see >> https://lists.apache.org/thread/sy3p2b2tncg1bk6x3r0r60y10dm6l18d. >> >> Regards, >> >> Brad >> >> On Wed, Aug 9, 2023 at 3:31 PM Dinesh Joshi <djo...@apache.org> wrote: >> >>> Brad, >>> >>> Thanks for starting this discussion. My understanding is that we're >>> simply adding pip support for cqlsh and Apache Cassandra project will >>> officially publish a cqlsh pip package. This is a good goal but other >>> than having an official pip package, what is it that we're gaining? >>> Please don't interpret this as push back on your proposal but I am >>> unclear on what we're trying to solve by making this official >>> distribution. There are several distribution channels and it is >>> untenable to officially support all of them. >>> >>> If we do adopt this, there will be non-zero overhead of the release >>> process. This is fine but we need volunteers to run this process. My >>> understanding is that they need to be ideally PMC or at least Committers >>> on the project to go through all the steps to successfully release a new >>> artifact for our users. >>> >>> I would have liked this CEP to go a bit further than just packaging >>> cqlsh in pip. IMHO we should have cqlsh as a separate sub-project. It >>> doesn't need to live in the cassandra repo. Extracting cqlsh into it's >>> separate repo would allow us to truly decouple cqlsh from the server. >>> This is already true for the most part as we rely on the Python driver >>> which is compatible with several cassandra releases. As it stands today >>> it is not possible for us to update cqlsh without making a Cassandra >>> release. >>> >>> If you truly want to go a bit further, we should consider rewriting >>> cqlsh in Java so we can easily share code from the server. We can then >>> potentially use Java Native Image[1] to produce a truly platform >>> independent binary like golang. Python has its strengths but it does get >>> hairy as it expects certain runtime components on the target. Java With >>> Native Image we make things very simple from a user's perspective very >>> similar to how golang produces statically linked binaries. This might be >>> a very far out thought but it is worth exploring. I believe GraalVM's >>> license might allow us to produce binaries that we can incorporate in >>> our release but IANAL so maybe we can ask ASF legal on their opinion. >>> >>> Giving cqlsh it's own identity as a sub-project might help us build a >>> roadmap and evolve it along these lines. >>> >>> I would like other folks to chime in with their opinions. >>> >>> Dinesh >>> >>> On 8/9/23 09:18, Brad wrote: >>> > >>> > As per the CEP process guidelines, I'm starting a formal DISCUSS thread >>> > to resume the conversation started here[1]. >>> > >>> > The developers who maintain the Python CQLSH client on the official >>> > Python PYPI repository would like to integrate and donate their open >>> > source work to the Apache Cassandra project so it can be more tightly >>> > and seamlessly integrated. >>> > >>> > The Apache Cassandra project pre-dates the adoption in Python 3.4 of >>> > PyPI as the default package manager. As a result, an unofficial >>> > distribution has been provided by a group of developers who have >>> > maintained the repository there since October 2013. >>> > >>> > The installable version of CQLSH on PyPI.org allows end users to >>> install >>> > a cqlsh client with PIP - no tarball or path setup required. I.e., >>> > >>> > $ pip install cqlsh >>> > >>> > This popular package has 50K downloads per month and is today >>> maintained >>> > by Jeff Wideman and Brad Schoening. The PYPI package is updated upon >>> > every major release by simply repackaging the CQLSH that ships with >>> > every Cassandra release. >>> > >>> > CQLSH PyPI Repository: https://pypi.org/project/cqlsh/ >>> > <https://pypi.org/project/cqlsh/> >>> > >>> > >>> > This CEP Proposal suggests incorporating PYPI as a regular part of the >>> > Cassandra release process and making the CQLSH project on PYPI an >>> > official distribution point. >>> > >>> > The full CEP can be reviewed at: >>> > >>> > Wiki: CEP-35: Add PIP support for CQLSH >>> > < >>> https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=263425995 >>> >. >>> > >>> > Jira: CASSANDRA-18654 >>> > <https://issues.apache.org/jira/browse/CASSANDRA-18654> >>> > >>> > >>> > But in brief, the proposal will: >>> > >>> > * Add PyPI.org as an official distribution point for CQLSH >>> > * Allow end users to install CQLSH with simply 'pip install cqlsh' on >>> > MacOS, Windows and Linux platforms. >>> > * Donate the modest amount of existing configuration files by the >>> > authors to Apache Cassandra >>> > * This only involves the Python CQLSH client, no changes to >>> > distribution of Java server side code and tools are involved. >>> > >>> > We welcome further discussion and suggestions regarding this proposal >>> on >>> > the mailing list here. >>> > >>> > Regards, >>> > >>> > Jeff Widman & >>> > Brad Schoening >>> > >>> > [1] https://lists.apache.org/thread/sy3p2b2tncg1bk6x3r0r60y10dm6l18d >>> > < >>> https://lists.apache.org/thread.html/ra7caa1dd42ccaa04bcabfbc33233995c125c655f9a3cdb2c7bd8e9f7%40%3Cdev.cassandra.apache.org%3E >>> > >>> >>> >>