10 Years(-Ish) of Elixir

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • phx_gen_auth

    Discontinued An authentication system generator for Phoenix 1.5 applications.

  • Thank you for your work on adding user registration and authorization to Phoenix!

    I'm setting up a new Phoenix app for a side project this weekend and have just run Arron Renner's [auth generator](https://github.com/aaronrenner/phx_gen_auth). Having user registration out of the box will save a big chunk of time and energy!

  • elixir-raknet

    An Elixir client for the core of the RakNet networking protocol, useful for games and other latency-sensitive applications that typically rely on UDP

  • Happy Elixir user here. At work we have a use case that isn't covered by José's high-level overview of the domains Elixir's used in: we run a massive multiplayer game server on it.

    This is actually a really good fit. (It kind of rhymes with the original use of Erlang, being telecoms infrastructure.) We get outstanding concurrency support, high reliability, and really efficient development times. I can't imagine shipping this feature with a server written in C++ (the language I'm most comfortable in), and I can't imagine scaling it the way we need to if we'd gone for a traditional web language like Node, PHP, etc.

    If you're interested, you can see the RakNet (game networking protocol) implementation we use on the server here:

    https://github.com/X-Plane/elixir-raknet

    The README gives a good overview of the full MMO server's architecture, too: each client connection is a stateful Elixir process (not to be confused with a heavy-weight OS process!), acting asynchronously on a client state struct; clients then asynchronously schedule themselves to send updates back to the user.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • credo

    A static code analysis tool for the Elixir language with a focus on code consistency and teaching.

  • Yes there is a formatter built into Mix, the Elixir build tool. There is also https://github.com/rrrene/credo which is not as extensive but does the same thing as ESLint.

  • canada

    Easy permission definitions in Elixir apps!

  • There are packages on Hex that haven't been updated in a long time but still work perfectly (Canada, for example: https://github.com/jarednorman/canada). Elixir itself doesn't change much... in fact there's no plans for a 2.0 on the horizon, so the fact that packages don't change often isn't a big deal if they still do what they say they do and aren't hurting for more features.

  • stm_agent

    Discontinued Software transactional memory for Elixir.

  • Do you use it for server side game logic too?

    It's not as ambitious as an MMO, but I like to use MUDs to learn new languages. I've been (slowly) working on one to learn Elixir and I'm actually finding the concurrency model somewhat difficult to use for the MUD - especially the single world that every player connects to.

    I ended up writing my own kind of software transactional memory library to help me out: https://github.com/stevbov/stm_agent

    But relying on a library like this feels fairly un-Elixir-like. It seems like the language would shine more in a problem space where there's not so much potential for arbitrary processes to depend upon eachother.

  • ex_venture

    Text based MMORPG engine written in Elixir

  • You'd likely be interested in the work done by Eric Oestrich in building MUDs with Elixir.

    Kalevala: a world building toolkit for text based games, written in Elixir [0]

    ExVenture: a text based MMO server written in Elixir [1]

    Grapevine: a MUD chat network [2]

    [0] https://github.com/oestrich/kalevala

    [1] https://github.com/oestrich/ex_venture

    [2] https://github.com/oestrich/grapevine

  • scrivener_ecto

    Paginate your Ecto queries with Scrivener

  • > As for libraries, I challenge anyone to name an unmet dependency in Elixir that is 1) trivial to implement and 2) not for some niche application.

    For quite some time the ex_aws[0] package was no longer maintained because the only person who maintained it stopped using AWS. There were many months in between before a new maintainer was found.

    The ecto pagination[1] package has a "low maintenance" warning, basically the author is no longer maintaining it except for fixing issues even though there's a number of interesting features that could be added that other web frameworks have available.

    The arc file upload[2] package was no longer maintained or touched for a really long time until someone took it over but now that new package is also racking up open issues and looks like it kind of stagnated in development. This isn't based on looking at last commit times too. I mean there's issues open to address important topics that haven't gotten reviewed.

    There's also no official Stripe package for Elixir and all of the Elixir ones feel kind of abandoned or no where near feature parity with Python, Ruby, Node, PHP, Golang or any of the other official packages offered by Stripe. This is the last thing I want to have to implement myself since it's so critically important. The same can be said for PayPal and Braintree integration. There's official SDKs for Python, Node, etc. but not Elixir. I've asked Stripe a couple of times about an Elixir client and they all say the demand is not near enough to consider creating one.

    These are only a few examples of tools I've found in questionable state when working with Elixir compared to Python and Ruby. All of which are very important in a ton of applications.

    Then there's also less generic but still really useful things like notification abstractions to send emails, texts or broadcast notifications to a browser. Rails, Laravel and Django all have first class solutions to this where you can get up and running in no time but with Phoenix you'll have to write all of this on your own. It's a huge undertaking.

    Long story short, I started with Phoenix and Elixir almost 2 years ago and today 2 years later I feel like if you plan to write any type of business'y app with Phoenix you're going to have to end up writing a ton of libraries yourself instead of focusing on your business problem. That might not be a problem if you have a huge team and your business idea is already proven and 5+ years old but for anyone who wants to build something and see if it works, it's hard to say you'll be able to build something faster than Rails, Laravel, Django or Flask if you already know one of those frameworks.

    Now you might say some of those packages are trivial to write but they're really not. That seems to be a common pattern I've seen with the Elixir community where someone will say just do it yourself because it's easy and then you're left hanging. Sure maybe it's easy if you're Jose or someone with 5+ years of prior Elixir experience and have written 100k+ lines of Elixir code but a regular developer who just wants to build web apps (not libraries) is going run into tons of roadblocks. I know I did.

    [0]: https://github.com/ex-aws/ex_aws

    [1]: https://github.com/drewolson/scrivener_ecto

    [2]: https://github.com/stavro/arc

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Grapevine the MUD Community Site

    1 project | news.ycombinator.com | 5 May 2024
  • Can I use pow with LiveView?

    1 project | /r/elixir | 12 May 2023
  • What happened to TMC?

    1 project | /r/MUD | 4 May 2023
  • 2023 iOS Mud Client?

    1 project | /r/MUD | 27 Mar 2023
  • Am I looking for PBP? I haven't done this since the '00s!

    1 project | /r/RoleplayingForReddit | 23 Mar 2023