Now these are posts revolving around Phoenix/cloud, but Ecto has been useful to me in way more than just cloud applications. My issue is i always feel as if i have a sub par experience when using adapters/drivers other than Posgres.
It seems that every other adapter gets abandoned or is “not suited for production use”. Postgres is great and the support is amazing for Elixir, but it is not always the solution. So how can we encourage development/maintenance of these other adapters?
A good way might be to make using alternative DBs so compelling that people want to use them and end up making adapters
For me personally the only two DBs I have thought about using other than Postgres is either a GraphDB like Neo4J or something to use with Nerves like Sqlite. I think Regina was working on an Ecto Neo4J adaptor and there is an Sqlite adapter by @scouten (so I’m guessing may be at use at Adobe).
Was there any DB in particular you had in mind? Are there compelling reasons to use it other than PG?
Another way might to perhaps start a marketplace where companies who need adapters (or any kind of Hex package really) pay to have one created.
Another option may be to approach DB teams themselves and ask if they would be willing to make (or assist in making) an Elixir adapter. You often find such teams have their own favourites when it comes to languages (or language types) so it could just be a question of contacting someone on the team who is excited about the idea especially if you can demonstrate the community would be highly receptive to using their DB with that language.
A good way might be to make using alternative DBs so compelling that people want to use them and end up making adapters
^ this. I would love to just use PG all the time. I have no desire to use MongoDB myself personally, but i know a lot of people like it. Also not ecto specific but i like :ets and :dets. I just don’t usually find myself reaching for that because the territory is unfamiliar to me. In fact i’ve tried it only once before. I just need to spend more time with it to get more familiar.
Was there any DB in particular you had in mind? Are there compelling reasons to use it other than PG?
i use the Sqlite adapter personally and professionally. It has quite a few major bugs that i hit pretty frequently. I know @scouten has said he wishes to step down as maintainer and i’ve offered to take over maintenance which will essentially mean that it is funded by my company.
Another way might to perhaps start a marketplace where companies who need adapters (or any kind of Hex package really) pay to have one created.
I really like this idea, i just don’t think we have the community and workforce for it with Elixir yet. It seems all the large/core deps and packages are all maintained by a small number of individuals and core contributors that all share spots on various core teams.
“production ready” packages also seem to frequently come from necessity from a developers company. This is how Nerves is a lot of time. We don’t get a package or tool until Farmbot, LeTote, or SmartRent etc needs or wants it.
Now i want to say there is nothing wrong with that approach, it just seems at this point at least that Elixir developers are spread to thin to be able to take on maintaining another project.
Or maybe this is all in my head and we need this “Marketplace” to get more developers interested in Elixir.
The SQLite adapter was a speculative project in anticipation of something we might have done, but it turns out we are not going to be using it. Unfortunately, due to some personal circumstances, I no longer have adequate time to devote to it going forward.
Connor and I have been talking behind the scenes and are working out how to transfer maintenance of the project going forward.
I just don’t think there’s an “easy” way around this It will always come down to having enough interest behind implementing something…
One of my first tasks at the company where I work now was to implement a good way of managing database schema changes in our data warehouse. As I’d seen it before, I settled for Sqitch - but the DWH is based on the Exasol database, and there wasn’t a Sqitch engine for it, so I had to implement one (in Perl, a fairly unfamiliar language to me, nonetheless).
That being said, awesome documentation and clear guides on how to do things (like building Ecto adapters) will always help, of course… I may need to do this for Exasol at some point, if we end up using Elixir for any of our ETL, or even just for automation tasks
IMO it is mostly about the need of doing so. Granted there are people who proclaim a language immature if they cannot find a library for their very specific need but do we really aim to please everybody?
For example I entertained the idea of making an Ecto adapter for the H2 database, but when I thought about why… it was mostly because I remember it fondly back from my Java days when I replaced Oracle and MSSQL with it probably at least 20 times and made a number of small-to-medium apps much more lean and mean, with less dependencies and working just fine 99% of the time. (I happen to believe we seriously need a hardcore embedded DB that can scale to a full-blown normal DB but I am not quite sure Sqlite is it just yet.)
Add to this the fact that all of us are working people and that most of us don’t work for the heck of it but for the money, and you get the picture. Only talking about myself here: I want to do some open-source work but quite frankly it is on the bottom of my list because it’s basically an unpaid job and my soul needs rest more than investing my free time in programming even further. I know it reduces hiring chances but hell, I work to live, not live to work.
I am going to run the risk of sounding like a mean, spiteful person. But keep in mind that is not my intention.
I have had people ask various questions about the mongodb and mongodb_ecto packages that I maintain (what about feature X? When will bug Y be fixed? What about the most recent version of ecto/mongo? etc.) Don’t get me wrong, I don’t get upset or anything when people ask about any of this. But very few people seem willing to chip in.
The following is the main quote from the mongo thread you linked.
I admit that there is lots to do, but it is subpar because it has largely been a single person working on it at any given time. Just look at the contributors list. Eric started the project, then I took over when he no longer needed it.
There isn’t any real solution to this other than people need to do the work. There may be ways to incentivise people. Feature/bug/package bounties may be a good way to do so. Unfortunately that may lead to a lot of low quality packages that address a very specific need and not open to customization. The same thing may happen with feature and bug bounties. If I put up some money for something and someone implements something that technically works, but is of low quality, I probably will not want to give out the money because it is an unmaintainable mess.
I don’t think this problem is unique to database drivers and adapters.
This is my main problem with the bounty system. I actually really like the state of hex.pm right now.
I think this is so important. We don’t need a package/lib for everything in my opinion. Not to do the classic compare to JS and Ruby, but both of those community have to many libs in my opinion. (do you really need a jQuery plugin for adding numbers together?)
This is very true and i feel like it relates to the above quotes. It seems a lot of the Elixir community is more interested in the number of packages available than quality/support in them. Don’t get me wrong we do have pretty good coverage on both support and number of packages, but we do seem to be favoring number over support, which worries me a bit.
I’d be curious to see a poll about this particular sentence. 100% of the work i do is open source. I realize this is pretty edge case for most developers. I contribute to three or four major projects, only one of which i get actually paid for, but as you’ve said not everyone enjoys programming/working in their free time, and there is absolutely nothing wrong with this.
@AstonJ does this forum have polls? Maybe could you make an off topic split for that^
Click on the cog icon while composing a post to build one
To create a new thread referencing a previous post/thread, click on the timestamp of a post (top right hand corner) and then click on + New Topic - that will let you create a new thread and include links referencing each other. Give it a try
Hey! Just found this looking for other Graph DB drivers for Elixir. The team I am part of at CarLabs just open sourced Gremlex, a Gremlin driver for Elixir, which works on all Gremlin-enabled DBs (most graph dbs) https://medium.com/carlabs/introducing-gremlex-6f685adf73bd