Daily report: May 31st 2013

Today I experimented with the abstraction code, ending up with more breakage than functionality.

  • I worked on replacing linkedConversation with linkedPanel, since linkedConversation is mostly used in a way that doesn’t depend on it actually being a conversation.
  • I moved the tab context menu code to the tabbrowser-tab binding. This worked, but didn’t yield very good results. Tab images got a bit broken and there were some mouse event issues.  I decided to move it back to tabbrowser, with the idea that generic tabs which wanted to implement their own context menus could do so by setting unsetting mousethrough="always" – this would show the tab’s particular context menu rather than tabbrowser‘s.
  • I added in a aTabClassName parameter to addGenericTab to allow tab classes other than tabbrowser-tab.

Progress was slow again because I had to decipher a lot of vague/complicated code (e.g. this.parentNode.parentNode.parentNode.parentNode.foo(this)) and wasn’t able to open DOM Inspector until Mook_as mentioned the -inspector command line flag (thanks!).

To-do: make tabbrowser-tab easily extendable and further work on tabtest.xml to be a full proof-of-concept for adding non-conversation tabs.

Daily report: May 30th 2013

With help from #instantbird, I was able to fix yesterday’s bug where Mic was able to open an arbitrary UI in a tab but I wasn’t (with the same code). I had to add the newly created tabtest.xml and tabtest.css to jar.mn. Then everything worked and I was able to open the test UI, the add-on interface, the account manager, etc. in a tab (screenshot). Of course, it was still pretty broken and there were a load of errors from different methods assuming that the tab held a conversation.

  • Mic had a much better way of generating new tabs: create a new command (“/newtab”) instead of clicking the buddy list (new bootstrap.js).
  • I did some research into how best to eliminate the errors and add abstraction. The discussion included moving some of the code in tabbrowser to the tabs themselves.
  • I somehow broke my local tree and decided to do a fresh clone.

Today was slow but I hope to make more progress tomorrow.

Daily report: May 29th 2013

Today GSoC really started to kick in. I started a repo for the project here. As Mic suggested, I started working on getting the tabbrowser to accept tabs that aren’t linked to conversations.

  • As a start, I made a clone of the _addConversation method in tabbrowser.xml, and made some changes to let it add non-conversation content. Here‘s a diff of _addConversation and addGenericTab with Mic’s comments.
  • I then created tabtest.xml and tabtest.css (for binding) in order to test it out.
  • I created a small add-on (bootstrap.js) to add a new tab with the contents of tabtest.xml when the buddy list is clicked. I couldn’t get it to work however.
  • Mic got it to work from the error console using the same code, but we couldn’t figure out what was wrong on my end and decided to debug further tomorrow.

Bootstrap

Hello, world!This blog is dedicated to documenting my progress through Google Summer of Code 2013 with Instantbird – a Mozilla based instant messaging client. I will be working on Awesometab – a replacement for the current “Join chat” dialog that aims to be good-looking, efficient, and feature full auto-completion goodness.

My mentor for this project will be Benedikt Pfeifer (Mic on IRC). You can read my proposal’s abstract here.

I’ll be posting daily updates here detailing what I’ve been up to during the day, as well as posts summarizing progress on a weekly basis.

Here’s looking forward to a great summer!