-
Notifications
You must be signed in to change notification settings - Fork 7
Home
The information below will help you get started on the development:
-
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);
-
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.
-
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'.
-
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)
-
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.
-
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
-
Now you are ready! Make sure to follow the development process mentioned in the Summary section on the BDD and testing page:
- Create the use case or user story (as a wiki page such as this one, until we find a better way);
- Create you own branch (as described here);
- Create the test suites and specs (using Jasmine) based on the user case or user story;
- Write the JS code according to use case/user story;
- Use Sinon-Chrome to create the test doubles of chrome api and any other external functions needed;
- Make sure the JS code passes all the unit tests;
- Tidy up the code: add comments and remove unnecessary bits;
- Ask someone to review your code (this will be mostly Kai or Phong), using github pull request;
- Merge the changes to the 'rebuild' branch.
Have fun!
Missing Features for Online Study
Behaviour: Node and Edge Creation
Testing and Behaviour Driven Development (BDD)
Video: Testing with Jasmine and Sinon-Chrome
Video: overview of SenseMap code
Video: browser features in the old 'master' branch
How browserProvenance.js works
Video: create REST API for MongoDB using Node.js