D4no0

D4no0

Is creation of erlang wrappers in elixir evil?

Recently I had to refactor a system that uses SFTP for copying files. By default the project was using the sftp_ex library. Now, when I wanted to use the library, there were a lot of gaps in documentation. After looking at source code, I noticed that most of the functionality is taken from ssh_sftp and ssh, basically a wrapper with some additional utility functions.

Now, if you open erlang documentation for ssh_sftp, you can see how clear and detailed the features are documented. The only downside of reading erlang documentation is that you should know that elixir string are not compatible with keyword lists, that are defined in erlang as strings and that lowercase keys in erlang are treated as atoms in elixir.

Moreover, the library has to stay in active maintenance, since ssh and ssh_sftp are shipped with erlang, so they are bound to change in newer OTP versions and currently mix does not support locking/checking libraries shipped with OTP. What everybody does is forking the library and implementing their own features, making a huge range of possible buggy/undocumented libraries.

This is just one of the libraries, there will be more and more libraries like this one around, what do you think would be the solution to this problem?

Most Liked

ityonemo

ityonemo

it’s generally considered “bad form” to just make an erlang wrapper unless you have something “opinionated” to bring back to the ecosystem.

Todd Resudek made a good opinion piece on this: https://www.youtube.com/watch?v=Gt6tough35c

I have some personal examples of libraries that I made that I consider to be "sufficiently opinionated’, too.

Where Next?

Popular in Discussions Top

matthias_toepp
I’d love to hear what people think about Wisp, the new Gleam web framework started by Gleam’s primary creator Louis Pilfold. Gleam, alon...
New
blackode
Elixir Upgrading is so Simple in Ubuntu and It worked for me Ubuntu 16.04 git clone https://github.com/elixir-lang/elixir.git cd elixir...
New
jeramyRR
This is an interesting article to read. Elixir’s performance, like usual, is excellent. However, it seems like the high CPU usage is co...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 39467 209
New
mmport80
I have put far too much effort into Dialyzer over the last year or so - and basically - I doubt it’s worth the effort. It’s not as easy ...
New
AstonJ
If a newbie asked you about Phoenix Contexts, how would you explain the basics to them? Feel free to be as concise or in-depth as you li...
New
fireproofsocks
I’ve been working on an Elixir project that has required a lot of scripting. I usually reach for Elixir because I like it more (and in th...
New
AstonJ
If so I (and hopefully others!) might have some tips for you :slight_smile: But first, please say which area you’re finding most challen...
New
sashaafm
Piggy backing a bit on @dvcrn topic BEAM optimization for functions with static return type?, I’ve been trying to understand in a deeper ...
New
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

Other popular topics Top

hariharasudhan94
lets say i have a sample like a = 20; b = 10; if (a > b) do {:ok, "a"} end if (a < b) do {:ok, b} end if (a == b) do {:ok, "equa...
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
jononomo
For some reason my phoenix channels are working for me in my local dev environment, but as soon as I deploy via Docker, I get a 403 error...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement