Re: First steps in addon development

Ram贸n Corominas

Hello Samuel, thanks for your answer!

what I do is I create symbollic links to the addon file from my
project directory to the scratchpad using the mklink command. This way I don't need to move files back and forth between my scratchpad and project folder

Good idea, I was using some symlinks as "shortcuts" to quickly access my working directories, but didn't realize that they could also work this way, thanks!

good luck and looking forward to seeing your progress :)
Thanks! I'm learning a lot and hope to start contributing soon, although it will bbe after my holidays, which are starting next weekend! 馃槈


On Sun, Aug 14, 2022 at 11:19 PM Ram贸n Corominas <ramon@...> wrote:
Hello everyone,

I'm new -writing- to this list, so firstly I will introduce myself...聽 My name is Ram贸n and I'm a freelance accessibility consultant based in Asturias, north of Spain. I also do some Python programming, and I'm starting to play with NVDA code and Addons

For the moment I've developed some toy code and played with basic functionalities, but I have some ideas for more complex experiments and I would like to know your experiences developing addons. Mostly how you plan, develop and debug your code, especially for "big" addons. I've asked this before in the Spanish lists and obtained very good answers and advice; now I finally found the time for translating these questions to English and will love to learn from this great community.

You'll see that there are many questions, I've tried to be exhaustive and cover all the development process, but of course feel fre to ignore my script and share any ideas that you consider useful when developing addons / NVDA features.

1. What is your development environment setup?
聽 聽 - NVDA setup (installed, portable, source...). Do you consider different development scenarios (for example, reverting NVDA source to an older version)?
聽 聽 - Additional addons or other tools to help with debug...
聽 聽 - System Python installed, if any. Virtual environments?
聽 聽 - Code/markdown editor/IDE, linting, useful extensions, automation...
2. Documentation
聽 聽 - Beyond directly reading NVDA's source code, do you use any library/API references, guides, etc.?
聽 聽 - Any recommendations of books, blogs or other learning resources? (better if they are especific to NVDA/Screen readers/TTS,Braille, etc.)
3. Files, directories, code structure
聽 聽 - Apart from using the Addon Template, how do you organize addon's code, modules/packages, public/private parts, functions, classes, configurations...?
聽 聽 - Working directory: do you write code in a "draft" directory or directly in the scratchpad directory? Is it safe to work in the scratchpad if there are errors in the code, for example?
聽 聽 - Third-party dependencies: do you include their full code or just the needed code (if possible), have you faced compatibility issues with other addons? What about executables/DLLs/database engines...?
聽 聽 - Version control: do you follow a "standardized" workflow or methodology? do you have an issues/PR policy for contributing? Do you use Github actions or automation?
4. Coding and debugging
聽 聽 - Do you use coding aids like autocompletion, linting, text espansion, code suggestions/copilot...?
聽 聽 - How do you test and debug your code? How do you log or trace variables/errors?
聽 聽 - Do you include tests in your code? Do you follow a methodology like TDD or similar?
聽 聽 - Do you use Github Actions or similar to automate things like basic PR checking, building of releases, etc.?

I know that most of the above questions are not necessary for small addons, but I would like to start building my house with the best foundations that I can afford 馃槈

Thanks in advance!

Join { to automatically receive all group messages.