Student: Md Atique Ahmed Ziad | Email
Mentors: Andreas Wagner | Luca Greco | Rob Wu
I am very thankful to Mozilla and my mentors for giving me the opportunity to work on the "Extension Activity Monitor" project in Google Summer of Code (GSoC). It was a great experience to build up this project from scratch. We had started by analyzing the requirements and ended up with developing the minimum viable product in GSoC.
Extension Activity Monitor is a privileged extension for Firefox that monitors the activities of other installed extensions. It's an additional tool to aid investigating bugs in the extensions or in the Firefox WebExtensions internals.
View Project | Project Proposal | User Requirement Document
I had started with documenting the user requirements in community bonding period. During the 1st phase, I developed the backend and browserAction popup of the extension. I developed the activity log page (extension page) during the 2nd and 3rd phase of GSoC. Introduction of MVC architecture and web components during the 2nd phase was a bit challanging, yet most enjoyable part of the GSoC. Before signing off from GSoC, I wrote a developer documentation that may help new contributors to get started with the project.
- Requirement analysis and formulating user stories.
- Building a project from scratch.
- Code is for humans first and computer next.
- Writing modular and encapsulated codes.
- Writing meaningful tests.
- Learned much about JavaScript.
- Learned about some Web APIs and WebExtension APIs.
- Learned about MVC architecture & Web Components.
- Learned about security vulnerabilities.
- Writing developer documentation.
More importantly, I learned how my mentors think & do in certain situation of development cycle.
PR#1 - chore: Initial project setup
PR#2 - feat: save and load module added
PR#3 - feat: popup and extension monitoring feature added
PR#5 - test: console messages should cause eslint error
PR#6 - chore: added extension installation instructions
PR#8 - test: disallow unsanitized code with eslint check
PR#4 - feat: activitylog extension page added
PR#9 - feat: table view webcomponent is added and mvc pattern is followed
PR#10 - feat: filter logs with extension id, view type, api type
PR#12 - feat: clear logs from activitylog page
PR#14 - feat: substring filtering option is added
PR#16 - fix: clear logs event listener regression
PR#15 - feat: styles of log detail view is updated
PR#13 - feat: filter option with API name
PR#17 - feat: filter option with timestamp in context menu
PR#28 - feat: load logs from json file
PR#40 - feat: Clear the start and stop timestamps filter separately
PR#38 - feat: start monitoring newly installed extensions automatically
PR#31 - feat: ActivityLog DevTools panel added and Filter by tabId is supported
PR#47 - fix: contextMenu listener returned when selected Element is null
PR#48 - "undefined" viewType displayed as 'other' in filter checkbox
PR#46 - fix: Made timestamp consistant
PR#44 - docs: Contributing doc added
My Google Summer of Code (GSoC) Journey with Mozilla: 2nd phase completed