TallyJ v2 - Status and Feedback
Last significant update: 3 Dominion 176 / 9 February 2020
TallyJ is published and available to use for free at https://tallyj.com
Introductory videos are available on YouTube.
Discussion about TallyJ can be found here: http://www.facebook.com/TallyJ.Support
This document is shared to keep you informed and is the mechanism being used to track status and future plans!
Election Assistance and Suggestions
Comments and suggestions can be sent to firstname.lastname@example.org. You can find me on Twitter, Facebook and Linkedin. You can also reach me by Google Hangouts at the same address. For emergency assistance, you can send a SMS/text message to my mobile phone: +1-403-402-7106. (I am in the Canadian Mountain time zone. Please note that unscheduled and unexpected phone calls may not be answered - use SMS or Hangouts first!)
Have you recently used TallyJ in an election? Please take this short survey to share your ideas!
Version 3 now available
Online voting by individual voters has been added to version 3 of TallyJ. As of November 2019, this is available for use in beta. See more information here.
Other Sites in the TallyJ system
See TallyJ for Officers for a tool that members of an Assembly can use when electing their own officers.
Privacy and Security
The data you enter is stored in a password-protected database securely hosted at Azure. Your connection to the server uses TLS security (https). The data is not used for any purpose beyond what you see, without your explicit request or permission. If needed for providing support to you, the data can be accessed by Glen Little. Log entries are created when you log into the site, and when election status is changed. These are sometimes monitored by Glen to provide support to the website.
For the election of a Local Spiritual Assembly, the Setup page asks for your current location to be able to determine when sunset will be. The location and sunset time are not stored or used for any other purpose.
Please see Some Guidance regarding the mechanics of Bahá'í Elections for important guidance.
TallyJ is currently an individual initiative that has been ongoing for over 20 years! Hosting for TallyJ.com is currently sponsored by the Local Spiritual Assembly of Calgary, Canada using their Azure account provided by the Microsoft Azure nonprofit sponsorship program. If you or your community would like to contribute to the ongoing development of TallyJ, you can set up monthly contributions via Patreon, make a single contribution at the GoFundMe website, or via Paypal! Thank you!
For local installation, see the Local installation instructions document.
The source code is maintained here: https://github.com/glittle/TallyJ-2.0 (open source). If you would like to help develop TallyJ, please contact Glen!
- Windows - Chrome, Firework and Edge work well. (IE 11 has been known to have problems.)
- Mac - Chrome works well. (Safari has a number of usability bugs and is not supported. Ballot entry is mostly possible, but numerous features do not work correctly.)
- TallyJ works well on phones and tablets, especially when using the Front Desk to register voters. Entering ballots requires the use of a keyboard so smart phones may be cumbersome to use.
- Other browsers - please test before using during an election!
Recent Changes to the Live Site
- Version 2.8.15 - 3 Dominion 176 / 9 February 2020
- Fix to prevent possible double-clicks on Front Desk.
- Version 2.8.14 - 2 Dominion 176 / 7 February 2020
- Add notice about version 3 on the home page.
- Version 2.8.13 - 14 Sovereignty 176 / 1 February 2020
- Fixed: The “Display Tie-Breaks” screen does not show the names to be voted for.
- Version 2.8.12 - 18 Words 176 / 30 July 2019
- Fixed: Issues when searching for names when there are many duplicates.
Found a problem or have a suggestion?
Please notify Glen Little as soon as possible!
Done, not published yet
Being Worked on
Done in Version 3 Beta
To Do List
Key to lists below:
- Usability - to make it easier to use
- Tech - to speed up the site or improve functioning
- Spec - changes functions of tool. For example, to support more election types/usages.
Next to do, by general priority
Other ideas, by freshness and priority
- Add Report - add a simple report that shows just the number of votes received (no name). Include if only one vote? To be used for charting over years.
- Add ability to export a single file with data from all elections.
- Reporting: Add the ability to create a report showing the full results event when a tie-break is needed. Show who is currently tied. Allow this to be displayed (in the Teller’s Report page?). Babak 2
- Reports - the “Updated People” report should only show a few names that were edited by tellers. In one situation, showed a long list of people, which was likely not correct.
- When a new name was added to the list, a teller at another computer did not see the name added to their list. Had to refresh the page. Updates on other computers should be instant.
- Allow teller to record a comment explaining why review by head teller is needed.
- When “review needed” box is unchecked, still retain a log of this for reporting?
- On Front desk, include dropdown to indicate how the voter’s identity was verified.
- The main (head) teller’s account seems to “partially timeout” even when actively using it. When this happens, other tellers are okay, but the election no longer shows on the home page. → Logging in again on another computer (or using incognito mode) resolves the issue (without booting out other tellers). #48
- Review the security mechanism that locks an election when the main teller logs out. For one election, It seems as if the teller was still using the system but was no longer appearing to be logged in, so no other tellers could join. (Session was only at 10 minutes. Extended to 30. Extended to 120.)
- “In Set-Up, Edit People's Names, I wasn't able to delete a person.” - Add ability to delete a person! Until this is added, simply give the person an eligibility status of “Unknown Person” (if none of the other statuses are more relevant). (See github issue #47) There may be many complications when deleting a person - remove from Front Desk, remove from other teller’s local list, etc.
- Usability: Teller reported: “I could also not get the "add new ballot" key shortcut to work, so I had to use the mouse entering ballots.” (Note that on Firefox, key shortcuts use Alt+Shift)
- Tech fix: Uploading files
- Teller reported: “It would be nice if the CSV import was more lenient with respect to line endings (i.e. Unix-style).”
- Tech fix: Teller reported: “When uploading the .csv, since my computer is French and French language csv's have semicolons instead of commas, I had a bit of trouble uploading the file (had to switch the language on my excel)”
- Tech fix: Teller reported: Got loading error with a file that was not UTF-8. Had to use UTF-8 and fix the non-english names
- Usability: Teller reported: “A couple of times the front desk function would freeze and require a refresh of the page, but nothing major.”
- (Pouyan) Roll-call Page: Add a dropdown list allowing user to choose between:
- (Pouyan) Add the ability to change the font size on the Roll Call page so the names don't wrap on to a second line (this could be automated in the background).
- (Pouyan) Processing Ballots\Monitor Progress page: The last check-box switches off teller access. This kicks them out completely from TallyJ, but it would be good to have a way to disallow them add/edit rights to the Enter Ballots page, but still be able to see the reports for their sub-unit reporting purposes.
- (Pouyan) The header information shown on the "Main Election Report" is very good and could be added to every report just so there's reference to what the table is showing.
- (Pouyan) I don't know if this is a good idea or not, but intuitively I don't like re-running the analysis when I log back in (i.e. analysis results aren't retained). Although I assume the data is locked once the Finalized button is pressed (in addition to releasing the reports page), re-running the analysis after logging back in implies the results could be different from the day the election was last finalized. If it makes sense to not retain the Analysis Results, maybe the Finalized process could be made more robust by:
- Renaming the Finalize button to "Finalize and Lock all Data".
- Once Finalized, Disable fields/buttons in the Enter Ballots & the Analyze Ballots pages.
- Rename the Not Finalized button to "Unlock Data to Modify Ballots"
- After the Finalize button is selected, if the user selects the Unlock button, then a modal opens requesting confirmation that the user intends on removing the locks on the ballot information.
- (Pouyan) Although I can't replicate it, the Finalize button automatically switches to Not Finalized after logging out. This doesn't happen all the time, but I've Finalized our [election] and it switches to Not Finalized when I log back in after an hour or so.
- (Amadou FB) Integrate the fact that in council elections the set of voters (members of LSA) is a subset of the set of all eligible Baha’i.
- (Amadou FB) Output statistics results useful for the NSA: Number of LSA, percent of voters by LSA, etc.
- (Amadou FB) Make possible to use other kind of csv file like (point-comma) or other file format.
- Usability: Using the Front Desk button “Registered” in combination with “Mailed In”. Some people mailed in their ballots, and this was recorded before unit convention gathering. Some of them later attended the gathering. All those attending were marked as “Registered”. For those that had mailed in their ballot, the record of their ballot being mailed in was lost. “It should be possible to have either Mailed In or Dropped Off selected in conjunction with 'Registered'. It should only deselect once 'Ballot Received' has been selected in which case we can easily run an attendance report based on the selection values of both 'Registered and Ballot Received'.” Babak 1
- Usability: As Tellers were entering, the HT was in monitor progress mode, and had list of ballots in front of them, many marked as needing review. As HT resolved them and scrolled down, the new entries on sync would not stay in order of time, but grouped by stations. This way after refresh, the HT had to go back from top to check for any that needed review. Maybe an option to sort by time or station would be handy here. Filter on "needs review" or "include spoiled votes". Arun 6.
- Enable comments per vote
- While resolving ballots, HT finds name written with slight wrong spelling. The HT does some analysis to figure what the name should be. There should be an easy way for them to map the entered vote as an entry in the original list. This is similar to 2, but from HT perspective. Arun 8. → put comment per vote???
- Is it possible for a teller to mark a particular vote to need review, not the entire ballot. This way it clearer for HT to review the specific issue. Arun 4. → comment on the vote itself???
- When entering a name in the ballot, voters sometimes put slightly wrong spelling, but based on what they write and some extra hints, it is clear to tellers who the vote is for. What is the best way to actually enter what was entered but still select the right name. Adding a new name would change our list, and selecting from list does not allow head teller to see what was actually on the ballot. Arun 2. → Ideal would be to record a picture of the entire ballot! Add a comment to that vote describing the original name???
- Small comment regarding our kind of use, where Roll call is disabled. When finishing the procedure it could highlight that expected ballots is 0 and we have entered so many, so we need to manually enter these. Maybe it could be a red box whenever these don't match. Arun 5. → Highlight in red immediately if no ballots were calculated or manually entered.
- Usability: On person edit page, ensure that changes are saved before allowing a different person to be selected.
- Usability: On the “all ballots for review” detailed report, should ask for which computer to show, or to show all ballots.
- Add option to not show Baha’i ID, for countries that do not have an ID system.
- Allow some election types to not require that ties in the “next highest” need to be resolved. (Reports would still be generated, but should have a warning on them.)
- Usability: When ballots are entered, and the person’s info is altered, only force a name in a ballot to be re-validated if the information is changed. If just new info is just added to formerly blank other fields, don’t force a re-validation. (8h)
- Spec - Allow the displayed teller’s report page to include unresolved ties? Good for when tie-breaks are held later. Currently the main report can only be done when election is finalized, and can’t do that while ties need to be resolved. Show, with notice that ties exist. Would have to show all the names in the tie. → Detailed reports can be viewed by tellers at any time (after analysis has been done, even if incomplete).
- Usability: Allow the re-import of a CSV with people’s names, and update the Eligibility status for each person if it is changed. (Would need to match people to avoid loading duplicates.)
- “It would be helpful if we could edit votes. Instead, when fixing issues such as previously mentioned, we'd have to enter the new vote into the ballot and then delete the one we wanted to change.” (Should votes be immutable?)
- For final tellers report, enlarge the page to fill the screen at all resolutions.
- For final tellers report, show elected people one name at a time, showing the next on a keypress or click. Could show placeholders with numbers (1. ___ 2. ___ 3. ___ 4. ___ …), then fill in the names with resulting votes. On Teller’s Report page, show names of elected one at a time… press a key to show each next name.
- Usability: On roll call screen, may want show first name first (make it a setting?)
- Show each name with first name then last name - easier to read.
- For Roll Call, give more color options: inverse, high contrast, etc. (Non-local names are not visible on some projectors). For multiple location elections, make it more clear which are local to the current location.
- For Roll Call, consider making the default option to show all names, as opposed to just the ones at your location.
- After the analysis is “approved”, it should be locked down and saved. In one case, after logging out and in, had to run it again to see reports.
- Enable better teller isolation so that each guest teller can only alter ballots they have created.
- Usability: (Babak, local installation) Locations and teller names chosen change on their own after they've been set. This happens whilst still on the same page and the change is random. This doesn't always happen but it does happen often enough to be noticed. (Need to reproduce.)
- Tech: Can’t reproduce. When entering the election date, it may save it as a day off from what you enter. Likely an issue with time zones, etc. To workaround, enter the date a day off, and it will show as the correct date! (Thanks Babak!)
- Tech: Can’t reproduce. IE sometimes crashes when adding new name when on the ballot page.
- Tech: Can’t reproduce. One user has an error with “FK_Result_Person” during analysis of an imported election file.
- Usability: Update active Front Page pages when a new person is added to list, or a person is marked “unable to vote” and therefore should be removed.
- Usability: On Front Desk, have a link to the person edit page for each person.
- Usability: When changing election mode, immediately display the Dashboard page?
- Usability: On the Person edit page, add ability to record ballots (like Front Desk), so can record directly there. (Would need to generate/show envelope number as the Front Page does.)
- Usability: Copy to start a new election for tie-breaks. (12h)
- Copies same list of (eligible) voters, but marks only those in the tie-break as eligible to receive votes.
- Could use the export/import process?
- Switch all guest tellers over to the new election?
- Have link back to original election?
- Need to copy and combine results back to the original election
- What if nested… tie-break for a tie-break election?
- Usability: Send report to email address (as html email) - send to convenor... convenor can forward to NSA, etc. Add to ‘election setup’ page. (12h). For now, just print to PDF in Chrome, then email the file.
- Usability: sometimes there is a delay after logging in before the elections show up. Investigate to determine why. See about doing a “warm up call” when the welcome page is first shown.
- Tech: Speed up login process!
- Done: Delay count of ballots and people per election until the list is displayed.
- Feature: better support for Regional Baha’i Council elections (thanks to Amadou Diogo Barry)
- The set of voters (members of LSA) is a subset of the set of all eligible Baha’i.
- Output statistics results useful for the NSA: Number of LSAs, percent of voters by LSA, etc.
- Possible approach: Rename “Area” to “Area / Group”. Report by Area would work. Add option to do Roll Call in order by “Area/Group”.
- Usability: When an old election is opened, and still has a pass code to allow others to join, require the head teller to “re-activate” the passcode! Otherwise, looking at an old election will cause it to appear on the homepage while head teller is looking at it.
- Tech: Make it possible to use other kind of csv file like (point-comma) or other file format.
- Old tech: Computers seem to logout after 20? minutes - should be much longer. Enable keep alive to server.
- Usability: Add a “forgot password” feature to reset teller’s password. Login system needs redesign.
- Usability: Enable google, facebook, twitter, etc. logins. Would only be able to use account services that share their registered email. (36h)
- ASP.NET sample applications now include this ability…
- Done for online voters (only)
- Can this be retro-fitted into TallyJ?
- Allow login via social service and “old” id/pw login. If both logins used, register the new social id as the owner of the election as well.
- Allow a head teller to share an election with another login account user via their email address. Currently, owner of election is the only person who has access to all features. However, the “owner” can log into many computers at the same time, if desired.
- This may need a better authentication system
- Encourage everyone to log in with their own ID.
- Allow head teller to list the accounts a particular election is shared with.
- Each other account should be “owner”, “full” (same as owner but can’t share election), or “guest” (same as if used guest login)
- Be able to designate assistant head tellers. Send invitation email with token - teller clicks to create/use login account and enter this election as full or assistant teller. If multiple locations, can limit “full” access to that location only?
- This is a major new feature for TallyJ. Initial planning is started..
- Would need multiple tellers to log in, so should depend on ability to share an election with someone else
- → 2019 - in progress now in Version 3
- Should be fixed now. Tech: On Front Desk page, if computer is unused for a few minutes, seems to lose its connection, so it does not get the updates from other computers. Pressing F5 refreshes it, and is okay again. May be resolved by updated version of SignalR library
- Usability: If names list is less than x in size (15?), then simply show them all. Teller can use mouse to click on names used. (When starting from 0 names, can show names as they are added until the threshold is reached.) (8h)
- Tech: Put the “Needs Help” status with a computer, not the entire location. (Is this still needed?) (12h)
- Usability: ? By-election for one person - too easy to enter names twice - should merge or prevent double entry. It does not add another person to the list; it reselects the same person. Might be another bug… Done in V3
- Usability: If no locations, do not show “Contact Info” on the Monitoring page (4h)
- Tech: Optimize JS and CSS references... jquery.ui pulls lots of small files; add bundling; add proper headers for expiry, must revalidate, etc. Not crucial - browser caches after first hit. (12h)
- Add “Home Page” for current election? To replace dashboard. Show status, counts, links, etc.
- Add this sort of information to the monitor page?
- Usability: Have a checklist of tasks to be done in an election for the head teller. New page for teller? (12h)
- On Analysis page, remind head teller that the convenor/Assembly may need to review the results before they are announced.
- Could be next to the “monitor” information.
- Usability: Add the option of a public URL to show the results of the election. Can be sent in emails for anyone to view. (12h)
- On Monitor page, allow lock out of a computer (not if full teller) (8h)
- The password problem you are aware of. One tweak that can be added that each time a wrong password is attempted, the server takes longer to respond pass/fail. That way your intended security is kind of met, and less likely for someone to be locked out. Of course you can enable a forgot password, which could have instructions by email to reset, but even in that case adding some lock timer might be a good safety mechanism. Arun 9.
- Usability: Add people analysis page to find duplicate names or Baha’i Ids; also show if soundex is similar? (12h)
- Tech: Ensure that converted time is shown correctly in all locations (Front Desk, reports, etc.) (8h)
- Tech: Update caching system to change v=n to -n. Keep extension the same. (6h)
- Spec: Enable export to Excel... waiting for layout sample
- Future: When importing, would it be possible to include some more columns. E.g. We have sectors and area as separate fields. Also address helps a lot to resolve some names. I ended up creating a merged column so I could import into "other info" field in TallyJ, so it wasn't too bad. Arun 1 → adding a column likely won’t happen in version 2. This workaround is good.
- Test in other browsers. (Developed with Chrome.) Test in Firefox, Safari, IE8, IE9. (Use browserstack.com).
- Front Desk Registration buttons don't change color when clicked ( e.g., "In Person" etc...)
- When counting ballots, when you click on "Start New Ballot", the counter doesn't increment(e.g., A1 stays A1).
- When entering names into the ballot, it doesn't seem like the ballot was saved to the database, although when you refresh it shows up.
- Version 9 - import of CSV files not working? (can’t use button or drag/drop)
- occasionally get HTML codes showing in the names list, which is then copied to the vote line. On moving to another ballet and back, all is fine.
- Version 1 Import - the uploading of CSV does not work cleanly, and the uploaded file cannot be imported (12h)
- Usability: Be able to import/copy names from another election. How useful is this? (8h)
- Usability: Add restriction to reports and analysis pages so that they cannot be viewed (by anyone) until at least (10) ballots have been entered. This is to help protect the anonymity of ballots when only a few have been entered. However, by the time ballots are entered, the ballots should already be completely anonymous. (12h)
- Add more logging.
- Add screen to show log of activity in the election. (Convert times to local time.) (12h)
- Tech: Improve top status message when person’s session has timed out. If session times out, status display is stuck as if waiting for response - handle logged out better. If guest teller’s session times out, still see menus? (12h)
- Documentation: Develop a single (or double) page PDF “white paper” describing TallyJ to present to head tellers and Assemblies when they are considering using TallyJ.
- Tech: Consider adding Zopim.com for supporting TallyJ. (12h)
- Usability: Make some screencasts (like Camtasia-type) for learning the new system (32h)
- Usability: Welcome page (4h)
- Encourage making an account and making multiple elections
Related products to make?
- Build a “simple” site for the members of an Assembly to use when voting for officers.
Other Ideas, for possible future development
- Usability: Add ability to include address, phone number, birth date, etc. to make this a community directory. (48h)
- Add ability to print a phone list
- Add login ability so that authorized people can look up names, etc.
- Would need to ‘export’ names into each new election.
- Usability: Have “wizard” to introduce TallyJ to new users... step 1, step 2, etc.
- Draw schematic of an election process. (12h)
- Consider concepts from Metro designs
- Samples here…
- Add import of data from USA online community database system (12h)
- More documentation online - about tallyj; more quotes about election; more guidance and tutorials about how TallyJ can help (10h)
- Add links to downloadable documents from various countries
- Improve sys admin reporting of # of logins, # of elections, size of populations, etc. (12h)
- Add page for named admins to view log reports
- Using remote db access from Excel for now.
- Allow more than 9 for an Assembly election? Don’t know of any locations that use this. Can use a “custom” election and choose any number.
- Page for Additions/Deletions? For projection on screen. Refreshes from people list when edited from people page. --> No, don’t do additions/deletions.
- Have special treatment for Auxiliary Board members. ABM must decide after the election is complete.
Tips, Documentation and Instructions
- Manual processes… During roll call, arrange dropped off ballots in alphabetical order, so they are easy to find when their name appears. Use the Sort Envelopes page to help with this.
These are rough concepts and ideas... details are sure to change and be improved!
- Self-service online voting
- Better validation
- When a person votes in person, a teller validates the identity of the person before receiving the ballot.
- However, when a ballot is dropped off for person (A) by someone else (B), the teller does not validate the identity of A, but takes B’s word for it.
- This leaves open the possibility for misuse, as B has complete control over the ballot they are dropping off.
- If B were malicious, they could replace the ballot with one of their own making.
- Similarly, if A is a Baha’i who is inactive or not in close contact with the community, B could take advantage of that and drop off a ballot “on behalf of” A, without A knowing about it.
- A similar possibility exists with mailed in ballots, even without the intervention of an intermediary.
- A malicious person could mail in a ballot under the name of an inactive Bahá'í, who would not be aware of this happening.
- A review of the voting habits of inactive Bahá'ís and of anyone who “always” delivers dropped off ballots for other people may help to identify possible abuses.
- In Canadian public elections, each voter must vote in person, unless they have specific circumstances. Dropped off ballots are not permitted. Mailed in ballots are possible, but only by special application beforehand and using a personalized ballot, etc.
- Announce that people who wish to mail in their ballot, or have their ballot dropped off, must first contact the chief teller (or Admin Office) in person or by telephone, to register their intention and to advise who will be delivering their ballot for them.
- This ensures that each voter has verbal interaction with a teller, who can record their intention to vote.
- This reduces the possibility of the malicious creation of a ballot “on behalf of” a person who is not otherwise participating.
- If a ballot is being dropped off by person B, there is still a possibility that B could maliciously alter or replace the ballot they are delivering. However, the accountability level is higher since the voter A has named them as the person they are entrusting their ballot to.
- If a ballot is received by mail, or dropped off, without being previously registered, an attempt can be made to contact the voter by phone - and if the voter cannot be contacted or verified, the ballot would be rejected.
- If a special phone number is setup for this purpose that is answered promptly by a teller, then it should not be a burden or barrier to voting. Since a verbal conversation is required, then a voice-message-only phone number would not be appropriate.
- During the conversation, an offer could be made to send a teller out to collect the ballot. This would eliminate the situation where a potentially untrusted 3rd party has private control of the ballot.
- Distributed phone-in voting (future)
- This would require online voting features first.
- Establish a network of Baha’is who would be involved from around the country/world
- Voter (A) would call a number, and enter a code to indicate which community they are voting in. They would then talk to someone (teller B) who would have a list of eligible voters in that community. Once A’s identity is established and confirmed (ask for DOB, Baha’i ID, address, email, phone number, etc.), teller B records that voter A has voted, and passes them to teller C to record who the vote is for. Tellers B and C could each be living in different locations, but specifically NOT in the community where voter A is voting.
- Could support multilingual voting if the languages spoken by tellers can be registered, and the call in voter can select from a list of languages to vote in.
- Make available for non-Baha’i elections
- Any group of peers could use TallyJ to help run elections in their community.
- To make it more welcoming to them, could change wording to be more general.
- In election setup, use a wizard approach, and determine early-on whether this is for a Baha’i election or otherwise.
- If not for a Baha’i election, then wording elsewhere can be adjusted to be more general.
- Only show reports that they might be interested in
- Official online location of version 2
- Version 3 of TallyJ with online voting (in beta)
- TallyJ for electing officers in an Assembly
- “Official” support location where people can discuss TallyJ.
- “Official” location to download the old Version 1.85 of TallyJ
- Old location for TallyJ version 2
- “Experimental” online location of version 2. TallyJ was published here for a while. It worked well, but is too costly to keep as test site. This was experimental in mid-2014.
- More detailed information about version 1 of the software and other documentation.
- Blog-like site where I tried to provide support information. This originated as a group at MSN Groups.