I’ve been doing my best to give ARP a really fair chance, and we’ve had tons of success with community provided plugins like Snowflake, but when trying to build your own custom plugin there are so many restrictions, and the playing field is uneven.
Lets dig into the latest issue, the uneven playing field. I’m working on a custom ARP connector. Dremio provided ARP connectors like MySQL, Oracle, and PostgreSQL include a custom ArpTypeMapper
. This lets the plugins provide custom logic for how things like precision and scale should be calculated, and other things that are database specific. But if you decide you need this logic yourself for your custom ARP plugin, you are out of luck. This is because you need to instantiate instances of SourceTypeDescriptor
, and this class has no public constructor. This means Dremio provided plugins can provide custom logic for how types are mapped, but custom plugins can’t.
On the ARP Documentation page it says:
Using the ARP framework not only allows you to create better connectors with improved push-down abilities but it also provides a way to develop connectors more efficiently.
I just want to emphasize that at least three of the Dremio provided ARP connectors are not reproducible without being a Dremio employee, with legal right to include your plugin inside the ARP binary.
I know that the ARP framework has a ton of promise, but it’s really being shackled and beaten down by the restrictive way in which Dremio is treating/licensing the framework. This is just one of my issues with the framework, I’ve included a link to a recent post I made with others at the end of this post.
Lets also discuss the irony of Dremio Hub vs the CE edition. If you want to contribute a custom plugin that you’ve developed with ARP to Dremio Hub, it must be licensed under the Apache license (Contributing to Dremio Hub). But if you were to build Dremio CE in OSS mode, you wouldn’t even be able to use these plugins, because they require the ARP JDBC jar, which isn’t available in OSS Dremio and isn’t available under an Apache license.
Post the code on GitHub with an Apache license and start accepting some PR’s so we can break through the restrictions on this library. It has so much promise, and you’ve taken the time to tout it as a great way to build new plugins in an efficient way, but right now there are small bugs that no one can fix and which block many plugins from being created.
A recent post with some of my other issues concerning ARP, which also aggregates even more of my other posts: