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

Join forces with the godog team? #137

Open
mattwynne opened this issue Jun 17, 2021 · 8 comments
Open

Join forces with the godog team? #137

mattwynne opened this issue Jun 17, 2021 · 8 comments

Comments

@mattwynne
Copy link

mattwynne commented Jun 17, 2021

Hello! 👋

I'm one of the leads for the Cucumber project. I spotted this library after one of godog's users brought this issue to my attention.

I'm not a Go programmer, so I don't understand a lot of the context for your decision to re-write, but I do recognise it as great feedback for us! For example, I have no idea how idiomatic or easy to maintain godog's codebase is.

I'm curious to know whether you'd be interested in working together with the Cucumber folks to help us make godog more the way you'd like it to be, and incorporate the ideas you've got here into godog's codebase?

If you'd like to discuss this in real-time, you can book time with me at https://calendly.com/mattwynne or you can come and find us in https://cucumber.io/community#slack in the #committers channel to chat.

Whatever you decide, thanks for innovating and growing the BDD ecosystem! 🎉

@github-actions
Copy link

Thanks for creating your first issue! We are thankful for your help

@sagikazarmark
Copy link
Collaborator

@mattwynne Although I'm not a maintainer of this project, I contributed to it a lot.

The fundamental difference between the two libraries is that this one embraces the builtin Go test framework (ie. each step is a subtest which is a Go test framework feature). That comes with a couple advantages.

There are more reasons listed on this page https://go-bdd.github.io/gobdd/

While I'm glad that there is a little bit of competition (it allows playing with different ideas in terms of the implementation),
I think eventually either one library should be "merged" into the other or the two will diverge so much that it'll make sense to keep them both around.

@mattwynne
Copy link
Author

It would be interesting to understand the context for why godog didn't embrace the builtin Go test framework. I guess @l3pp4rd would be the person to answer that best.

cc @cucumber/go

@l3pp4rd
Copy link

l3pp4rd commented Jun 24, 2021

Hi @mattwynne at the time I started godog I did not knew how to integrate it well, it seemed it was not correct to use t.Fatal or t.Error since I could not see how godog could catch those step failures that way. Maybe at the time go (version 1.2) had no extensions in test framework. Now I have not used golang over 2 years, not sure how flexible the test framework is now.

@aslakhellesoy
Copy link

Hi all. I'm the creator of Cucumber and the other lead of the Cucumber project.

I'm reasonably familiar with Go, having written/contributed to several of the low level Go libraries in https://github.com/cucumber/common, but I've not used or hacked on godog or gobdd (yet).

I think integration with the standard library's testing framework is very important - especially the test runner. In cucumber/common we mostly use the standard testing library/runner, but there are a few places we use https://github.com/onsi/ginkgo. Although it claims to be based on testing as well, I haven't figured out how to run individual Ginkgo tests from my IDE (IntelliJ) so I've always ended up running tests from the command line. That's usually fine, but whenever I want to use the IDE's debugger I'm stuck.

Does godog have the same limitation? And does gobdd let you do this?

Cucumber-JVM has a similar philosophy to gobdd's - it uses the "standard" test runner (JUnit) as the entry-point, which means IDE integration is supported out of the box.

I'd be absolutely thrilled if the gobdd and godog projects merged and took the best from both libraries. If the maintainers of both projects agree on that that, perhaps you'd even be interested in adopting the name "Cucumber.go"? I'm not sure what would be the best route for a merge - continue with one codebase and adding code from the other, or start from scratch adding code from both. You tell me.

On a related note, we've actually implemented a few libraries that neither godog nor gobdd seem to have adopted (yet):

A merger could also be an opportunity to adopt these two libraries in order to become even more "Cucumber" compatible.

@bkielbasa
Copy link
Collaborator

Hi, thanks for your comments! I'm open to any kind of cooperation :) I described my why's I created this project here https://go-bdd.github.io/gobdd/. If we can join our forces to build something even more awesome than godog/gobdd then

@inluxc
Copy link

inluxc commented Jun 28, 2021

This could be a breaking changes roadmap.....

@bkielbasa
Copy link
Collaborator

@inluxc yeah, but in long term, it could be profitable for all of us

the merging of those two projects is possible only when the core "whys" behind gobdd will be fulfilled. When we look at how godog is designed IMO it will require a lot of work and change a few fundamental differences between both projects.

I joined slack channel so we can chat more about it

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

6 participants