TallyJ - Status and Feedback
Last updated... 7 Perfection 175 / 6 August 2018
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. More about Glen on Twitter, Google+ 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. (Please note that I am in the Canadian Mountain time zone; 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!
As of April 2018, work has started on the next version of TallyJ. TallyJ version 4 will build on the current version and include (optional) on-line voting for individuals. For more details or to contribute ideas, please contact Glen.
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. Hosting at TallyJ.com is currently sponsored by the Local Spiritual Assembly of Calgary using their Azure account provided by the Microsoft Azure nonprofit sponsorship program. If you or your community would like 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 and Firework 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.
- Other browsers - please test before using at an election!
Recent Changes to the Live Site
- Version 2.8.7 - 7 August 2018 / 7 Perfection 175
- Fixed problem on Ballot Entry page for single-name by-elections.
- Ballot Entry - name search not highlighting “most used” matching name.
- Version 2.8.6 - 6 May 2018 / 9 Beauty 175
- Adjusted some colors to ensure that the site meets accessibility guidelines..
- On Ballot Entry page, adjusted buttons to make it more obvious when a new ballot is being created and how to delete empty. Usability: Most tellers had the last ballot created as empty, and were advised to delete them for the counts to match. Some warning to them when all expected ballots have been entered, would be nice. Or the ballot gets actually created on first entry (might need a check mark for empty ballot received). Arun 10. → good idea.
- Only allow “head” teller to add new people. (Multiple computers can be logged in with the head teller’s account if needed.) Resolves these issues:
- Fixed: “Intermittently, when adding a new or spoiled vote, then selecting a reason, such as "Add new name (including spoiled), the drop down menu for Eligibility Status didn't always appear.” #45
- Fixed: Tech fix: Teller reported: “When a vote was spoiled sometimes the list of reasons wouldn't show up so you had to delete and add a vote again for the long list to show up.” Similar: “The pop-up was not showing the options fully. I had to close the pop-up and hit add new again to get the pop-up show fully.”
- Fixed: Tech fix: Teller reported: “When one group added a new, spoiled name, it did not show up as spoiled on the other screens.” Similar: “...individual names that were not eligible would not show as red color or crossed off - they would show as valid votes. However, after the ballot was complete and they moved to the next ballot, if they returned to the previous ballot, it would show the name in red properly. The ineligible individuals were ones that were entered into the system during the counting process and not on the original voter list which only consisted of eligible voters.”
- Usability: Limit the ability of guest tellers to add new people to the list. Or, mark all such additions as needing head teller verification. Babak 3
- The new names added by Tellers should be more distinctive, and HT should be able to see what have been added. We kind of got a hint as those ones did not have as much details as other names. Arun 7. → The system does know which are new, but that is not displayed anywhere.
- Adjust permissions so that only the head teller can add names to the list of names. Or, at least add wording encouraging tellers to have all additions approved by the head teller.
- Adding new people while entering ballots… “tellers simply adding names without being given the OK from either of the head tellers or the IT team resulting in duplications and a mess we need to later clean up. Is it possible to either add a checkbox in the setup page to allow us to block this function from normal tellers, or even implement an approval step so people can still submit names that are missing for spoilt ballots that would go into a quarantine with a flag waiting for approval on an admin page before being submitted? Either option to limit/restrict this activity would prevent a lot of issues.”
- Fixed: Tech fix: The "ballot needs review" flag seems a bit flaky. If teller selects this for ballot A3, the check mark still shows when they are on to ballot A4, though it doesn't mark it as needing review. I suspect the new ballot routine doesn't clear the checkbox. Similarly when HT (Head Teller) is monitoring progress, and selects a ballot needing review, simply unchecking it does not always clear the needs review. We ended up setting and unsetting it again to achieve this. Arun 3.
Found a problem or have a suggestion?
Please create an “Issue” on GitHub at this location: https://github.com/glittle/TallyJ-2.0/issues
On Staging site
The staging site is at https://tallyj3-staging.azurewebsites.net/. At this time, it uses the same database as the Live site. The staging site will be one version ahead or behind the live site - please pay close attention to the version number if you visit it! This may be updated without notice.
Done, not published yet
Being Worked on
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
- 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.)
- “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.”
- 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.”
- 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
- 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
- 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.
- On the Front Desk page, give better indication when internet connection has been lost.
- 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).
- 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.
- 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.
- 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…
- 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
- 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...
- 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
- Voters would have to pre-register and be given a password. They log in using that password and fill in a ballot.
- Have a voting “window” of time, maybe the week before the election. Registrations could be processed up to the day before the election. The voting window would close during the election time, to coincide with when tellers are processing paper ballots.
- The mail obstacle to implementing this is validating the identity of the voter.
- 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
- “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.
- “Official” support location where people can discuss TallyJ.
- “Official” location to download the old Version 1.85 of TallyJ
- 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.