Open jkozlowski opened 11 years ago
Thanks for the interest!
As far as I'm concerned this project is very much alive, but time has been lacking. The current code should be checked against the latest changes in the Raft paper, and should most certainly be validated/tested much more, so tests would be certainly appreciated.
I plan to relicense the whole thing as well, per request of @NathanHowell and @sseveran.
For benchmarking purposes: the goal of this project is not to do any actual networking etc, but only provide a 'pure' implementation of the Raft protocol (modulo log access) which can be embedded in some other application which needs log consensus for whatever reason. So, for benchmarking purposes, something could go in a demo/ or bin/ folder, but no 'real world' code should go in the Kontiki package proper.
Does this answer your question? :-)
so tests would be certainly appreciated.
Yes, I thought that would be a good idea for a contribution; I'll re-read the paper and try to write some as time permits.
but only provide a 'pure' implementation of the Raft protocol
I indeed have noticed that while briefly looking through the code, it is a great idea and I completely agree.
Does this answer your question? :-)
Yes, indeed it answers my question, I shall have a tinker with, and if I come up with something useful I will send a pull request :) Might take a while since I'm still lacking experience with Haskell, but I'm determined to start doing something about this.
Thanks for your reply.
For testing, you might be interested in https://groups.google.com/forum/?nomobile=true#!topic/raft-dev/Uc-T11xoXow
Let me know if you have any questions.
You might be interested in #3 as well.
Any plans to add it to hackage and do (a bit lately) anouncement in Cafe?
@qrilka I don't think the current code is at a point where releasing to Hackage is a good thing to do: I currently can't guarantee the implementation is correct etc. Sending something to the Cafe could be a good idea: I'd love some more people to read & validate the implementation against the protocol specification 'manually', as well as gather some interested developers to build an on-disk log implementation (got quite some ideasideas how to approach this, but time is lacking right now), so 'serious' systems can be built easily on top of Kontiki.
There seems to be some code added since 2013. As kontiki is not on hackage yet, shall I… hmm, consider this code appropriate for "non-serious systems" only?
@NicolasT same question but end of 2017 :-)
I am really looking for a raft library that could be used in other Haskell projects to create single binary distributed systems.
@shmish111 You may want to check the hack branch, which is the direction I wanted to take things into before I got distracted by this related project of mine.
If you'd be interested to collaborate on this project, then please check that hack
branch and let me know your thoughts.
@NicolasT can you give me some idea of what your plans are, or would be, if you had time and/or help? I'll have a look at the code now but I've only just started looking at raft so I'm a beginner on this stuff really. I may have opportunity to help though.
BTW, the reason I think a raft library is important in Haskell is that similar libraries have helped make go the language of choice for many distributed systems that i come across in the devops part of my work. At the moment, all the most interesting projects in this space seem to be written in go and use raft for consensus, e.g. kubernetes, consul, nomad to name a few that I have enjoyed using.
As a Haskell developer I think that Haskell is well suited to creating these types of system but it misses a few important pieces to make things easy such as a good consensus library.
One project in particular that I think a lot of people would love to see would be a replacement for Jenkins. There is no decent alternative to Jenkins in many situations but it is so painful to use, partly because it is hacks upon hacks for many years. It is much more than it was originally designed for. Consensus is not required for this but it would be a nice to have. My dream is for it to work in a similar manner to Nomad at a base level since Nomad is really doing something very similar (running random stuff on remote nodes) but without a load of CI stuff on top.
I just came across this project, was wondering what is the state of the implementation? I will have a look at the code over the weekend, but I thought you could maybe briefly summarize what's the state, if you have a moment at some point? I can see last commit was 4 months ago.
I am still learning Haskell, but I was hoping to start tinkering with some project and this one sounds pretty cool, especially as there's https://github.com/goraft/raft implementation, would be nice to benchmark them against each other.