A new feature is slowly coming in to Halalan. This is the ability to hold different elections simultaneously. This is in respone to the need of the UP Diliman student council elections where different precincts have different closing times and some other issues. This feature will mostly answer the stated need but will also take into consideration other use cases to make Halalan as general as possible.
This post will discuss the changes in the administration side of Halalan. The voting side will be tackled in another post.
Elections Page
This is a new page in the admin side. An election is (as of now) composed of only its name and its parent. An election can be linked to another election to facilitate managing of connected elections. As of now, only two-level (parent-child) elections are possible. A parent election is the one who has no parent election. A child election is the one who links to another election. The idea behind this parent-child link is if a precinct holds a college-level and university-level elections at the same time then the parent will be the university-level and the child will be the college-level. This way, the precinct can close the college-level election anytime it wants because it has the sole control over it while the university-level election will remain running since some precincts may still be voting under it. An advantage of this is voting for the university-level election (parent election) can be statistically broken down to the college-level election (child election). In other words, votes for a, say university student council chairperson, can be broken down to how many votes each college has. One more thing to point out is that starting/stopping a parent election will also start/stop all its children election. On the other hand, starting/stopping a child election will only start/stop itself. This is also true with regards to showing/hiding election results.
One of the functions of this page is to add/edit/delete election instances. An election is closely tied with the other components (e.g., positions, voters, candidates) so modifying one has repercussions all over the system. It is strongly recommended that once an election has been started to never edit or delete it unless its data are not needed anymore or it is long over. Another function of this page is to control the status of an election whether it is running or not and to show/hide its results. Another thing one can do in this page is to view all positions related to an election which brings us to the next page.
Positions Page
As mentioned before, one can view all positions related to an election in the elections page. This is because an election is directly connected to positions which is the only change in this page. A position should now be tied to one or more elections in addition to its usual elements such as name, maximum, ordinality, etc. since an election needs some positions.
Candidates Page
The only change here is that a candidate is now required to run in a specific election. Choosing an election will change the position dropdown to reflect all positions available under the chosen election only.
Voters Page
Just like in the candidates page, voters now also belong to elections. The main difference is the a candidate belongs to only one election and one position while a voter may vote in one or more elections and one or more positions.
In Summary
This post may not be clear enough to be understandable so here is a list that hopefully will make things clearer.
- Elections are created. A parent-child election may exists. Actions done (start/stop election and/or show/hide results) to the parent will happen to the child but not the other way around.
- Positions belong to one or more elections.
- Candidates may only run for one election and one position.
- Voters may vote in one or more elections and one or more positions.
If questions remain unanswered, please consider joining the Halalan mailing list and start a discussion there.