yordisprieto

yordisprieto

Curated HEX packages

Everything that I shared is based on my experience, please don’t be offensive.

npm, ruby gems and now hex. I always have to deal with the same problem: find the best package for my project.

I notice that engineers in general like to just go and reimplement everything from scratch when something doesn’t work as them spec, or even sometimes because they don’t understand the current one.
That’s why you go and search in those websites for some dependencies you find out a huge amount of packages that basically try to resolve exactly the same issue.

I never understand why we (programmers in general) don’t work together as a team, because will always be better to work together and think more than one person in the same situation.

Yes, I understand that sometimes we got so deep in one implementation that we can’t use some packages or the trade off is huge compared with recreate your own.

I also understand that sometimes I will find some project driven by dictatorships, or even people don’t want to change something because somebody else will break.
I am not saying that having a LEADER in projects is bad, also I am not saying that we shouldn’t help “legacy” people

but,

we can’t hold some implementation, or even don’t change something that TECHNICALLY is better because somebody else will break, that’s why we have versioning and is their responsibility to upgrade or not.

All of those and many more problems can be resolve and I would like to find the solution

Anyway

I would like to see a little badge in HEX packages, that means that those packages are well supported and maintained.
Also I will group the packages in categories and I will only give the badge to the one that is the common and mainly use .This way we help people like me and the community.

I don’t believe in having a lot of packages that literally fix the same problem. I prefer to work together.
I would like to continue writing but I think you get the main idea.

And please share your opinion because this is really important for the Elixir community, now that we are smaller enough for curated HEX.

Let’s think together and work together

cc: @josevalim @chrismccord @ericmj

Most Liked

ericmj

ericmj

Elixir Core Team

I think it’s better to let Hex focus on serving packages. It would be too much work for me to go through 2800 packages and evaluate if they are good or bad and then decide which ones are the “best” in each category. The other alternative would be to have the “community” vote, but it’s not clear from your post how that should actually work. I don’t think it should be part of Hex either since Hex should focus on its core features, which is publishing and serving packages. There’s a lot of work running and maintaining a package manager and the core team has a long list of more important enhancements and features to work on before we can focus on curation or community voting.

It’s not a bad idea to have a place where you can find recommended packages. There is GitHub - h4cc/awesome-elixir: A curated list of amazingly awesome Elixir and Erlang libraries, resources and shiny things. Updates: · GitHub and http://toolbox.elixir.pm/ already that does similar things. Maybe you can help out on those efforts? Both those projects use the HTTP API from the specifications and you should be able to build a service with the API that would be just as good as if the service was part of Hex.

josevalim

josevalim

Creator of Elixir

This is the takeaway here. Asking for some sort of committee that will rank packages is like requesting someone else to do your job. How will this committee even be able to judge all packages that go into Hex about Phoenix, GraphQL, Databases, Elastic Search, Nerves, C extensions, etc? Each of those require specific domain knowledge.

Instead we need to discuss how to assess the health and quality of a project. README, documentation, usage, number of committers depending on the project size and if the team is responsive on new issues. Then there is a whole series of aspects related to your current domain: are the APIs well designed? Is the code tested? Does it use meta-programming only when absolutely necessary?

FWIW, I strongly dislike any measure that includes commit activity. What if the package is just… done?

sotojuan

sotojuan

The problem is that there’s no solution.

Hex’s only job is to server and store packages. No one in the Hex team wants to review packages, especially as Elixir gains traction and we get hundreds+ a week. They also don’t want a high barrier of entry for people to publish stuff either. Remember, Hex is an open source project done for fun, not anyone’s day job (correct me if I’m wrong).

The community is made up of tons of people. People are impossible to get together to agree on many things, especially tools and software. It happens very rarely and only for very big things like Phoenix or Express in Node (even then, many want Koa or Hapi).

Maintainers come and go and projects die after a few years. It’s an extra burden to keep track of which projects go unmaintained. Some projects don’t need maintenance at all after 1.0.0 because they’re simple.

Also, it’s not that bad. I get stuff done in Node all the time and rarely have a problem finding good libraries. I use npms which I linked above—their algorithm takes into account stuff you’ve mentioned and returns great results. Someone could build the same for Hex. After a few projects you just know which packages and people are good.

Phoenix, HTTPoison, Poison, Plug, Poolboy, Ecto (just naming a few) are all set in stone for years to come and the community has already decided on them, but I can go and publish 20 mediocre JSON parsers on Hex right now if I want. But you’ll never find them or use them with a good search system because you’ll get Poison instead. That’s my only solution: Have a good search algorithm and keep up with the community. Or have your own site that lists curated packages based on some algorithm you come up with.

You can’t stop people from publishing trash unless you hire someone to review packages 24/7, and then you’ll be known as the language that’s not friendly to beginners/people experimenting with packages and new ways to do stuff. I’ve even seen people accidentally publishing their Phoenix web app on Hex! Some programmers hate using dependencies, some like reinventing the wheel. People will always be silly :slight_smile:

Anyway, that’s my rantish answer. Let me just say I do agree with you and I’d love to have a perfect package repository with only the best stuff on it, but it’s just not going to happen.

Last Post!

josevalim

josevalim

Creator of Elixir

I agree with your reply. Communication is important and we should seek for collaboration. Elixir tries to lead by example here up to some extent when it comes to Erlang integration. Pushing developers to not simply wrap Erlang abstractions and contributing improvements, reporting bugs and more upstream whenever possible.

Btw, I didn’t want to imply you were not doing work. Although reading back I can clearly see how it can be read exactly as that. Sorry.

Where Next?

Popular in Discussions Top

ricklove
I was just introduced to Elixir and Phoenix. I was told about the 2 million websocket test that was done 2 years ago. From my research, t...
New
pillaiindu
In django there is a cache framework backed by memcached. Rails also puts a lot of emphasis on caching, and even the idea of russian-doll...
New
jer
I’ve been using umbrellas for a while, and generally started off (on greenfield projects at least) by isolating subapps based on clearly ...
New
dogweather
I wrote this comment on r/haskell, and it’s not popular there. :wink: But I think I’m on to something… Haskell reminds me of Java, and e...
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
lucaong
Hello Elixir and Nerves community, I have been working for a while on an open-source embedded key-value database for Elixir, that I call...
230 14350 124
New
Fl4m3Ph03n1x
Background This question comes mainly from my ignorance. Today is Black Friday, one of my favorite days of the year to buy books. One boo...
New

Other popular topics Top

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
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
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 40042 209
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 44139 214
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

We're in Beta

About us Mission Statement