In this release, I have been working on this issue (pull request) and also translating Thimble into Vietnamese. The issue was a quite simple fix like last time but it has taken a lot of my time to find where the actual problem is and figuring out how to fix it.
Working on the issue
The issue happens whenever you try to move a file into a folder that already contains a file with the same name. When that happens, it fails silently and freezes up the whole page. The issue can be reproduced as follows (taken from the issue):
The first thing came to my mind was there seems to be an error that has not been handled in the code or there seems to be an infinite loop that is running.
My professor has also pointed me to the code where the problem may have taken place. It is the bramble-move-file extension.
Starting to debug the code, I walked through the code when the problem happens and it is indeed there is an infinite loop that was running when this happens but the code here was very hard to understand because the functions’ name were a single letter and even the function definition was hard to understand. It feels like the problem probably cannot be fixed around here. So I continue to walk through the code a few more times and trying to understand every single line to know why the infinite loop is happening.
After multiple walk-throughs, I finally noticed that there is actually an error dialog popup like follow:
However, it seems like the dialog is dismissed immediately, that explains we do not see anything shows up when the error happens. At this point, it seems like the problem here is actually when we are trying to display the dialog. Therefore, started to look at the MoveToDialog.js file more carefully and trying to pinpoint where the problem actually happens.
I looked at when the move fails and saw how a dialog is displayed. Looking at this function, it seems maybe there has something to with the
autoDismiss parameter, I tried passing in false but the problem still persist.
Then, I looked at this code snippet and tried to walk through the code it was very difficult due to my inexperience with the Promise concept. However, I understand that when the
MoveUtils finishes moving the file, it will perform the
_finishMove function, if
move fails it will call the
_failMove function, and no matter what happens it will close the
This is when I came to realize that this is flawed since what would happen when it fails and it is also producing another dialog. Therefore, I decided to change from
done. Surprisingly, it works and now it is in the pull request linked above.
Learning how Thimble does localization from the previous released, I had an interest in translating Thimble into Vietnamese (my first language) to learn how does Mozilla actually do translation and also I would like to have Thimble to be more accessible in Vietnam.
Mozilla actually has a website that will help with the translation for many of their projects, it is called Pontoon. The website is pleasant to use with a list of all the strings listed nicely and it also has recommended translations taken from multiple sources. They were mostly very good translations.
At the point of writing this post, I have suggested all strings from Thimble and waiting for a reviewer to review and approve and then enable it on Thimble. During the process, I was able to get to know the reviewer who is also speaking Vietnamese and both of us were very relatable to each other since we are working in the same industry.
Fixing the issue mentioned above has enabled me to get to know Thimble and Bracket much better and I have earned more experience with the Promise concept.
While translating Thimble, I have answered myself a question that I have always wondered, it is how does software get translated into many languages. Now it is answered along with meeting a new friend.
My Experience With Open Source
In the beginning, open source is a concept that I always thought that it would be very hard to get involved, especially with communicating with everyone on it. However, my professor has helped me to break the ice.
I am now very comfortable interacting with everyone on it and more confident going through the code that I didn’t write. It is still very challenging to fix every bug but now it is more like an encouragement and I will always up to that challenge.
In the end, I have acquired myself a lot of programming experience that will never be taught in school as well as connections to many people in the industry. And I have finally found way to contribute
Finally, I have found a way to contribute my knowledge and education to the society and it is open source. It is something that everyone will benefit from, it can be small but will be big once they add up.