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

Adopt under the cucumber org? #1059

Open
mattwynne opened this issue Sep 29, 2022 · 23 comments
Open

Adopt under the cucumber org? #1059

mattwynne opened this issue Sep 29, 2022 · 23 comments

Comments

@mattwynne
Copy link

We've had some feedback from within our community that they're worried about contributing to Behave because they're not sure whether the project is maintained anymore, and whether their changes would be merged.

I know Behave is pretty stable, but I can also see there are some PRs open that have languished for a few years. I also know how much work it is to maintain an open source project!

I wanted to extend an offer to invite Behave to move under the github.com/cucumber/ organisation, similar to what happened with Godog a few years ago (although hopefully this time without the maintainer stepping down! 😄 )

The aim would be that this move would attract some new attention to the project, and enable us to find additional people willing to carry some of the burden of maintenance.

What do people think?

@blaisep
Copy link

blaisep commented Sep 30, 2022 via email

@xrg
Copy link

xrg commented Oct 1, 2022

This project is dead already. No release since 2018. Any attempt to resurrect it would be better than the current state.

@bittner
Copy link
Member

bittner commented Oct 7, 2022

This Project Is Maintained

This project is dead already. No release since 2018.

This project is certainly not dead. It's in popular use, and the main branch has all the latest advancements.

If @jenisys as the maintainer decides to not release a package that he is not 100% confident with then that is an unpleasant (for most) but safe choice (for everyone). If a release were out there that breaks everyone's workflow that would be even worse. – Ask yourself: Would you forgive Jens if he released a package that makes you unable to complete your daily work? Unlikely.

You Can Install The Latest Version

Let me reiterate: You can install any version of behave from this repository using Pip easily, e.g.

# latest version (from main branch)
python -m pip install git+https://github.com/behave/behave#egg=behave
# a tagged version, see https://github.com/behave/behave/tags
python -m pip install git+https://github.com/behave/behave@v1.2.7.dev2#egg=behave
# generic form
python -m pip install git+https://github.com/behave/behave@<git-sha-or-branch-or-tag>#egg=behave

Rest assured, I'm with you in wishing for more frequent releases, but no releases on PyPI is maybe better than broken ones. Newer versions of the code can always be installed directly off GitHub.

That's one of the great advantages of Free & Open Source software.

Ack, It's Hard To Contribute

Yet still, I acknowledge, it's particularly hard to contribute on this project. I'm not 100% sure why Jens has such a hard time accepting others' contributions. For what I feel it seems hard for him to trust solutions that don't come from himself – and it's certainly correlated with a lack of time (e.g. to dedicate yourself to understanding a contribution).

Personally, I do have permissions to merge PRs, but I very rarely make use of that power, and if I do it's usually for trivial contributions. I don't wont to betray Jens' trust. I feel it's better that I'm part of this project (as a last resort) than kicking myself out by unaccepted behavior.

@jsa34
Copy link

jsa34 commented Oct 7, 2022

Perhaps better, then, would be a new, green-field project under the Cucumber project group to create a python solution that uses the "native Cucumber components" as much as possible.

If it starts out as a collective endeavour from the beginning, hopefully it will avoid the difficulties of having a single maintainer having the onerous task of managing all the incoming requests and change approvals themself.

It seems like there are a number of people willing to create a python solution, so I don't think there would be a lack of interested parties to support development.

@xrg
Copy link

xrg commented Oct 7, 2022

I've been consulting customers that have an absolute policy on that: stable releases only. That is 1.2.6 , no exceptions. And I can myself tell many stories of release engineering, even left a company myself on the argument of not honoring community contributions.
A "development" cycle that lasts 5 years is not a sign of health. Even more if this is marked with a minor number yet refactors major functionality and breaks the API.
See, this project is not just a "toy". It would be a win-win situation if major customers were able to rely on it and use it for verifying high-stake applications. Behave has been drifting away from that since that last stable release.

@blaisep
Copy link

blaisep commented Oct 10, 2022 via email

@mikedlr
Copy link

mikedlr commented Oct 13, 2022

I would be interested in helping a native cucumber project

Behave is great, fits well with a bunch of python things, is well known and has a bunch of support out there. Breaking it or starting anew would be a real shame. I would want any "native cucumber project" to start from a fork of behave.

@intirix
Copy link

intirix commented Oct 13, 2022

I totally get the desire to not break people. It is very respectable and I think we all appreciate that. It doesn't sound like 1.2.7 will have backwards compatibility any time soon, though. I guess the question becomes, is 1.2.7 stable enough to be used in it's own right? If it is, then maybe a compromise is to use a roll out strategy that doesn't have a drastic impact on people. Instead of releasing behave-1.2.7, would it be possible to release behave2-2.0.0? Anyone with a non-pinned version of behave will not break. They may break when they change their dependency to behave2, but that is something that have to choose to pull in. The adoption of behave2 would give the maintainers the time to respond to any unforeseen issues.

@glenn-barker
Copy link

I second @intirix's opinion above. If 1.2.7 introduces breaking changes, then it should absolutely not be released as 1.2.7 as that would violate semver and cause a huge headache, I get that. So why not just call it 2.0.0 and ship it?

For the record, the issue that @bittner linked above, #763, is one I opened, and the reason for the issue is that the "latest" docs are describing features that exist only on 1.2.7, but 1.2.7 is not actually released. So however you spin it, calling 1.2.7 the "latest" is incorrect and the docs are misleading at best, wrong at worst. If 1.2.6 is the latest official/supported/stable version that's been deployed to PyPI, then for all intents and purposes 1.2.6 is "THE" version people will use.

Having the ability to install any arbitrary version from GitHub is a small comfort, as @xrg rightfully pointed out, since many orgs and teams won't mess with beta/preleases in their CI systems (assuming they even know about the 1.2.7 beta, most people will probably just use the "latest" PyPI release and look no further.)

At the end of the day I don't have too much of a preference about what the releases are actually called or when they get out, but I do think it's important that all facets of the project (including the docs and the PyPI deployments) at least agree on what the "latest" version actually is.

@The-BDD-Coach
Copy link

@bittner You said "the main branch has all the latest advancements" - that is largely true, but:

  • Behave uses a custom parser that has some bugs and doesn't support the latest Gherkin syntax. The Cucumber organization now publishes official parsers in many languages, including Python.
  • Behave doesn't (natively) support Cucumber Expressions, and there is real value in using those - not the least being a VSCode plugin that requires Cucumber Expressions in order to provide auto-completion.
  • Behave doesn't support the Cucumber messaging protocol, which means that it isn't compatible with the variety of reporting tools that are available to other Cucumber versions and variants. My clients really want those sophisticated reporting tools.

I have helped clients get a great deal of value from using Behave; I value it and have the greatest appreciation for @jenisys, for his hard work in creating it and offering it to the community as open source.

That said, I think that, unless we have significant help from Jens to pull Behave apart and rewrite it to use the official Cucumber code, we will probably be better off starting over. I didn't say 'from scratch' because @mrkaiser has suggested that we could start from PyTest and reuse a lot of code.

If we can find someone to lead and architect that project, then like @blaisep I would be interested in helping.

@mikedlr
Copy link

mikedlr commented Nov 14, 2022

@glenn-barker hows about we just do that, making it clear that this is beta code. This is a specific thing that FOSS licensing is designed to encourage. Depending on how @jenisys feels about this we can do it under a different name so that nobody can get confused or we can do it under the same name but with very clear 2.0.0-alpha1 type versioning (sermver compliant or not depending on what we are trying to signal) so that

@The-BDD-Coach Behave's Gherkin parsing has, until now, been a superset of Gherkin that had certain advantages. Can the official parsers accept options to cover all of Behave's previous and possible future behavior?

@blaisep
Copy link

blaisep commented Nov 14, 2022 via email

@mattwynne
Copy link
Author

mattwynne commented Nov 14, 2022

I have helped clients get a great deal of value from using Behave; I value it and have the greatest appreciation for @jenisys, for his hard work in creating it and offering it to the community as open source.

That said, I think that, unless we have significant help from Jens to pull Behave apart and rewrite it to use the official Cucumber code, we will probably be better off starting over. I didn't say 'from scratch' because @mrkaiser has suggested that we could start from PyTest and reuse a lot of code.

If we can find someone to lead and architect that project, then like @blaisep I would be interested in helping.

💯

My motivation is to:

  1. ensure the Python community has an actively-maintained, best-of-breed Cucumber implementation.
  2. respect all of the work that Jens has invested into Behave.

For me, the ideal thing would be to keep the Behave "brand" even if there was some kind of "Behave v2" (or perhaps v3) rewrite, but that's not my decision. Perhaps in the meantime we could forge ahead with recruiting that "someone to lead and architect" and starting to sketch out what it would look like, whatever it ends up being called.

Writing a Cucumber is kindof a write of passage for many of us, and a lot of fun now that we have so many building blocks already done. I'm no pythonista but I'd certainly be happy to facilitate and support where I can.

Any volunteers?

@blaisep
Copy link

blaisep commented Nov 14, 2022 via email

@bittner
Copy link
Member

bittner commented Nov 14, 2022

I feel, what you all are saying is, "we want the behave project to be more active". More lively collaboration, no gatekeeping, a continuous flow of progress. Not a fork. Not if it could be easier, if it could be avoided. Right?

It would be time for @jenisys to join the discussion and talk us into his point of view. Explain his picture of the future.

@blaisep
Copy link

blaisep commented Nov 14, 2022 via email

@mikedlr
Copy link

mikedlr commented Nov 14, 2022

Well I'll note that there are 22 unmerged to 260 merged pull requests on behave which looks pretty good to me, so I'd also say there's a definite "please don't break what isn't broken" part here. I've also found Jens responsive in situations of behave bugs / strangeness in the past so there are two things

  • please don't break behave
  • please don't break Jens.

A new, less complete cucumber implementation would be lots less useful than a better working version of behave and might divide the community. On the other hand, ensuring that python behave was a feature complete cucumber implementation seems really useful.

fpokryvk pushed a commit to NetworkManager/NetworkManager-ci that referenced this issue Mar 6, 2023
Stable behave is years old by now, latest tagged commit in its main is a
bit better at 1.5 year old as of today. Let's switch to it to see if
there are any problems.

Links:
  * behave/behave#1030
  * behave/behave#1059
  * behave/behave#855 (comment)
fpokryvk pushed a commit to NetworkManager/NetworkManager-ci that referenced this issue Mar 6, 2023
Stable behave is years old by now, latest tagged commit in its main is a
bit better at 1.5 year old as of today. Let's switch to it to see if
there are any problems.

Links:
  * behave/behave#1030
  * behave/behave#1059
  * behave/behave#855 (comment)

MR: https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci/-/merge_requests/1346
fpokryvk pushed a commit to NetworkManager/NetworkManager-ci that referenced this issue Mar 21, 2023
Stable behave is years old by now, latest tagged commit in its main is a
bit better at 1.5 year old as of today. Let's switch to it to see if
there are any problems.

Links:
  * behave/behave#1030
  * behave/behave#1059
  * behave/behave#855 (comment)

MR: https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci/-/merge_requests/1346
fpokryvk pushed a commit to NetworkManager/NetworkManager-ci that referenced this issue Aug 3, 2023
Stable behave is years old by now, latest tagged commit in its main is a
bit better at 1.5 year old as of today. Let's switch to it to see if
there are any problems.

Links:
  * behave/behave#1030
  * behave/behave#1059
  * behave/behave#855 (comment)

MR: https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci/-/merge_requests/1346
fpokryvk pushed a commit to NetworkManager/NetworkManager-ci that referenced this issue Aug 3, 2023
Stable behave is years old by now, latest tagged commit in its main is a
bit better at 1.5 year old as of today. Let's switch to it to see if
there are any problems.

Links:
  * behave/behave#1030
  * behave/behave#1059
  * behave/behave#855 (comment)

MR: https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci/-/merge_requests/1346
fpokryvk pushed a commit to NetworkManager/NetworkManager-ci that referenced this issue Aug 4, 2023
Stable behave is years old by now, latest tagged commit in its main is a
bit better at 1.5 year old as of today. Let's switch to it to see if
there are any problems.

Links:
  * behave/behave#1030
  * behave/behave#1059
  * behave/behave#855 (comment)

MR: https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci/-/merge_requests/1346
fpokryvk pushed a commit to NetworkManager/NetworkManager-ci that referenced this issue Aug 8, 2023
Stable behave is years old by now, latest tagged commit in its main is a
bit better at 1.5 year old as of today. Let's switch to it to see if
there are any problems.

Links:
  * behave/behave#1030
  * behave/behave#1059
  * behave/behave#855 (comment)

MR: https://gitlab.freedesktop.org/NetworkManager/NetworkManager-ci/-/merge_requests/1346
@Johnlon
Copy link

Johnlon commented May 2, 2024

Writing a Cucumber is kindof a write of passage for many of us, and a lot of fun now that we have so many building blocks already done. I'm no pythonista but I'd certainly be happy to facilitate and support where I can.

@mattwynne Matt would the Cucumber compatibility tool kit help to direct work?

@The-BDD-Coach
Copy link

@Johnlon I think this thread has become obsolete; Kostya Goloveshko has forked Pytest-BDD to create Pytest-BDD-NG, using the official Cucumber Gherkin parser. It also supports Cucumber Expressions, the Messages protocol, and other good things. I have started a tutorial series.

However, there are ongoing discussions about merging Pytest-BDD-NG back into Pytest-BDD, and possibly moving Pytest-BDD into the Cucumber repo. Your help with that would certainly be appreciated.

@Johnlon
Copy link

Johnlon commented May 2, 2024

And parallelism and support for attachments?

@Johnlon
Copy link

Johnlon commented May 2, 2024

And yep I might be able to help. Looking at godog it also needs some work.

@The-BDD-Coach
Copy link

You would have to ask Kostya about parallelism; I haven't explored that. I don't know what you mean by attachments; please give me an example.

@Johnlon
Copy link

Johnlon commented May 3, 2024 via email

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

10 participants