Community Bonding Period
May 21st marked the end of the community bonding period. During this period, I read the source code of existing developer tools in Firefox, mainly Web Console.
One of the main objective of community bonding period was to break up the project into parts, prioritize the parts and set up deadlines for these parts. The initial parts are as following:
- The first producer based on Web Console code : Network Producer (2 weeks)
- The Data Sink (1 week)
- The second Producer, most probably page events (1 week)
After completing these initial goals, I would combine the 2 producers along with the Data Sink to test the product and fix errors. The User Interface part would be next goal which will require ample time to design and develop an interface which is easy as well as fun to use.
This week marks the start of my coding period for Summer of Code project Graphical Timeline of Events. I have been coding since last week so I am a little ahead of schedule.
These are the main highlights of the week:
- Decided the Producer, Data Sink and UI structures and interaction methods with the help of Panos.
- Completed the writing Network Producer.
- Decided the structure of the normalized event which will be used by the Data Store to store event information.
- The Data Sink will push the event information using this normalized event type into the Data Store.
- The Graph UI will read the normalized event information from the Data Store and parse it keeping the normalized structure in mind.
- Almost completed the Data Sink code. Only the Data Store object is remaining.
- Developing a restart-less add-on to test the Graphical Timeline.
These are the architecture details of the 3 components of Graphical Timeline:
- Each producer will be implemented as a function in a separate jsm file.
- Each producer will import the
DataSink.jsmfile such that the
DataSinkobject is shared between all the producers.
- After importing, the producer should register itself to the Data Sink using
- Each producer should have the following methods
init(): To initiate the producer. This will cause the producer will start listening for events.
destroy(): This will stop any producer activity related to the producer.
- The producer will send the captured event to the Data Sink via the
- Data Sink will be listening for an initiating event produced by the Graph UI which will start all the (or selected) producers.
- Data Sink will listen to the activities of the enabled producers and normalize the incoming data into a common normalized structure.
- The normalized data will be pushed into the Data Store (using either array implementation or IndexedDB)
- Whenever some new data is pushed into the Data Store, Data Sink will inform the Graph UI about the same via dispatching an event.
- Data Sink will also be responsible for listening to event coming from Graph UI to enable/disable specific features of any producer.
The Normalized Event Data will have the following properties associated with it:
id– a unique auto incrementing id used to uniquely identify each data
type– one of the
groupID(optional) – same for multiple events associated with the same continuous process for continuous and repeating events.
name– a name related with the event to show up on the UI.
producer– a string containing the name of the producer which recorded the message
time– time of the event occurrence.
details(optional) – other details about the event.
I am using github to manage my code and the github repository can be found here.
I am hoping to complete the Data Sink by the weekend and will start on the next producer by Tuesday when I will have my next video meeting with Panos.