TallyJ 2 - Status and Feedback
Last updated... 29 April 2017 / 3 Beauty 174
TallyJ is published at https://tallyj.com/ (or https://www.tallyj.com/)
Introductory videos are available on YouTube.
Discussion about TallyJ can be found here: http://www.facebook.com/TallyJ.Support
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 and Hangouts first!).
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 costs from $10 - $60 per month to host. If you and your community have found TallyJ to be useful, please consider sponsoring TallyJ and contributing a modest amount to keep it going! This can be done as a monthly contribution via Patreon, a lump sum at the GoFundMe website, or via Paypal! Thank you! Thank you also to the Local Spiritual Assembly of Calgary for sponsoring the permanent home for TallyJ.com in their Azure account and to Microsoft for their Azure grant program.
For local installation, see the Local installation instructions document.
The source code is maintained here: https://github.com/glittle/TallyJ-2.0 (open source)
This document is shared to keep you informed, and is the mechanism I’m using to track future plans!
See the TallyJ 2 - Change Log document for a list of recent updates.
- Windows 7, 8, 10 - Chrome and Firework work well. IE 11 has been known to have problems.
- Mac, iPad - 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.
- Other browsers - please test before using at an election!
Recent Changes to the Live Site
- Version 2.4.2 - 29 April 2017 / 3 Beauty 174
- Increase timeouts to handle larger name lists (more than 40,000 people)
- Version 2.4.0 - 16 Dominion 173 / 20 February 2017
- Version 2.3.30 - 4 Knowledge (`Ilm) 173 - Oct 17/18, 2016
- Fixed: In a single-person by-election with a tie, the tie-breaking numbers are not saved.
- Done: Usability: On the setup page, only show required LSA start date when it is a Normal election.
- Done: Minor improvements to the list of elections.
- Done: Issuing with single member by-election… (1) When entering ballots, if we deleted one person from a ballot group, it would sometimes duplicate another (this may have been our spotty internet, but the rest of). → Could not duplicate. (2) None of the tellers reports are displaying, except for the analyze ballots (e.g. the two – by name and by votes – on view detailed reports, as well as the “display tellers’ reports”). → Working now.
On Test/UAT site
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 priority
- If the head teller is on the “Configure this Election” page and turns on the “Show on Home Page”, it will not take effect until the “Save Changes” button is clicked and the head teller leaves or refreshes the page.
- 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).
- When an election was saved, then imported as a new election, the Front Desk did not show any names!
Other ideas, by freshness and priority
- Adjust permissions so that only the head teller can add names to the list. Or, at least add wording encouraging tellers to have all additions approved by the head teller.
- Tech: add page handlers for Apple URLs to avoid false errors when scanned by google bots.
- For final tellers report, zoom 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 key press or click. Could show placeholders with numbers (1. ___ 2. ___ 3. ___ 4. ___ …), then fill in the names with resulting votes.
- Fix the Welcome page to show correctly on small screens.
- Had a situation where two ballots were collected before the election but were not in an outer envelope and had no identifying information. As such they had to be considered as spoiled. The Analysis page has no way to enter these extra spoiled ballots without also saying who they came from.
- Allow the number of “next highest” to report on be changed on the setup page even after ballots are entered.
- Usability - improve the layout on the home page when viewed on small screens (smart phones)
- Usability - on Analyze page, currently showing “-” for 0. This can be confusing. Better to show “0”.
- 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.
- During setup, only allow “next highest” for Unit Conventions and custom elections.
- Spec - Allow teller’s report page to include unresolved ties? Good for when tie-breaks are held later.
- Show, with notice that ties exist. Would have to show all the names in the tie.
- For Roll Call, give 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 or not.
- 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.
- After the analysis is “approved”, it should be locked down. In one case, after logging out and in, had to run it again to see reports.
- Enable better security so that each guest teller can only alter ballots they have created.
- 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?
- 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.
- Usability: (Babak, local installation) On the Front Desk page, there is an intermittent issue where the selection stays highlighted green instead of the usual quick green flash before changing to purple. This can result in either the selection being accepted or not accepted. The only way to confirm the selection is to refresh the page and check the record again.
- Improve usability of the Front Desk page. Give better indication when internet connection has been lost.
- Usability: (Babak, local installation) Searching for names brings back inconsistent results. For example if the name is 'Glen Little', searching for 'Gl' or 'Little' will bring results however in a lot of cases 'Glen' brings back no results.
- Usability: After entering 150 ballots, added an alternative name on the Person edit page. About 8 ballots needed to be revalidated. This caused a long delay in the system and seemed to lock it for a while.
- Usability: On person edit page, ensure that changes are saved before allowing a different person to be selected.
- Usability: Allow the re-import of a CSV with people’s names, and update the Eligibility status for each person if it is changed.
- Usability: “When a non-existent name is searched, and then we attempt to add a new individual, we select "Add a new ..." and sometimes, nothing happens. We have to go back to the drop down, select "Select a ..." and then re-select "Add a new ..." and then it takes us to the page where we can enter their details.”
- Tech: When loading a very large csv file names list, it doesn't indicate when it is done.
- Usability: On the “all ballots for review” detailed report, if many ballots, ask for which computer set to show
- Tech: Can’t reproduce. On ballot entry, after first few uses, would not pre-select the person with the highest number of votes. Name in list was not selected (on IE?).
- 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: During use of Front Desk, tellers wanted to know how many have registered. Had to switch to Count Ballots page to determine. Would be nice if it was more easily available right on the Front Desk.
- Usability: Update active Front Page pages when new person is added to list, or person is marked “unable to vote” (4h)
- Usability: On Front Desk, have link to Person edit page for each person (4h)
- Usability: When changing election mode, go immediately to 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.
- 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.
- Documentation: Add references to GoFundMe to the live website.
- Usability: sometimes there is a delay after logging in before the elections show up. See about doing a “warm up call” when the welcome page is first shown.
- 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 LSA, 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 “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 possible to use other kind of csv file like (point-comma) or other file format.
- Tech: Speed up login process!
- On Teller’s Report page, show names of elected one at a time… press a key to show each next name (4h)
- Old tech: Computers seem to logout after 20? minutes - should be much longer. Enable keep alive to server. (6h)
- Usability: Add a “forgot password” feature to reset teller’s password. Login system needs redesign. (12h)
- 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)
- This is a major new feature for TallyJ. Initial planning is done.
- Would need multiple tellers to log in, so should depend on ability to share an election with someone else
- 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.”
- For now, best to request tellers to consult with head teller before adding any names.
- Not sure what approach would be best. (16h)
- 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...
- On the detailed tellers report, have an option to cut off the report at X number of votes. Any who received less would not be included. The number could range from the number received by last elected person down to 1. Add other ways of reporting… next X people, all with at least X votes (4h)
- 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)
- 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.
- 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 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
- Add ability to Reports page to download as CSV (12h)
- 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)
- As a person’s Front Desk status is changed, retain a history log of all changes. This helps to investigate if one teller changes what another teller did. (12h)
- Usability: Add more tips on all pages. (8h)
- Usability: Be able to import/copy names from another election. How useful is this? (8h)
- 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)
- Tech: Consider adding Zopim.com for supporting TallyJ. (12h)
- 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, they should be completely anonymous. (12h)
- Usability: Make some screencasts (like Camtasia-type) for learning the new system (32h)
- 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)
- 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…
- On Monitor page, allow lock out of a computer (not if full teller) (8h)
- 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
- Add screen to show log of activity in the election. (Convert times to local time.) (12h)
- Add more logging.
- Improve sys admin reporting of # of logins, # of elections, size of populations, etc. (12h)
- Add page for named admins to view log reports
- Can use remote db access from Excel for now.
- Allow more than 9 for a local election? Don’t know of any locations that use this.
- 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
These are rough concepts and ideas... details are sure to change and be improved!
- Phone-in voting (future)
- Establish a network of Baha’is who would be involved from around the country/world
- Voter (A) would call a number, and enter a number 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.
- Self-service 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.
- Mobile version
- A few aspects of TallyJ might be suited for a mobile version...
- DONE: Front desk registration - person with mobile phone could go to different rooms of the election location, and “register” people who may not have gotten to the front desk. Such as people in the kitchen who may have arrived before the tellers started registering people.
- DONE: Head teller monitor - the head teller could view the status of the ballot entry process. (Limited value, as the head teller should be with the tellers at all times!)
- 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
- 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.
- 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 Version 1.8 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.