Designing a form instead of filling out a form to make a form
Back in August, I started catching up with GiveWP when Jason Adams laid out a new roadmap toward their 3.0 release that is really ambitious β and familiar. Matt Cromwell told me the Give team is indeed “rolling the whole thing out in the same way Gutenberg was rolled out β first as a ‘feature plugin’ on Github that our users can install alongside GiveWP.” That’s a first for major plugin providers.
This open, iterative process will allow safe trials and bring in “tons of user feedback” before a public release on WordPress.org as a GiveWP add-on. After even more testing and feedback, the addon will be merged back into the free core GiveWP plugin available in the WP.org repository. That probably will happen in the first half of 2023.
So what does the next generation of donation forms look like?
It looks like a fully integrated part of the WordPress block editor AKA Gutenberg.
(Once Gutenberg integration like this becomes the norm for most WordPress plugins we probably won’t be calling it “Gutenberg” anymore.)
Leveraging the block editor for faster development
According to Matt, GiveWP is unique in stepping out ahead of other companies to fully embrace and integrate with the block editor:
“We’re not just taking the whole thing and throwing blocks at it. We’re using it as a framework to leverage our own form building experience. This is only possible because of the way Gutenberg is architected. I do think we have taken a much closer look at the code itself and seen how this is possible architecturally β something I feel most products have not done.”
For example, Matt notes how many people don’t like how Gutenberg content markup uses HTML comments to set off blocks. GiveWP is making that optional:
The way we are leveraging Gutenberg allows us to also control the output, so we aren’t using HTML comments at all, but a JSON output. This speaks to the maturity of Gutenberg as a framework.
Jason added that “Gutenberg is such a massive, complex framework” handling so many different use cases, it’s not possible to define it as “ready” or “not ready” for full adoption:
“People constantly push the edge of what it can do (e.g. block data storage), and where it can be used (e.g. widgets, FSE). Most folks also donβt really understand what precisely Gutenberg is versus its integration in WordPress. What it does very well at this point is making a drag-n-drop builder with clear structuring and contextual settings (i.e. page settings vs block settings).”
Why commit fully to Gutenberg now?
I asked Matt what drove the decision to jump into Gutenberg with both feet now. He said their users “expect a visual building experience, and we’ve long wanted to provide that to them.” However, creating their own builder interface “would have taken years.” Instead, “Leveraging Gutenberg … allows us to provide a very familiar interface and deliver a stable product much sooner.”
Echoing Matt’s view, Jason added, “Frankly, it will have taken us far less time to become familiar with the framework and codebase than it would have to to build something remotely equivalent ourselves. I think people are a bit too quick to throw their hands in the air. Itβs hard to fully appreciate receiving something so robust, free, and battle-tested (on millions of sites worldwide).”
I asked how the Give team’s deep adoption of Gutenberg might lead them to be more involved with its development. Matt says that is their intention and goal, but they haven’t fully realized it yet. Jason noted they began contributing code to Gutenberg in August.
Gutenberg is surprisingly versatile
There have been some surprises along the way from the Give team. “The biggest surprise has been how extensible Gutenberg really is,” Jason observes. He noted positively, “Every time we’ve wondered if we could pull something off, we’ve found ways to make it happen.”
That leads to some advice for other WordPress developers:
“Get to know Gutenberg better, not the editor, but the underlying code base itself. Way too much of it isn’t well documented, but the bones β the nuts and bolts β are all there.”
Jason also stressed,” Gutenberg is a lot of little packages that all come together. In some moments you would expect it to be a bit more assembled (such as applying formatting like bold to text), but the pieces are always there and can be easily assembled.”
While the Gutenberg documentation is going to take time to catch up, “the code is quite well structured and organized.” He wishes Gutenberg used TypeScript, which GiveWP will be using to extend it.
It’s great to see this level of enthusiasm and forward momentum for WordPress as Gutenberg moves toward its final phases of development. Seeing the results so far is even better!
You can see the many front-end capabilities of GiveWP and quickly spin up a test site to try out over at demo.givewp.com.