Solidus 3.0 Extensions Hackathon #3911
Replies: 14 comments 10 replies
-
Awesome! Thanks @kennyadsl! Let's do this! |
Beta Was this translation helpful? Give feedback.
-
It's a good idea. |
Beta Was this translation helpful? Give feedback.
-
Wow, this is awesome documentation for this event! Looking forward to getting some extensions up-to-date! 🔧 |
Beta Was this translation helpful? Give feedback.
-
This is great 🎉 Sign me up! |
Beta Was this translation helpful? Give feedback.
-
I'll join in. |
Beta Was this translation helpful? Give feedback.
-
I'm excited for this! |
Beta Was this translation helpful? Give feedback.
-
I would like to participate |
Beta Was this translation helpful? Give feedback.
-
I'd like to contribute! 🚀 Sign me up on the board! 👍 |
Beta Was this translation helpful? Give feedback.
-
Can't wait to get started! I'm in! 🔥 |
Beta Was this translation helpful? Give feedback.
-
I'd love to help! |
Beta Was this translation helpful? Give feedback.
-
Hey, I'd like to join in. Can you add me to the board? Thanks! |
Beta Was this translation helpful? Give feedback.
-
Hey, could you add me to the board? I will try to do one today. |
Beta Was this translation helpful? Give feedback.
-
Looking to get added to the board. Thanks! |
Beta Was this translation helpful? Give feedback.
-
All the extensions are now compliant with Solidus 3.0. Thanks to anyone who contributed, especially to @cpfergus1 that resolved all the remaining ones during this time! |
Beta Was this translation helpful? Give feedback.
-
Hello Solidus Community! 👋
We need your help to make all the extensions compatible with the next major release of Solidus: Solidus 3.0.
🙏 🙏 🙏 🙏 🙏 🙏 🙏 🙏 🙏 🙏
We are organizing a Hackathon to work together and get most of the extensions ready.
When?
📆 Friday, February, 5th the whole day, no matter your timezone.
Why we need this?
All 2.x minor releases gradually deprecated Solidus Core code by printing a deprecation message when that code is used. We know that all Solidus users that want to upgrade will have to remove the deprecated code from their applications but that's not enough, since any extension used would also need to be updated to support also the newly released Solidus version.
How can you help?
You can help by taking care of one or more extensions and upgrading them. We will host a Hackaton to organize the work asynchronously, provide help and get the most out of the community effort.
We will track the work using this GitHub Project.
Process
Here's the steps needed to participate:
1. Ask to join the GitHub Project Board
Let us know that you want to join the Hackathon using the comments below and we will add you to the 3.0 Preppers Board. Now you can move cards around in the GitHub Project.
2. Choose one extension from the TODO list
Try to choose an extension that you are familiar with or one that you use in your project.
3. Tell other people that the extension is on you
Move your card into the Assigned column and comment on the issue so that everyone knows that it's on you.
4. Be sure tests pass
First of all, check that tests pass up to v2.11 by checking the CI status or launching this command from your machine:
Once all the above tests pass, move it into the Specs Pass up to 2.11 column.
5. Remove all deprecation warnings
While running specs against Solidus v2.11 with
$ rm -rf Gemfile.lock spec/dummy $ SOLIDUS_BRANCH=v2.11 bundle $ SOLIDUS_BRANCH=v2.11 bundle exec rake
you should see some deprecation warnings. Change the extension code so that those warnings are no more present, being sure the specs always pass against the other Solidus versions as well.
Once all deprecation warnings are removed, move the card into Have no deprecated code column.
At this point tests should also pass against Solidus 3.0 (master). You can verify that with:
$ rm -rf Gemfile.lock spec/dummy $ bundle $ bundle exec rake
Push your code to a PR
6. Create a PR
Push your code into a branch of your fork and create a PR against the main extension repository. At this point, you should see the CircleCI jobs passing and each step will be similar to:
This is an example of the passing CI for an extension that is already compatible with Soldius 3.0: solidus_stripe.
And that's it. Someone will review and merge your PR soon. 🎉
FAQ
Can I open multiple PRs to prepare an extension (eg. one for specs, one for deprecations)?
Yes, but please consider that your PRs will likely not merged immediately although we'll do our best to review PRs as soon as possible. If you make multiple PRs and one depends on the other(s), they could need some rebase work later once they'll be merged.
What if I'm not done by the end of the day with my extension?
It depends. If you have time to finish the work during the next few days (no more than 2) you can keep the issue assigned to yourself. Please, just comment on the issue with your intention to complete the work. If you think you won't finish the work for any reason, no worries, that's perfectly fine. We just ask you to let us know by commenting on the issue so that someone else will be able to pick it up later.
Address name migration
In Solidus 3 (currently tracked in the GitHub master branch) we have a new way of representing the user's name related to the addresses. We gradually transitioned from having two different fields (
firstname
andlastname
) to a single field (name
). The rationale behind this choice can be found here: #3234.We need extensions to be able to work with both versions and to help transitioning their code we created a helper method into the
solidus_support
gem that understands which version is currently being used.solidus_support
should already be a runtime dependency of all the extensions. After being suresolidus_support
is at least at0.8.0
version, you can useSolidusSupport.combined_first_and_last_name_in_address?
to branch the different code paths.Here's an example taken from the
solidus_stripe
PR that makes that extension compliant with Solidus 3.0:Frequent errors
NoMethodError: undefined method `gsub' for nil:NilClass
To fix this error just add this line to the extension's gemspec :
This is needed for the automatic changelog generator and here's an example commit that fixes it.
Beta Was this translation helpful? Give feedback.
All reactions