Clock add-on: being modernized as we speak


Hello NVDA users,

In the midst of studying for graduate coursework, I’m delighted to announce that Clock add-on (developed by Hrvoje Katic) is undergoing massive facelift. I’m sure many of you were wondering about lack of news about this add-on, but fear not – a group of NVDA add-on developers are updating the add-on to make it work on newer NVDA releases.

Part of the reason why there has been no news on Clock add-on was the difficulty in finding new maintainers. The add-ons community recently got in touch with Hrvoje (original author) about the status of the Clock add-on with NvDA 2021.1. In response, Hrvoje informed us that he cannot maintain the add-on on a timely manner and asked the community to keep it updated. After a community-led discussion, it was agreed that I (Joseph Lee) will perform a massive “surgery” of this add-on i.e. I’m modernizing it on behalf of the community as it was felt that I was the best person to do it (a huge thank you to Abdel and others for keeping the add-on updated for a while).

The whole point of this massive surgery is to teach Clock add-on to use newer NVDA features. The last major change was made last year (2020) as part of upgrading to Python 3. Since then many things happened, and it was found that there are features in newer NVDA releases that the add-on can use. The most noticeable change is better integration with NVDA’s multi-page settings interface, as well as defining scripts easier.

At the same time, it was pointed out that the add-on uses a mixture of Python 2 and 3 code. Python 2 is end of life as of 2020, and since NVDA 2019.3’s release more add-ons have migrated to Python 3. Therefore, it was decided that this would be the golden opportunity to move Clock add-on to full Python 3 once and for all.

But perhaps the biggest reason for this surgery is to clean up the add-on code. I think the biggest reason why the add-ons community asked me to perform this facelift was recent experiences with modernizing add-on code. I believe that one way to make add-on development easier is to align the source code more closely with that of NVDA screen reader itself. With this mindset, I have performed code cleanup and modernization on a number of add-ons, and add-ons that were maintained by me recently had their code cleaned up.

So in summary, the following changes are planned or coming with a future version of Clock add-on (tentatively scheduled for late September):

  • NVDA 2019.3 or later is required. As I pointed out earlier, this is so that the Clock add-on can take advantage of Python 3 and newer NVDA features.
  • Possible changes to the user interface messages: there are areas (particularly add-on settings) that could see some refinements to interface messages. Although not for certain, I expect some changes will be made to interface messages.
  • Many internal changes to align add-on source code closer to that of NVDA screen reader. This mostly affects future add-on maintainers.


As for how long I will maintain Clock add-on, it depends; I think maybe several months before I pass the add-on back to the community for further maintenance as my primary job with this add-on is the grand modernization surgery. So, as users, you can rest assured that I and members of the add-ons community are working hard to release a version of Clock add-on that is optimized for NVDA 2019.3 and later (and also compatible with 2021.1 and later).

Thank you.