1. Hi,

    Apologies for such a long delay in the update. Past couple of weeks were spent with medical practitioners examining and diagnosing my side of things. That took almost all of my time, energy and attention.

    So, here's what I have been up to:
    In the last update I mentioned about implementing a dummy protocol trying to display local eml (email messages saved as files) files from folders on disk in Thunderbird. I have been trying to write it up taking references from another protocol implementation from my mentor R Kent James, tweequilla.

    This is important and a significant step for the following reason:
    Once I am able to implement a protocol, I will know which components are to be defined and implemented, how these components are to be added and registered using XPCOM, how these components can be invoked using Account Manager of Thunderbird and implementation details of various other overlays of windows and dialogs in Thunderbird.
    All this knowledge and experience gained will be easily applicable to the implementation of JMAP.

    As there is no proper documentation available as to which interfaces and components need to be implemented and defined, most of my time is being spent in debugging my code and trying to understand component registrations and more importantly, process flow.

    I have been successful in implementing IncomingServer component and registering it. My next step is to understand the interdependence and process flow of all the required interfaces viz., account manager, account, identity, protocolinfo, incoming server and create an account of the "folder email" protocol to be listed in the accounts.

    Suggestions are welcome.
    Apologies again for being slow, but the reasons were beyond my control.

    Thanks.

    0

    Add a comment

  2. Hi,

    I have been selected as a GSoC participant this year with the Fedora Project as my umbrella organisation. Thanks to the Fedora Project for selecting me.
    This summer, I will be working on implementing JMAP from fastmail in Mozilla Thunderbird under the guidance of R Kent James. The idea is to demonstrate the implementation of this protocol as an addon using Skinkglue.

    Skinkglue is developed and maintained by R Kent James. It allows other extensions to add new account types in Thunderbird. Currently this is used at least by the ExQuilla and TweeQuilla extensions. This provides critical glue between the extensions and Thunderbird when new account types are needed. Demonstrating Skinkglue as an addon will also be a significant step of the project.

    Currently, I am trying to use Skinkglue as an addon and use it with a simple proof-of-concept account type to get an idea of how an account protocol is to be written as an addon to be used in Thunderbird using Skinkglue. My mentor has suggested me to try and display local .eml (email messages) files that are located in traditional file folders in Thunderbird. Since there is almost no documentation available, most of my time is being spent in trying to understand the core code and see what is needed.
    3

    View comments

  3. Hi,

    An important commitment of my project this summer was the conversion of async mailnews/ tests to use Promises.

    Sometimes in the tests we need to wait for an operation to complete that dos not occur synchronously (that is, it isn't done when the function call we made to initiate the operation returns control to us). This is likely to happen when I/O is involved or a potentially expensive process wants to break itself up into smaller chunks.

    So we have asyncTestUtils for the same.
    If interested, one can look up this extended framework.
    But, we now intend to use the new Promise API for the same. Explaining what Promises are all about is beyond the scope of this post and shouldn't be much of our concern as well. But for those who are interested, please go through this awesome introduction.

    So, the first step in converting an async test to use promises is to figure out what async parts does it have.

    Instead of making our async function calls in between the "do_test_pending()" and "do_test_finished()" pair, we add tasks.
    Whenever we need to wait for an async operation, we use yield operator in case of asyncTestUtils. When using promises, we yield a promise.
    This promise gets resolved or rejected if the intended operation returned successfully or failed respectively.

    We can even chain multiple async operations using promise.then() method.
    And if there are multiple multiple async operations, we can't figure out the order of their execution. So, we execute them using promises and we yield all of them using Promise.all() to avoid any race conditions.

    So, for writing any async test, we have our main run_test() function.
    We add all the tasks for the event loop in this function using add_task() function.
    The arguments to this function are generators and/or functions.
    If the function yields one or more promises, we make them generator functions.
    Once all the tasks are added, run_next_test() is called once. It is called just once before any other function is called. No function or function generator that has been an argument to add_task() calls this function. Tasks are run one after the other automatically.

    We also needed to make various listeners viz. urlListeners, copyListeners, folderNotificationListeners, streamListeners etc. promise based. So, my project mentor
    Kent James came up with the idea of PromiseTestUtils.

    It has almost all the promise listeners and helper methods we needed so far while converting the async mailnews/ tests to use promises. If you need another promise based listener or helper method that isn't there, please add it to this module so that others can use it as well.

    Few bugs to give a demonstration of the way we have converted the existing tests are:
    a) 1011597
    b) 1016767
    c) 1013800
    d) 1024053
    e) 1023700
    f) 1034231
    There are many other bugs accomplishing the same task and can be found on BMO.

    If there are any suggestions or queries, please feel free to drop a comment.
    Thanks.
    0

    Add a comment

  4. Hi,

    Okay I accept its been a long time since my last post. I got busy with a few other activities too.
    But I have things to mention.

    We are running behind schedule and I am trying to cope up. In the meanwhile,
    a few more local/ tests landed and we are now left with just one test from local/
    that is specific for mbox mailbox storage format so we don't need to worry about that as of now.

    A few more tests have been converted to use Promises and a few more tests to work with maildir.
    We also had a regression, so we (I and rkent) are trying to resolve unique filenames
    at the time of creation with inputs from Neil.

    Moreover, another issue with maildir was found. It is about the folder size displayed in
    Thunderbird for maildir folders. We are working towards fixing that as well.

    I am also trying to make the remaining base/ and imap/ tests to use Promises and will try
    to fix as many of them as possible to work with maildir.

    So, if we look back at our objective of making a push to maildir and convert the tests to use
    the new Promise API as we touch them and make backend fixes as well as test fixes to make
    mailnews/ tests pass with maildir, I think we are doing the right job, though a bit slowed down as of now.

    Suggestions are welcome.

    Thanks.
    0

    Add a comment

  5. Hi,

    Mid-term evaluations are over and I am glad I passed the mid-term evaluation! :)
    Thanks to my mentor R Kent James, it wouldn't be possible without him.

    Now, a short summary of the project progress so far:

    If you have been following the spreadsheet, we also took up another initiative of converting the touched
    tests to use Promises. We have completed almost all of the mailnews/local/ tests to work with both
    mbox and maildir mailbox storage formats!

    The patches have reviews but are waiting to be checked-in as currently the tree is in busted state.
    I think the fixes will be available in Daily once the tree is restored to working state. Users may be interested in the pop3 filters and folder rename method that now work with maildir!

    Suggestions are always welcome.

    That's it for now,
    Thanks.
    0

    Add a comment

  6. Hello all!

    The time since my last post has been utilized in converting async tests to use Promises.
    The status can be seen on the spreadsheet. And now, we expect to have a few
    more maildir test fixes soon :)

    For the record, we have landed fixes for promise conversion of the following tests:

    We are trying to maintain a standard approach (proposed by my mentor R Kent James)
    by adding async listeners in PromiseTestUtils.jsm and using them.

    Please stay tuned for more action on maildir :)

    As always, suggestions are most welcome, be it about the project, ideas, blog post or anything you feel needs a suggestion.

    Thanks.


    0

    Add a comment

  7. Hi!

    If you have been following the meta bug 1011399 or the spreadsheet, you know that we are making progress as well as the remaining post :)

    For others, here we go!

    Every new test that I open takes me to another area of maildir implementation so its a nice experience.
    Apart from making our xpcshell test suite pass with both mbox and maildir, we also plan to convert all the async tests that we touch, to promises and tasks.

    For this, I am learning about Promises and trying to use them in our tests; an attempt can be seen on bug 1016767.

    A short summary of the work done and work in progress so far follows:
    • Fixed test_localFolder.js
    • Conversion to Promises for async tests is being done(status can be
      seen on the spreadsheet). This will be followed by the check-ins of the fixes.
    • These issues are in process and fixes are pending for conversion to Promises:
      • Discovered and fixing an issue in the implementation of POP3
        filter moves, test_pop3MoveFilter.js and test_pop3MoveFilte2.js
      • Discovered and fixing an issue in nsMsgMaildirStore::RenameFolder()
        method and test_nsIMsgLocalMailFolder.js.
    That's it for now, will post updates as they happen, in a timely manner :)

    Suggestions are most welcome, be it about the project, ideas, blog post or anything you feel needs a suggestion.

    Thanks.
    0

    Add a comment




  8. Hi!

    I am selected in GSoC program this year.
    My umbrella organisation is Mozilla and product is Thunderbird.



    My project is about making our existing test suite work with maildir as the default mailbox format.

    Initially we have developed pluggable stores interface. We are very well aware of the benefits that maildir will bring.

    We have it implemented in the backend and want to expose it in the UI so that the users can choose in which mailbox format their smart email client (Thunderbird) stores their emails. But before that, since "the only record of users' mails may be at stake", we want our test suite to successfully pass for maildir as well.

    Our first focus is on making our xpcshell tests "pass". With "pass", I mean that the tests pass with both mbox and maildir mailbox formats.

    Meta bug for my project is bug 1011399.
    We also need a shared place to keep track of the overall project, progress and ToDo list that can be seen by everyone interested, so I have this spreadsheet. This will keep changing throughout the project. I have enabled comments on the spreadsheet so that we can have views from everyone who wants to have a say.

    I hope this becomes a success by the end and we make a push to maildir this summer :)

    Suggestions are most welcome, be it about the project, ideas, blog posts or anything you feel needs a suggestion.

    Thanks.
    0

    Add a comment

Blog Archive
Loading
Dynamic Views theme. Powered by Blogger. Report Abuse.