Agora Library

Project Duration: 175 hrs

About:

Agora is a high performance vote counting library written in Scala. The library currently supports several vote counting algorithms, however it quite outdated and doesn't have support for Scala 3. We would love to make the Ballot and Candidate data types more generic such that library users should be able to define their own ballots and candidates based on these generic types and also include support for Scala 3. This will imply rewriting a huge portion of the application to support these changes.

Deliverables:

  • Rewrite library using Scala 2.13 and provide support for Scala 3.x
  • Make Candidate and Ballot generic
  • Implement tie resolution algorithms and add possibility for users to include theirs
  • Release application
  • Publish the library for Scala 2.12, 2.13 and 3 on Sonatype.

Required Skills:

  • Scala 2 and 3
  • Voting
  • Library development

Mentors:

  1. Abanda Ludovic
  2. Bomen Derick