Skip to content
Kai Xu edited this page Aug 18, 2021 · 26 revisions

The information below will help you get started on the development:

  1. If you haven't done any Chrome extension development before, have a look of Google's tutorial on Chrome extension development (historymap is developed using manifest v2);

  2. We use Git a lot (this is GitHub anyway :-). If you are not familiar with it, there are many good tutorials, I would recommend the free Pro Git book. The first 3 chapters should be enough to get you started. The most important part is the 'collaborating', as you will be working in a team. Github has a lot of information on this.

  3. We are using Behaviour-Driven Development (BDD), which is a good software engineering practice to make sure the software behaves what the users want not what the develop thinks it should. It closely relates to user requirements and testing. There are more details here. There are a few links on the right about the 'Behaviours' and 'Testing'.

  4. We also use Agile development, which is another good software engineering practice. The link before explains the important concepts, and the 'user story' and 'task' match those from the BDD. We map them to GitHub items like this:

    • Sprint (Agile) <--> Milestone (Github)
    • (more detailed) User story (Agile) <--> Wiki page (Github)
    • Task (Agile) <--> Issue (Github)
  5. We are using the github project board to keep track of who is working on what and the progress. This is very similar to other project management tools such as Trello.

  6. Now, you are almost ready. Before diving into the coding, have a look of the Architecture and existing bugs and planned features in the issues. This is Phong, who coded the original SenseMap, explaining how the code in the simplified 'rebuild' branch works: https://youtu.be/0F2onoJ_3wQ

  7. Now you are ready! Make sure to follow the development process mentioned in the Summary section on the BDD and testing page:

    1. Create the use case or user story (as a wiki page such as this one, until we find a better way);
    2. Create you own branch (as described here);
    3. Create the test suites and specs (using Jasmine) based on the user case or user story;
    4. Write the JS code according to use case/user story;
    5. Use Sinon-Chrome to create the test doubles of chrome api and any other external functions needed;
    6. Make sure the JS code passes all the unit tests;
    7. Tidy up the code: add comments and remove unnecessary bits;
    8. Ask someone to review your code (this will be mostly Kai or Phong), using github pull request;
    9. Merge the changes to the 'rebuild' branch.

Have fun!

Clone this wiki locally