Skip to content
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

Updated Release #1366

Closed
girlpunk opened this issue Feb 9, 2024 · 16 comments
Closed

Updated Release #1366

girlpunk opened this issue Feb 9, 2024 · 16 comments

Comments

@girlpunk
Copy link

girlpunk commented Feb 9, 2024

Is it possible to update the latest "released" version of proselint? I can see that quite a number of updates and bugfixes have been made since the last release, including for support of Python 3.12.0. This is causing some upstream projects that make use of proselint (such as megalinter) to fail after upgrading to Python 3.12, even though the version in git is able to support it.

@Nytelife26
Copy link
Member

Nytelife26 commented Feb 9, 2024

This will be resolved following a release after the refactor PR #1361 is merged.

However, if necessary, I should be able to make a release in the meantime.

@echoix
Copy link

echoix commented Feb 9, 2024

Great initiative and investigation! Of course if there are no releases, we can't be better then them ;)

@Nytelife26
Copy link
Member

Of course if there are no releases, we can't be better then them ;)

I am not really sure what this is trying to say, to be honest, but I'll roll with it. I acknowledge that proselint needs updated releases, and we're working on it.

I just hope the credentials will still work. I lost contact with the project owner many years ago.

@mavit
Copy link
Contributor

mavit commented Mar 18, 2024

I think there's value in an interim release for Python 3.12 compatibility, assuming the refactor could take a while.

@Nytelife26
Copy link
Member

I think there's value in an interim release for Python 3.12 compatibility, assuming the refactor could take a while.

It would appear the refactor will indeed take a while. I will ensure everything is stable, and then try a new release.

@Nytelife26
Copy link
Member

Nytelife26 commented Apr 23, 2024

We are arriving at issues I am no longer able to fix. The token for codecov seems to have expired, and I lack the administrative access to the repository required to update it. Normally, I would not consider releasing under these conditions, but nothing has changed since the most recent commit, in which all tests passed.

As such, until I can restore continuous integration to a working state, assuming the credentials for PyPI remain useable, 0.14.0 may be the final release for some time. I hope this is a workable solution for you all. I assure you I have been trying my best to contact Professor Suchow, and we received a response once, but no follow up when we tried to arrange a meeting.

Update: Bust. The previously used release system is no longer supported, and I do not have access to generate a PyPI API token. That pretty much seals the fate of the project, unless either I hear from Professor Suchow, or enough interested people remain to warrant forking the project. For now, I would recommend installing proselint as a git dependency on the tagged release. If necessary, I can upload the generated release artefacts from the CD run.

@Nytelife26 Nytelife26 added this to the 1.0.0 milestone Apr 23, 2024
@sigmavirus24
Copy link

@Nytelife26 I don't need a release but saw you close an issue I had commented on years ago and was looking at the project.

https://hynek.me/articles/ditch-codecov-python/ should help with code coverage

https://peps.python.org/pep-0541/#how-to-request-a-name-transfer has instructions for you to request that PyPI admins give you sufficient privileges to release

@Nytelife26
Copy link
Member

@Nytelife26 I don't need a release but saw you close an issue I had commented on years ago and was looking at the project.

It's always fun to know someone that contributed a lot to the tooling you use worked on the project once upon a time.

Your suggestions are much appreciated. I will at the very least make an effort to contact them :)

@sigmavirus24
Copy link

Also if appears Jordan Suchow is now a professor at my alma mater so I can reach out to the department head if need be

@Nytelife26
Copy link
Member

Also if appears Jordan Suchow is now a professor at my alma mater so I can reach out to the department head if need be

If you wouldn't mind, I would appreciate that. Maybe give it a week or so, as I sent an email to what appears to be an updated email address last night, and Professor Suchow has recent commits on his profile.

Thank you for your help, anyway.

@sigmavirus24
Copy link

Feel free to ping me when you want me to reach out. I'll definitely forget if I need to wait a week or anything

@Nytelife26
Copy link
Member

there is, in the meantime, an updated release on github, if the projects you mentioned are able to use git dependencies. this should be sufficient while i wait on a long-term solution.

@Nytelife26
Copy link
Member

@girlpunk I have news for you. As of today, I have all the requisite permissions to make things like interim releases, following a meeting with Professor Suchow.

Here you go: https://pypi.org/project/proselint/0.14.0

@Nytelife26
Copy link
Member

Nytelife26 commented Jul 11, 2024

Since this issue appears to involve a few parties interested in further releases of proselint, I will post this here.

As an unfortunate product of recent developments, I will not be able to release the refactor, even once it is where I would like it to be. My options are as follows:

  • refactor everything myself from scratch, likely with a substantially different approach. many simplifications would be made along the way, like removing the largely unused topic system
  • port the entire codebase
    • there are a few options for this, one of which is typescript, but i fear since node is not commonly packaged with unix systems that would be unpopular
    • another of which is typescript with rust, with the eventual aim of converting at least a significant portion of core functionality to rust via napi-rs
    • and the most severe and time consuming of which would be pure rust

I would love to receive some community input on which direction you'd all prefer I take the project in, because at the end of the day, end users will be the most inconvenienced by a refactor as major as porting to another language. However, if that approach is chosen, I can guarantee better code quality and performance, along with more functionality, as it would be easier to add a language server down the road in either language. I can also build a wider audience for contributions, because I know more people that work with both of those languages. If we elect to stick with Python, I'll make an issue to announce that Proselint is open to new maintainers, because having a bus factor of 1 is a bad situation.

In any case, I thank you all for sticking around, even after so many years of inactivity. It's nice to see such an old project has not been left behind. Wherever we end up, I will be excited to finally get to work on updating and adding rules, which are the real point of all this. Special thanks to Professor Suchow on that last part, for sending me a copy of Garner's Modern English Usage, so we can continue to bring better prose to the masses.

@sigmavirus24
Copy link

@Nytelife26 I'm ~vaguely interested in the future. It seems I stopped using proselint at some point but was still subscribed to an issue that got revived years later. I say that as a "My opinion is not something you need to listen."

As an unfortunate product of recent developments, I will not be able to release the refactor, even once it is where I would like it to be

Is there somewhere to read up more about the refactor you're mentioning here? What is the justification? What's the desired end state? What is "done"?

port the entire codebase

Why is porting the codebase necessary to satisfy the above requirements? You mention typescript + rust, but why not python + rust? Why is python not desirable here?

I would love to receive some community input on which direction you'd all prefer I take the project in, because at the end of the day, end users will be the most inconvenienced by a refactor as major as porting to another language.

So, yes that will inconvenience some folks, but also the project's license means that people can continue to install the last Python version from PyPI and they don't need to "upgrade" if Typescript is not useful to them. They can fork it. They can do whatever. You aren't providing any guarantees or warranties. In other words, let me turn the questions you asked around:

  • It seems like Python is not your strong suite, but you want a tool like proselint to exist. You like the heuristics already there and you're willing to work on it. Is that accurate?
  • It seems like Typescript is your preferred language. Is that accurate?
  • You seem to have interest in Rust. Is that accurate?
  • You're maintaining proselint for free in your own time.

From my perspective:

  • You shouldn't feel obligated to continue to maintain this project
  • You shouldn't feel obligated to do anything in this organization if it's inconvenient
  • You should feel empowered to write something in whatever languages you're most familiar with and will make you happy and not suck away too much of your own time
  • You shouldn't feel like you owe anyone anything. You didn't create the project. You didn't abandon it. You tried to revive it, but sometimes it takes getting into that to realize it's not easy or tenable to do that.

@Nytelife26
Copy link
Member

Is there somewhere to read up more about the refactor you're mentioning here? What is the justification? What's the desired end state? What is "done"?

You can find the continuation of the refactor at #1371. Relevant issues are pinned (#1373, #1374, #1375). The initial effort and conversation occurred at #1361. There is some other relevant discussion in #1372.

Why is porting the codebase necessary to satisfy the above requirements? You mention typescript + rust, but why not python + rust? Why is python not desirable here?

I would be okay with continuing to use Python, but because I can no longer use most of the work the refactor is based on out of respect for Ingmar's wishes to withdraw and not have any of his contributions merged, it would be very difficult to redo in a way that is sufficiently different to his contributions. Now you mention the combination idea, though, I could get around that by porting much of the core functionality to Rust, and continuing to use Python for the rest.

So, yes that will inconvenience some folks, but also the project's license means that people can continue to install the last Python version from PyPI and they don't need to "upgrade" if Typescript is not useful to them. They can fork it. They can do whatever. You aren't providing any guarantees or warranties.

This is true, but this vastly improved version will not be available on PyPI for aforementioned reasons. That's why I'm incorporating my ideas and some quality of life changes into the Python version before I make any other changes - so people can use it that way, if they want the new functionality.

  • It seems like Python is not your strong suite, but you want a tool like proselint to exist. You like the heuristics already there and you're willing to work on it. Is that accurate?

This is partially correct. I actually love Python; it was my first language, and I have been using it for over 7 years now. That's not to say it's my best language, but I'm more than comfortable enough to create things with it. I am, however, willing to do whatever necessary to ensure Proselint continues in some form. That said, the direction of Python's ecosystem and type system by comparison to the other languages I know feels quite strange to me in some places.

  • It seems like TypeScript is your preferred language. Is that accurate?

It is one of them, yes.

  • You seem to have interest in Rust. Is that accurate?

I think it's more than an interest, but yes. Both TypeScript and Rust are, nowadays, my preferred languages for any new projects.

From my perspective [...]

Your input is much appreciated. Ultimately, I volunteered myself for the role, and I now have all the necessary permissions to maintain and continue to publish it. I like to hear from people that use it to establish which approach would work best, and linguistics is a passion of mine. I don't see myself ceasing to work on it - it just so happens that this particular set of circumstances has become quite an ordeal. However, once we're past them, I'll be able to do a lot more maintenance, and even start adding rules again, which is exciting to me.

I want Proselint to be successful again. Whether or not that's feasible remains to be seen, but I do love a challenge. Once again, thank you for your support and advice.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants