OpenTally/homepage/index.html

113 lines
6.0 KiB
HTML
Raw Normal View History

2021-10-28 01:23:33 +11:00
---
layout: default
2021-10-28 16:28:53 +11:00
title: "OpenTally: Advanced online election counting"
2021-10-28 01:23:33 +11:00
---
<!-- Header-->
<header class="bg-dark py-5">
<div class="container px-5">
<div class="row gx-5 align-items-center justify-content-center">
<div class="col-lg-8 col-xl-7 col-xxl-6">
<div class="my-5 text-center text-xl-start">
<h1 class="display-5 fw-bolder text-white mb-2">Advanced online election counting</h1>
<p class="lead fw-normal text-white-50 mb-4">Count instant runoff and single transferable vote elections for free, no downloads or sign-up required</p>
<div class="d-grid gap-3 d-sm-flex justify-content-sm-center justify-content-xl-start">
2021-10-28 16:28:53 +11:00
<a class="btn btn-primary btn-lg px-4 me-sm-3" href="{{ site.baseurl }}/stv/">Launch OpenTally</a>
<a class="btn btn-outline-light btn-lg px-4" href="{{ site.baseurl }}/docs/quick-start.html">Quick Start Guide</a>
2021-10-28 01:23:33 +11:00
</div>
</div>
</div>
2021-10-28 16:28:53 +11:00
<div class="col-lg-8 col-xl-5 col-xxl-6 d-block text-center"><img class="img-fluid rounded-3 my-5" src="{{ site.baseurl }}/assets/headerimg.png" alt="Screenshot of OpenTally" /></div>
2021-10-28 01:23:33 +11:00
</div>
</div>
</header>
<!-- Features section-->
<section class="py-5 bg-light" id="features">
<div class="container px-5 my-5">
<div class="row gx-5">
<div class="col-lg-4 mb-5 mb-lg-0"><h2 class="fw-bolder mb-0">Key features</h2></div>
<div class="col-lg-8">
<div class="row gx-5 row-cols-1 row-cols-md-2">
<div class="col mb-5 h-100">
<h2 class="h5">Runs in your browser</h2>
<p class="mb-0">No downloads or sign-ups are required. OpenTally counts are computed entirely inside your browser, and no data ever leaves your computer.</p>
</div>
<div class="col mb-5 h-100">
<h2 class="h5">Wide range of STV systems</h2>
<p class="mb-0">OpenTally supports Gregory (inclusive and exclusive, weighted and unweighted), Meek and Wright variants of the single transferable vote.</p>
</div>
<div class="col mb-5 mb-md-0 h-100">
<h2 class="h5">Support for arbitrary constraints</h2>
<p class="mb-0">OpenTally is the only publicly available election counting software to support arbitrary combinations of constraints, such as gender quotas and other affirmative action requirements.</p>
</div>
<div class="col h-100">
<h2 class="h5">Free and open source</h2>
<p class="mb-0">Source code for OpenTally is publicly available under the <a href="{{ site.git_url }}/tree/COPYING">GNU AGPLv3</a>.</p>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- Blog preview section-->
<section class="py-5">
<div class="container px-5 my-5">
<div class="row gx-5 justify-content-center">
<div class="col-lg-8 col-xl-6">
<div class="text-center">
<h2 class="fw-bolder">From our blog</h2>
<p class="lead fw-normal text-muted mb-5">Latest news and posts from the OpenTally blog</p>
</div>
</div>
</div>
<div class="row gx-5">
<div class="col-lg-4 mb-5">
<div class="card h-100 shadow border-0">
<div class="card-body p-4">
<div class="badge bg-primary bg-gradient rounded-pill mb-2">Dev Log</div>
<a class="text-decoration-none link-dark stretched-link" href="{{ site.url }}/blog/2021/08/21/stv-parcels.html"><h5 class="card-title mb-3">Parcels? Subparcels? Not just for STV hand counts!</h5></a>
<p class="card-text mb-0">Single transferable vote rules designed for hand-counting often contain references to ‘parcels’ (or ‘bundles’ or ‘batches’), ‘further parcels’ and sometimes even ‘subparcels’.</p>
<p>For example, consider the <a href="#">4th stage of the ERS97 model election</a>. 107 of Glazier's and Wright's ballot papers are aggregated according to…</p>
</div>
<div class="card-footer p-4 pt-0 bg-transparent border-top-0">
<div class="small text-muted">21 August 2021</div>
</div>
</div>
</div>
<div class="col-lg-4 mb-5">
<div class="card h-100 shadow border-0">
<div class="card-body p-4">
<div class="badge bg-primary bg-gradient rounded-pill mb-2">Dev Log</div>
<a class="text-decoration-none link-dark stretched-link" href="{{ site.url }}/blog/2021/07/30/blt-parser.html"><h5 class="card-title mb-3">Implementing a BLT parser by hand in Rust (vs pest and combine)</h5></a>
<p class="card-text"><a href="#">OpenTally</a> is open-source software which can count single transferable vote elections specified using the <a href="#">BLT file format</a>.</p>
<p class="card-text mb-0">Earlier this month, I <a href="#">replaced</a> OpenTally's previous naive <a href="#">string-manipulation-based BLT parser</a> with one using <a href="#">pest</a>. A new parser was necessary to support <a href="#">extensions to the BLT</a></p>
</div>
<div class="card-footer p-4 pt-0 bg-transparent border-top-0">
<div class="small text-muted">30 July 2021</div>
</div>
</div>
</div>
<div class="col-lg-4 mb-5">
<div class="card h-100 shadow border-0">
<div class="card-body p-4">
<div class="badge bg-primary bg-gradient rounded-pill mb-2">Dev Log</div>
<a class="text-decoration-none link-dark stretched-link" href="{{ site.url }}/blog/2021/07/28/asyncify-vanilla.html"><h5 class="card-title mb-3">Asyncify with vanilla JS/<wbr>WebAssembly (wasm-bindgen compatible)</h5></a>
<p class="card-text">WebAssembly is a technology for executing compiled programs in the web browser at near-native speeds. However, it has a number of current limitations, including that it does not support coroutines/<wbr>asynchronicity.</p>
<p class="card-text mb-0">In <a href="#">OpenTally</a>, WebAssembly is used to run code for counting an election. This…</p>
</div>
<div class="card-footer p-4 pt-0 bg-transparent border-top-0">
<div class="small text-muted">28 July 2021</div>
</div>
</div>
</div>
</div>
<div class="row gx-5 justify-content-center">
<div class="col-8 text-center">
<a class="btn btn-outline-primary btn-lg px-4" href="{{ site.url }}/blog/tag/opentally/">Read More</a>
</div>
</div>
</div>
</section>