{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:22:06Z","timestamp":1750220526978,"version":"3.41.0"},"publisher-location":"New York, NY, USA","reference-count":48,"publisher":"ACM","license":[{"start":{"date-parts":[[2021,8,18]],"date-time":"2021-08-18T00:00:00Z","timestamp":1629244800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2021,8,18]]},"DOI":"10.1145\/3471871.3472963","type":"proceedings-article","created":{"date-parts":[[2021,8,19]],"date-time":"2021-08-19T01:18:08Z","timestamp":1629335888000},"page":"2-14","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Graft: general purpose raft consensus in Elixir"],"prefix":"10.1145","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-7394-0122","authenticated-orcid":false,"given":"Matthew Alan","family":"Le Brun","sequence":"first","affiliation":[{"name":"University of Malta, Malta"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2448-5394","authenticated-orcid":false,"given":"Duncan Paul","family":"Attard","sequence":"additional","affiliation":[{"name":"University of Malta, Malta"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-3829-7391","authenticated-orcid":false,"given":"Adrian","family":"Francalanza","sequence":"additional","affiliation":[{"name":"University of Malta, Malta"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2021,8,18]]},"reference":[{"key":"e_1_3_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.FSTTCS.2017.7"},{"key":"e_1_3_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jlamp.2019.100515"},{"key":"e_1_3_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3290365"},{"key":"e_1_3_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.4230\/LIPIcs.CONCUR.2018.34"},{"key":"e_1_3_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1007\/BF01782772"},{"key":"e_1_3_2_1_6_1","volume-title":"Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf. isbn:193435600X","author":"Armstrong Joe","year":"2007","unstructured":"Joe Armstrong . 2007 . Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf. isbn:193435600X Joe Armstrong. 2007. Programming Erlang: Software for a Concurrent World. Pragmatic Bookshelf. isbn:193435600X"},{"key":"e_1_3_2_1_7_1","unstructured":"Duncan Paul Attard. 2021. detectEr Tutorial. https:\/\/duncanatt.github.io\/detecter\/  Duncan Paul Attard. 2021. detectEr Tutorial. https:\/\/duncanatt.github.io\/detecter\/"},{"key":"e_1_3_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-78089-0_14"},{"key":"e_1_3_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-46982-9_31"},{"key":"e_1_3_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1007\/11888116_17"},{"key":"e_1_3_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-75632-5_1"},{"volume-title":"Test Driven Development by Example","author":"Beck Kent","key":"e_1_3_2_1_12_1","unstructured":"Kent Beck . 2002. Test Driven Development by Example . Addison-Wesley . isbn:9780321146533 Kent Beck. 2002. Test Driven Development by Example. Addison-Wesley. isbn:9780321146533"},{"key":"e_1_3_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1109\/DSN.2013.6575306"},{"key":"e_1_3_2_1_14_1","unstructured":"Matthew Alan Le Brun. 2021. diskv. https:\/\/github.com\/MatthewAlanLeBrun\/diskv  Matthew Alan Le Brun. 2021. diskv. https:\/\/github.com\/MatthewAlanLeBrun\/diskv"},{"key":"e_1_3_2_1_15_1","volume-title":"Graft: A Raft Implementation in Elixir. https:\/\/github.com\/MatthewAlanLeBrun\/graft","author":"Le Brun Matthew Alan","year":"2021","unstructured":"Matthew Alan Le Brun . 2021 . Graft: A Raft Implementation in Elixir. https:\/\/github.com\/MatthewAlanLeBrun\/graft Matthew Alan Le Brun. 2021. Graft: A Raft Implementation in Elixir. https:\/\/github.com\/MatthewAlanLeBrun\/graft"},{"key":"e_1_3_2_1_16_1","volume-title":"Erlang Programming: A Concurrent Approach to Software Development. O\u2019Reilly Media. isbn:0596518188","author":"Cesarini Francesco","year":"2009","unstructured":"Francesco Cesarini and Simon Thompson . 2009 . Erlang Programming: A Concurrent Approach to Software Development. O\u2019Reilly Media. isbn:0596518188 Francesco Cesarini and Simon Thompson. 2009. Erlang Programming: A Concurrent Approach to Software Development. O\u2019Reilly Media. isbn:0596518188"},{"key":"e_1_3_2_1_17_1","unstructured":"CNCF. 2021. TiKV: A Distributed Transactional Key-Value Database. https:\/\/github.com\/tikv\/tikv  CNCF. 2021. TiKV: A Distributed Transactional Key-Value Database. https:\/\/github.com\/tikv\/tikv"},{"key":"e_1_3_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-54013-4_10"},{"key":"e_1_3_2_1_19_1","unstructured":"etcd Team. 2021. etcd: A Distributed Reliable Key-Value Store for the Most Critical Data of a Distributed System. https:\/\/github.com\/etcd-io\/etcd  etcd Team. 2021. etcd: A Distributed Reliable Key-Value Store for the Most Critical Data of a Distributed System. https:\/\/github.com\/etcd-io\/etcd"},{"key":"e_1_3_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-67531-2_2"},{"key":"e_1_3_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-23820-3_5"},{"key":"e_1_3_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1007\/s10703-017-0273-z"},{"key":"e_1_3_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-540-71316-6_27"},{"key":"e_1_3_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.jlap.2007.03.003"},{"key":"e_1_3_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1007\/s00236-007-0052-1"},{"key":"e_1_3_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-78089-0_15"},{"volume-title":"Raft: Golang Implementation of the Raft Consensus Protocol. https:\/\/github.com\/hashicorp\/raft","year":"2021","key":"e_1_3_2_1_27_1","unstructured":"Hashicorp. 2021 . Raft: Golang Implementation of the Raft Consensus Protocol. https:\/\/github.com\/hashicorp\/raft Hashicorp. 2021. Raft: Golang Implementation of the Raft Consensus Protocol. https:\/\/github.com\/hashicorp\/raft"},{"key":"e_1_3_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1145\/3380787.3393681"},{"key":"e_1_3_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2723872.2723876"},{"key":"e_1_3_2_1_30_1","volume-title":"Rafute: An implementation of Raft Consensus Algorithm in Elixir. https:\/\/github.com\/mururu\/rafute","author":"Ito Yuki","year":"2016","unstructured":"Yuki Ito . 2016 . Rafute: An implementation of Raft Consensus Algorithm in Elixir. https:\/\/github.com\/mururu\/rafute Yuki Ito. 2016. Rafute: An implementation of Raft Consensus Algorithm in Elixir. https:\/\/github.com\/mururu\/rafute"},{"volume-title":"Elixir in Action","author":"Juric Sasa","key":"e_1_3_2_1_31_1","unstructured":"Sasa Juric . 2019. Elixir in Action . Manning Publications . isbn:9781617295027 Sasa Juric. 2019. Elixir in Action. Manning Publications. isbn:9781617295027"},{"key":"e_1_3_2_1_32_1","volume-title":"Raft: An Elixir implementation of the raft consensus protocol. https:\/\/github.com\/toniqsystems\/raft","author":"Keathley Chris","year":"2018","unstructured":"Chris Keathley . 2018 . Raft: An Elixir implementation of the raft consensus protocol. https:\/\/github.com\/toniqsystems\/raft Chris Keathley. 2018. Raft: An Elixir implementation of the raft consensus protocol. https:\/\/github.com\/toniqsystems\/raft"},{"key":"e_1_3_2_1_33_1","unstructured":"Shunsuke Kirino. 2019. RaftKV: An Elixir library to store key-value pairs in a distributed fault-tolerant self-adjusting data structure. https:\/\/github.com\/skirino\/raft_kv  Shunsuke Kirino. 2019. RaftKV: An Elixir library to store key-value pairs in a distributed fault-tolerant self-adjusting data structure. https:\/\/github.com\/skirino\/raft_kv"},{"key":"e_1_3_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360549"},{"key":"e_1_3_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1007\/BFb0012782"},{"key":"e_1_3_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-02138-1_13"},{"key":"e_1_3_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/279227.279229"},{"key":"e_1_3_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1016\/0304-3975(90)90038-J"},{"volume-title":"Distributed Algorithms","author":"Lynch Nancy A.","key":"e_1_3_2_1_39_1","unstructured":"Nancy A. Lynch . 1996. Distributed Algorithms . Morgan Kaufmann Publishers Inc ., San Francisco, CA, USA. isbn:9780080504704 Nancy A. Lynch. 1996. Distributed Algorithms. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA. isbn:9780080504704"},{"key":"e_1_3_2_1_40_1","unstructured":"Diego Ongaro. 2021. Log Cabin. https:\/\/github.com\/logcabin\/logcabin  Diego Ongaro. 2021. Log Cabin. https:\/\/github.com\/logcabin\/logcabin"},{"key":"e_1_3_2_1_41_1","unstructured":"Diego Ongaro. 2021. The Raft Consensus Algorithm. https:\/\/raft.github.io\/#implementations  Diego Ongaro. 2021. The Raft Consensus Algorithm. https:\/\/raft.github.io\/#implementations"},{"volume-title":"USENIX Annual Technical Conference. USENIX Association, 305\u2013319","author":"Ongaro Diego","key":"e_1_3_2_1_42_1","unstructured":"Diego Ongaro and John K. Ousterhout . 2014. In Search of an Understandable Consensus Algorithm . In USENIX Annual Technical Conference. USENIX Association, 305\u2013319 . https:\/\/www.usenix.org\/conference\/atc14\/technical-sessions\/presentation\/ongaro Diego Ongaro and John K. Ousterhout. 2014. In Search of an Understandable Consensus Algorithm. In USENIX Annual Technical Conference. USENIX Association, 305\u2013319. https:\/\/www.usenix.org\/conference\/atc14\/technical-sessions\/presentation\/ongaro"},{"key":"e_1_3_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.1145\/98163.98167"},{"key":"e_1_3_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-030-17465-1_20"},{"volume-title":"The Pragmatic Programmer: Your Journey to Mastery","author":"Thomas David","key":"e_1_3_2_1_45_1","unstructured":"David Thomas and Andrew Hunt . 2019. The Pragmatic Programmer: Your Journey to Mastery . Addison-Wesley . isbn:0135957052 David Thomas and Andrew Hunt. 2019. The Pragmatic Programmer: Your Journey to Mastery. Addison-Wesley. isbn:0135957052"},{"key":"e_1_3_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2737924.2737958"},{"key":"e_1_3_2_1_47_1","volume-title":"Programming Ecto: Build Database Apps in Elixir for Scalability and Performance. Pragmatic Bookshelf.","author":"Wilson Darin","year":"2019","unstructured":"Darin Wilson and Eric Meadows-Jonsson . 2019 . Programming Ecto: Build Database Apps in Elixir for Scalability and Performance. Pragmatic Bookshelf. Darin Wilson and Eric Meadows-Jonsson. 2019. Programming Ecto: Build Database Apps in Elixir for Scalability and Performance. Pragmatic Bookshelf."},{"key":"e_1_3_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/2854065.2854081"}],"event":{"name":"ICFP '21: 26th ACM SIGPLAN International Conference on Functional Programming","sponsor":["SIGPLAN ACM Special Interest Group on Programming Languages"],"location":"Virtual Republic of Korea","acronym":"ICFP '21"},"container-title":["Proceedings of the 20th ACM SIGPLAN International Workshop on Erlang"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3471871.3472963","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3471871.3472963","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T21:24:49Z","timestamp":1750195489000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3471871.3472963"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,8,18]]},"references-count":48,"alternative-id":["10.1145\/3471871.3472963","10.1145\/3471871"],"URL":"https:\/\/doi.org\/10.1145\/3471871.3472963","relation":{},"subject":[],"published":{"date-parts":[[2021,8,18]]},"assertion":[{"value":"2021-08-18","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}