Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save atiqueahmedziad/7fd191a88c71c5b09636169bdc8b4d67 to your computer and use it in GitHub Desktop.
Save atiqueahmedziad/7fd191a88c71c5b09636169bdc8b4d67 to your computer and use it in GitHub Desktop.

GSoC 2020 Work Product: Extension Activity Monitor

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.

Project Overview

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

What I Have Done

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.

What I Have Learned

  • 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.

Contributions

Merged PRs (Arranged in ascending merged order)

First Phase

PR#1 - chore: Initial project setup
PR#2 - feat: save and load module added
PR#3 - feat: popup and extension monitoring feature added

Second Phase

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

Final Phase

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

Blogs

My Google Summer of Code (GSoC) Journey with Mozilla: 2nd phase completed

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment