I’ve been promising you an update on my pet project, Rubberduck, for quite some time now. I apologize for taking so long to get around to it. Both the project and this blog tend to come last in the grand scheme of my life, so it sometimes takes me some time to get around to things. I’m afraid that may be more or less the theme of this post.
So, you may have seen some talk about us integrating Git functionality into the VBE. It’s coming. I swear it. Things have been going slowly however. I can officially say that I’ve been able to create branches, commit, and merge all directly from the VBA editor. Which is pretty damn cool if you ask me, but it’s just not ready yet. I still need to add remote functionality to the GUI. It also turns out that there are many more failure states for a Git action than success states. So, I also need to add a graceful way to get this information back to the user so they can take action and get their repository into a state where they can successfully commit, merge, etc. So, when will you see this feature officially released? I don’t know. 6-8 weeks, maybe.
The good news is that you can take advantage of the API right now. I built it first as a proof of concept and exposed it to COM Interop, so you can actually use our library right now to manage your VBA projects. Be warned though, the API isn’t stable yet and is subject to change until I nail down the IDE integration.
Which brings me to another fairly big change that we made internally. Until now, the entire add-in was distributed in a single Rubberduck.dll file. This was nice for us, but not so great for you. First off, it meant that each new version of RD would break the reference for your unit tests even though the API for it hasn’t changed in at least several versions. Secondly, it meant that you technically had to license any code that used our API under as GPL v3. I have broken the project up into several .dlls to help alleviate these issues.
I hate GPL. I really do. It snuck into our project via an ANTLR grammar file like a thief in the night, stealing away our right to license our code in a way we saw fit. You see, the GPL is like a virus. If you use a library or snippet of code that is GPL, then you must license your code as GPL as well. So, if you used our Source Control API, you would have to license your code as GPL as well. This is absolutely unacceptable to me. You should be free to use our library and license your code however you like.
Since the Source Control API doesn’t actually touch any GPL code, I broke it off into its own project and *.dll. As of the next release, Rubberduck core and our Source Control library will be available as a separate distribution under the MIT license. Why a separate distribution? Because until we can create our own grammar file, the full version of the add-in must remain GPL. This means that the Rubberduck_SourceControl library that comes with the full add-in is GPL. Technically, you need the separate distro to use it under the MIT license. Sound like a pain in the ass? Yeah. It is.
I hate GPL.
Anyway, moving on and off my soapbox….
There are some other cool things in the world too. Mat has been improving our VBA grammar and code parsing. The next version should see significantly less false positives for code inspections. Our newest developer has been just hammering out new refactorings a too. All in all, I think the next version will be well worth the wait. I mean, being able to reorder method parameters from a GUI with a few mouse clicks is pretty cool stuff all by itself.
I’ll continue to make these long form updates as often as possible, but make sure to follow us on Twitter for the latest information we can share in 140 characters.
Until next time, Semper Cogitet.