I am a Masters student (no-thesis option) and would like to give back the the community by writing a library in the next ~4-5 months as a graduation project.
Criteria: It would be lovely if it is based on a paper and the Elixir/Erlang community is missing that sort of functionality.
If you did this it would be amazing:
Sorry, don’t have a link to the paper, but I’m sure it’s in the video somewhere.
Link to the json crdt paper A Conflict-Free Replicated JSON Datatype
Link to more information regarding potential applications and alternatives and more: Local first software
A rust port of the backend in rust (based on the work on the performance branche) Automerge-rs
It’s indeed a very cool and exciting field of research and it would indeed be nice to have an Elixir/Erlang version, although the research being cutting-edge could turn out to be impractical (but people working on this are much smarter than I am, and they seem confident).
If you’re into vm implementation there is an effort to have a beam running on top of web assembly, that may also be a worthwhile learning experience Lumen.
Whatever you decide, be sure to check with the teaching staff, so that you get proper support and don’t waste your time.
Edit: addendum, other potential relevant work in the crdt field :
There’s an elixir implementation, but it seems stalled.
Have you seen the Erlang Ecosystem Foundation’s Working Groups page? There might be something the community needs that you could build.
Thanks everyone for all of your suggestions and special thanks to @krstfk for your detailed reply. I will keep replying to this thread with updates and hopefully in 4 months we will have a new maintained library for Elixir.
Glad I could help somewhat.
Another area of research (but I doubt it would fit in a 4-5 month program) is static type checking.
As far as I know the first paper in that field is this one by Marlow and Wadler.
The Gleam project is exploring the topic. I may be wrong, but I believe people at emqx are exploring something in the same vein and the people at Facebook WhatsApp are working on some typed erlang thingy (but I know close to nothing about that).
Given your timeframe, I still think working on some nice CRDTs would be both realistic and nice for the community.
Again, please check with your teaching staff. The elixir community is great, but having in person advice from the people who will ultimately judge your work is better.
Also, while I certainly think you should strive for excellence, if you can’t provide a production ready library, it’ll still be a great addition for the elixir/erlang community if you document your motivation, hurdles, and choices.
All that to say don’t burn out as a student, have fun learning, it won’t be useless (even if whatever lib you decide to implement isn’t used). At the very least you’ll gain some expertise that you’ll be able to leverage to help the community in the future.
I for one would love to see some work done on logic programming, with either Robert Virding’s Erlog, or MiniKanren. I have some use cases that really could probably benefit from such a thing
Thank you again for your kind and supportive words.
I like the idea of having static typing in Elixir, but as you have guessed, the timeframe with a day job will make it hard for me to manage. I will suggest CRDTs to my professor and see how it goes. I will also try to find more ideas during the weekend.
As for the quality of the library: if somehow the library wasn’t production ready in 4 months time, then I will keep refining it to become one.