It's be great to talk with Jonathan-- feel free to connect us. Thanks.


The bug I mentioned manifested itself like this:


Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/gevent/greenlet.py", line 327, in run
    result = self._run(*self.args, **self.kwargs)
  File "/vagrant/inbox/mailsync/backends/imap/generic.py", line 190, in _run
    fail_classes=self.retry_fail_classes)
  File "/vagrant/inbox/util/concurrency.py", line 120, in retry_and_report_killed
    **reset_params)()
  File "/vagrant/inbox/util/concurrency.py", line 73, in wrapped
    return func(*args, **kwargs)
  File "/vagrant/inbox/mailsync/backends/imap/generic.py", line 217, in _run_impl
    self.state = self.state_handlers[old_state]()
  File "/vagrant/inbox/util/concurrency.py", line 73, in wrapped
    return func(*args, **kwargs)
  File "/vagrant/inbox/mailsync/backends/imap/generic.py", line 270, in initial_sync
    self.initial_sync_impl(crispin_client)
  File "/vagrant/inbox/mailsync/backends/imap/generic.py", line 293, in initial_sync_impl
    remote_uids = crispin_client.all_uids()
  File "/vagrant/inbox/crispin.py", line 489, in all_uids
    fetch_result = self.conn.search(['ALL', 'UID'])
  File "/usr/local/lib/python2.7/dist-packages/imapclient/imapclient.py", line 588, in search
    return self._search(normalise_search_criteria(criteria), charset)
  File "/usr/local/lib/python2.7/dist-packages/imapclient/imapclient.py", line 621, in _search
    for item in parse_response(data):
  File "/usr/local/lib/python2.7/dist-packages/imapclient/response_parser.py", line 46, in parse_response
    return tuple(gen_parsed_response(data))
  File "/usr/local/lib/python2.7/dist-packages/imapclient/response_parser.py", line 56, in gen_parsed_response
    for token in src:
  File "/usr/local/lib/python2.7/dist-packages/imapclient/response_lexer.py", line 118, in __iter__
    for tok in self.read_token_stream(iter(source)):
  File "/usr/local/lib/python2.7/dist-packages/imapclient/response_lexer.py", line 149, in __iter__
    return PushableIterator(six.iterbytes(self.src_text))
  File "/usr/local/lib/python2.7/dist-packages/imapclient/six.py", line 597, in iterbytes
    return (ord(byte) for byte in buf)
TypeError: 'NoneType' object is not iterable
<FolderSyncEngine at 0x5e4e550> failed with TypeError


But turns out Tom fixed it here.  I don't think it's yet on PyPI.





From: Menno Smits <menno@freshfoo.com>
Sent: Wednesday, May 27, 2015 2:41 AM
To: Michael Grinich
Cc: Christine Spang
Subject: Re: Thoughts
 
Hi Michael,
 
No problems about the delay. I know what it's like.
 
Another interesting development: after our call I put out my feelers to see if any of the developers that I know and trust would be interested in tackling this work, and I got a bite from a former colleague and good friend, Jonathan Hartley (http://tartley.com/). He's one of the smartest developers I know - with huge amounts of experience with Python - and is highly disciplined about testing and code quality. On top of that, he's in the process of arranging a move to the US (his wife his American) so that could work well too. He has no experience with IMAP or Go, but these are things I'm confident he could quickly pick up. Due to the pending move to the US, he currently on a short contract so could be available on fairly short notice.
 
Are you interested in talking to him? He could give you a full 5 days a week working on IMAPClient and related bits.
 
- Menno
 
p.s. Can you give me details on the bug that you found today?
 
 
On Wed, 27 May 2015, at 06:59, Michael Grinich wrote:
Hi Menno,
 
Sorry for the delay. 
 
Having you work dedicated 1 day a week for Nylas would be fantastic. We already have several low-hanging IMAPclient projects we need help with, and there are many places in our sync engine codebase that I think you could make huge contributions to.
 
So in short, yes. We'd be ready to get started immediately. (Already had a bug come up today where IMAPclient fails when folders have no items in them...)
 
--Michael
 
 
 
On May 21 2015, at 7:44 pm, Menno Smits <menno@freshfoo.com> wrote:

Hi Michael,

It was great to talk to you and Christine earlier this week.

I've been thinking about ways that we could make this work. I'm really
not ready to leave my current position at Canonical but I'd be prepared
to consider dropping my hours to work for Nylas part-time. Would you
consider having me work for Nylas one full day a week if I could
negotiate my hours down to 4 days a week at Canonical? I think they
might be open to that (any less could be a struggle).

I realise this is probably less of a commitment from me than you'd
probably like but one day a week would give me much more time to work on
IMAPClient than I have now. You'll get you the features you need much
sooner. If this seems workable to you I can start the conversation with
my managers.

I'm also writing to a couple top notch developers that I trust about the
possibility of working with you on this (they're both in London). I
believe that one in particular could be thinking about leaving his
current role.

Cheers,
Menno