Closed Bug 546932 (carddav) Opened 15 years ago Closed 4 years ago

Add support for online address books using the CardDav format.

Categories

(Thunderbird :: Address Book, enhancement, P1)

enhancement

Tracking

(Not tracked)

RESOLVED FIXED
Thunderbird 78.0

People

(Reporter: IDontUseMozillaAnyMore, Assigned: darktrojan)

References

()

Details

(Keywords: leave-open, Whiteboard: [gs][Please do not comment unless you are actively working on this bug])

Attachments

(3 files, 5 obsolete files)

User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 Build Identifier: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US; rv:1.9.1.7) Gecko/20100111 Thunderbird/3.0.1 Apple has a new Address book server which is based upon the new CardDav protocol. This is very similar to the CalDav protcol supported by Sunbird. It would be great if Thunderbird supported this type of address book. Reproducible: Always Actual Results: Support doesn't exist Expected Results: Support existed
Zimbra 6 also supports CardDAV. See https://bugzilla.zimbra.com/show_bug.cgi?id=22008 Some more server implementations are listed at http://carddav.calconnect.org/implementations/servers.html
(In reply to comment #2) > Zimbra 6 also supports CardDAV. See > https://bugzilla.zimbra.com/show_bug.cgi?id=22008 > > Some more server implementations are listed at > http://carddav.calconnect.org/implementations/servers.html I tested it with SoGo Connector but you cannot create addresses or modify them! You get the following error in the Address Book Server in Mac OS X Snow Leopard log: 2010-09-28 19:00:14+0200 [-] carddav-8802 PooledMemCacheProtocol,client http://twistedcaldav.method.put#error MIME type MimeType('text', 'x-vcard', {'charset': 'utf-8'}) not allowed in address book collection I don't understand what's wrong. So it would be great if someone give me a hint if it is an error in the client or the serverpart (apple or sogo?). If there are some things to try, I will test and report it.
DAViCal 0.9.9.2 also supports CardDAV: http://andrew.mcmillan.net.nz/blog/davical_release_0.9.9.2_with_carddav There seems to be something wrong combining SOGo Connector and Lightning CalDAV. I am looking forward to seeing CardDav support in TB.
DAViCal and Tryton servers support it. I'm using SOGo Connector 3.104, along with Lightning 1.0b2, connected to  DAViCal 0.9.9.3, and it works very well, for both CalDAV and CardDAV. However, it should be good if Thunderbird can connect to CardDAV servers.
I am having major issues with SOGo Connector 3.104 and Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.16) Gecko/20101227 Iceowl/1.0b1 Icedove/3.0.11. I am not able to synchronise groups/mailinglists/distribution list Also the synchronisation does not work completely when added 240 contacts only 24 of them got synchronised. SOGo Connector seems to use an old implantation of a early draft. DAViCal implements the correct draft, and there are a log of miscommunication going on. I am begging for a working CardDAV plug-in, with full support for contacts, lists, and synchronisation....
(In reply to comment #6) s/implantation/implementation/g s/correct/current/g And I use the DAViCal option $c->use_old_sync_response_tag = true; to be more compatible with SOGo Connector.
SmarterMail also supports CardDAV since Version 7.x. See http://www.smartertools.com/downloads/documents/smartermail/smartermail_synchronization_collaboration.pdf on the Homepage from SmarterTools: http://www.smartertools.com I wish as soon as possible to sync with Thunderbird my contacts on the SmarterMail server via CardDAV also, so I can already with the iPhone!!
SmarterMail also supports CardDAV since Version 7.x. See http://www.smartertools.com/downloads/documents/smartermail/smartermail_synchronization_collaboration.pdf on the Homepage from SmarterTools: http://www.smartertools.com I wish as soon as possible to sync with Thunderbird my contacts on the SmarterMail server via CardDAV also, so I can already with the iPhone!!
I just stumbled into CalDAV and CardDAV and found out, that the latest ubuntu server (11.04) brings a simple way to install Cal+CardDAV features: http://wiki.ubuntuusers.de/DAViCal (until today I used debian with calendarserver for CalDAV and LDAP for addressbook, the packages in ubuntu have been buggy since know) - It would be one of my favourite wishes to get rid of nasty LDAP. Thunderbirds LDAP support anyhow is a desaster. So please, please implement CardDAV adressbooks as soon as possible. Then Thunderbird+Lightning will finally be an open-source crossplatform calender+addressbook network-solution!! Thats what we need!
What I cannot understand: There are about 50 people who don't want more than to use the standard protocol CardDAV with the VERY GOOD program Thunderbird. They ask to implement this protocol because it is the basement for communication. They wait and ask since 1 1/2 years and NOBODY seems to be interested to solve this? How many users have to ask for?! My confidence in this community is sinking!
I'd suggest to read more about whats going on before complaining. The Thunderbird team is undergoing hard work to prepare their address book backend so that other formats like CardDAV can be implemented. The backend code is very historical and as I think the address book is a very important feature its more than justified that it takes a bit longer to ensure that there are no compatibility issues and that everything is done right from an architectural standpoint.
I use my calendar as a File on a mounted network drive. *.ics. Please add an ability to use CardDAV as a File too. http://en.wikipedia.org/wiki/ICalendar http://de.wikipedia.org/wiki/ICalendar
(In reply to comment #12) > I'd suggest to read more about whats going on before complaining. The > Thunderbird team is undergoing hard work to prepare their address book > backend so that other formats like CardDAV can be implemented. The backend > code is very historical and as I think the address book is a very important > feature its more than justified that it takes a bit longer to ensure that > there are no compatibility issues and that everything is done right from an > architectural standpoint. I don't found any reference to your statement that something happens to the address book that will lead to carddav. Only sogo connector is available, but there are issues with the mac addressbook server. So: Any links where to read about native carddav thunderbird support are welcome ...
As long there does not exist a solution for CardDAV or any other format readable by iCal _and_ Thunderbird _and_ Android I HAVE to use Google calendar. I know every server solution is a good as the confidence in the provider is. But my confidence in Google is VERY small. I don't know who can read my private items, too. A solution even on an own server will be the best.
Does anyone know if there is any progress in the development of this feature? I am really desperate to see cardDAV support in thunderbird. Anything one can do to support the development if one has only little programming skills?? I would donate of course if that would be of any help. Maybe more votes would help?
where can I vote ? I am also waiting this feature for a long time... http://getsatisfaction.com/mozilla_messaging/topics/address_book_sync_with_carddav_and
I hope this will come soon... can't wait. Or I'll give Exchange and Outlook another try
Is there any alternative to the SOGo Connector that introduces external CardDAV functionality to Thunderbird? The SOGo Connector does not work with Thunderbird 5 any more it does not seem to be updated soon.
(In reply to comment #19) > Is there any alternative to the SOGo Connector that introduces external > CardDAV functionality to Thunderbird? The SOGo Connector does not work with > Thunderbird 5 any more it does not seem to be updated soon. Not as far as I know, at least no true CardDAV implementation with full synchronization etc. CardDAV / sync support (probably also Calendar/Lightning) should really be a native part of Thunderbird I think. Many people today (even outside of working environments) have several devices (iPhone, iPad, computer, laptop/netbook) so there's a great need of native sync support in Thunderbird. As stated in Comment 12 above work is apparently underway of rebuilding the address book backend but it wouldn't hurt to make this issue a top priority, have even seen several people offering to support/pay for development of the features.
(In reply to comment #20) > Calendar/Lightning) should really be a native part of Thunderbird I think. Offline CalDAV (aka "calendar sync") is being worked on in bug 380060.
Yep, that's an interesting thing, but what about Windows and Mac users? I'm using GNU/Linux all the time, but I don't like seeing features targetting one platform fort Thunderbird, especially for such "core" feature as address book. Moreover, Thunderbird + Addon + Evolution Data Server + CardDav server isn't a bit overkill? EDS integration looks really great and promising, but maybe CardDav should be part of Thunderbird, since SoGO doesn't provide their addon for TB 5.0 yet.
I think there has been a CardDAV extension for Thunderbird developed by Oracle which just has to pass legal review. See http://davical-general.89287.n3.nabble.com/Davical-general-Addressbook-as-collection-is-not-permit-td2507953.html ...
I would be very glad to have a SoGO-alternative, too! As a plugin or native for thunderbird (- in addition to ldap?)
+1 for this
Does anyone know a developer who could look into this issue? I have seen so many people who really miss this feature.
@All Don't forget to vote for this wish on the top of this thread!!!!!!!!
This issue is the top voted enhancement for Thunderbird: Address Book. Is there an 'official way' to put a bounty on an issue?
(In reply to ijustwantanaccount from comment #29) > This issue is the top voted enhancement for Thunderbird: Address Book. Is > there an 'official way' to put a bounty on an issue? Only if the devs find an addressbook in a cloud important enough feature.
I'd throw in some money for a bounty if it's that what it needs to get it done.
(In reply to Danny from comment #30) > (In reply to ijustwantanaccount from comment #29) > > This issue is the top voted enhancement for Thunderbird: Address Book. Is > > there an 'official way' to put a bounty on an issue? > > Only if the devs find an addressbook in a cloud important enough feature. What about an addressbook in the enterprise? Do they find this an important enough feature?
Apply to this. A CardDAV server is not mandatory in the cloud. We host our CalDAV and CardDAV servers inside the enterprise. Not everyone likes LDAP for addresses. Anyway: customers addresses never will be entered in an LDAP!
Please remember if you are commenting in bugzilla to follow the etiquette: https://bugzilla.mozilla.org/page.cgi?id=etiquette.html Specifically, if you are not adding new information that helps solve the actual bug, then please do not comment. Adding extra comments only serve to get in the way for developers fixing actual bugs. That said, we are starting to think about the future of address book at the moment and being able to share data in the cloud is one thing we will be thinking about. If you want to help this effort, then please check out the communication channels (https://wiki.mozilla.org/Thunderbird/CommunicationChannels) and be patient whilst we get to the stage where we can start discussions.
There's this topic on GetSatisfaction: http://getsatisfaction.com/mozilla_messaging/topics/address_book_to_use_carddav_to_enable_sync_like_apple So I suggest moving the discussion there and keep this bug clean for developers
+1 I would like to have native suport to CardDav directly in Thunderbird Thank you
CardDAV is also available for android. Unfortunately, there is still no way thunderbird syncronize with what whatever. I do think the trend of the mobile society derbid oversleeps. The syncronisation with mobile devices has become very important. CardDAV and seems to be a viable possibility, many address books to syncronize with server services. Google, Hotmail and other caldav support and CardDAV, many do groupware server that (web) mail clients not only thunderbird.
I have just found http://mikeconley.ca/blog/ . This is really promising! I think Mike Conley could really get things moving now. Maybe this initiative even attracts more developers to help with a so much needed redesign of the Thunderbird address book.
Hi I would like to have native suport to CardDav directly in Thunderbird in order to use it with Owncloud 2.0 Thank you
+1
+1 I would like to have native suport to CardDav directly in Thunderbird Thank you
I'll re-iterate what I said in comment 34: Please DO NOT comment on this bug unless you are actively working on providing a patch or fix in the code base. Adding +1 comments and the like only spams everyone cc'ed and watching this bug and wastes their time. As a reminder: (In reply to Mark Banner (:standard8) from comment #34) > That said, we are starting to think about the future of address book at the > moment and being able to share data in the cloud is one thing we will be > thinking about. If you want to help this effort, then please check out the > communication channels > (https://wiki.mozilla.org/Thunderbird/CommunicationChannels) and be patient > whilst we get to the stage where we can start discussions.
Whiteboard: [gs] → [gs][Please do not comment unless you are actively working on this bug]
Blocks: 700237
Mark Banner, I understand your concerns. But people all over the internet ask for this feature for several years allready! This is developed straight missed the peoples needs! Put this request on high priority, implement it and noone needs to spam here any more.
213 votes now ... seems to be pretty important for thunderbird users ... Good new for now: SOGo just released a new version of their communicator plugin http://inverse.ca/downloads/extensions/nightly/ I tried it with TB10 (not ESR) and it works beautifully on Ubuntu and WinXP!
Very cool. The new connector works with the latest Davical Server!!!
(In reply to Thomas Kregelin from comment #44) > Good new for now: SOGo just released a new version of their communicator > plugin > > http://inverse.ca/downloads/extensions/nightly/ > > I tried it with TB10 (not ESR) and it works beautifully on Ubuntu and WinXP! Great news, thanks for sharing this with us!
Full Agree, also works on TB 10 Lion & DAViCal 0.9.9.7 & lightning read and write SOGo ♥ - fantastic work integrate it into ESR, please
Awesome, thanks for sharing!
finally I can use Owncloud...
I installed sogo-connector-10.0pre3.xpi on my Gentoo amd64 with Thunderbird 10, unfortunately I didn't find how to set my carddav account, I can only manage categories in the preferences menu.
(In reply to darkbasic from comment #50) I also found this to be non-obvious, so I documented it, along with the rest of my current synced PIM setup: https://patrick-nagel.net/blog/archives/389
I already tried that way (and I thought I was doing something wrong), unfortunately it doesn't ask for user and password and so it doesn't work :( You have my very same setup, including roundcube and carddav for android, but I use sabredav instead of davical :) Did you know contact editor is not needed anymore with ICS?
This is no dicussion forum, but a bug reporting platform. Please move support for the sogo-connector somewhere else.
As a workaround, the latest version of Sogo connector 10 (http://www.sogo.nu/fr/downloads/frontends.html) works with Thunderbird 10 as clients and either davmail or davical as carddav server (I did not try other servers) It is a workaround because you need to manually synchronize the addressbook, but it helps to centralize it on carddav server or (with davmail) access to exchange contacts.
SOGo do not work with every CalDAV-/CardDAV-Server! For example it doesn't work with SmarterMail server ... We need a native online address book in thunderbird!!!
This feature will be very helpful to use Thunderbird with Owncloud (http://owncloud.org)
Thunderbird needs CardDAV support to be a fully functional PIM.
well, for now it is only possible via extra plugin: sogo.nu there you will find on download -> frontend -> SOGo Connector Thunderbird extension then you can add carddav addressbook. well, sure, i would also like to have it as builtin, but waiting last few years, and nothing happen - excluded this extra tool
Without this Feature it's still Apple Mail > Outlook > Windows Live Mail > Any Webmail > Thunderbird
Big News! This Bug has a chance to be fixed. https://wiki.mozilla.org/Thunderbird/Papercuts
(In reply to sunny-day from comment #60) > Big News! > This Bug has a chance to be fixed. > > https://wiki.mozilla.org/Thunderbird/Papercuts Awesome, if I can vote it up somewhere, please let me know :) And great to know that "Thunderbird's development is not going to die"!
Google contacts now supports Carddav. I think that increases the urgency with which this feature is required for thunderbird to remain relevant. http://support.google.com/mail/bin/answer.py?hl=en&answer=2753077
I completely agree.
Up there it says: "Please do not comment unless you are actively workign on this bug", but there is no one assigned to it, so I'm taking the liberty to say: Please, this is important, this is more than a papercut. The Google Contacts announcement makes it even more so. What can we do to help?
BTW, i'm the author of the open source protocol library used by the google carddav server (http://milton.io). I'm happy to help with any questions/issues about syncing over carddav.
@Bad McEvoy May I suggest you contact Mike Conley. He is working on a complete new Address Book for Thunderbird. On this blog entry, there are links to various other sources regarding this project. http://mikeconley.ca/blog/2011/09/07/creating-a-new-thunderbird-address-book-the-feature-page-and-some-literature/ Further infos are regularly posted on his blog: http://mikeconley.ca/blog/ As far as I now is a CardDAV sync planned as well. He might be interested in some help on this.
Thanks Rolf, I'll contact Mike.
The new SoGO 2.0 connector for TB 10 ESR currently works even with TB 15 & owncloud. http://www.sogo.nu/english/downloads/frontends.html
... but SoGO do not work with every CardDAV-server, for example SmarterMail!!!!
... SoGO is extremly buggy and have a bad support ...
It would be wonderful.
I have used SOGO with Thunderbird 17 under Pinguy OS 12.04, it seems to work well, but a native integration could be great.
A nice 2013 resolution.
a 2 years old consolidated standard. Support would be excelent!!
Support is definetely needed! SOGO is not the solution, especially not in business use cases. It's not included in Mozilla Addon source list and hast to be installed an updated externally.
See Also: → 859306
Tested Sogo in Firefox 17 with Radicale-0.7.1 Server. (Evolution is running out of the Box) Tested different Versions of Sogo integrator. Carddav is not working reliable with Thunderbird! A Native implementation like in Sunbird with CalDAV is really needed.
Sorry, its Thunderbird 17 not Firefox.
To be fair, Radicale isn't a full CardDAV/CalDAV server - it is only as compliant with the standards as it needs to be and intentionally focuses on patching its code per implementation [1]. I thought I'd seen something about a patch to fix it as well, but I can't find it now. I've used Radicale, but moved to OwnCloud because it just worked (presumably because it follows the standards more). Still, full support for all adequately standards compliant servers would be good! [1] http://www.guardian.co.uk/technology/video/2013/may/01/google-glass-user-guide-released-video
I agree it would be excellent if Thunderbird / Mozilla has stable non-server-specific CardDAV support (this bug is about CardDAV support, not CalDAV support). I am a server-side WebDAV developer who has implemented CardDAV on the server side. Basic CardDAV support is actually really simple. To that end I'm willing to help someone out who understands the client side - I can explain what needs to happen when talking to the server for listing and retrieving contact information and storing information. I'm also willing to look at someones server problems - BUT you are going to have to capture [as in *wireshark*] the conversation your client has with a server, with some pointers it is not hard to read / debug WebDAV (and CardDAV is WebDAV with a couple of REPORT options). I use GNOME's Evolution, because it works, and I maintain a CardDAV server. But having Thunderbird on the CardDAV wagon would be a great addition.
Remote address book support in Thunderbird REALLY REALLY blocks serious business adoption. If TB wants more funds for support, they need to start developing for enterprise level needs.
As of Thunderbird 24 (Ubuntu 13.04) and sogo-connector-17.0.5, the carddav data is being corrupted seemingly randomly when that data is written to Radicale .7.1. This doesn't happen with Caldav-sync (Android) and Apple (Mountain Lion) Contacts, so far. So if someone can improve the start we have with Sogo-connector, it still needs a little work.
I have been wanting this feature for some time and am seriously considering this as a GSOC project next year. I was wondering if anyone would consider being a mentor if I wrote up a proposal (GSOC 2014 hasn't officially been announced yet so this is very early but it is nice to have an idea).
CardDav support was actually implemented in this year's GSOC (mconley has been mentoring). It's not in tree yes, but on some level I hear we have working code for it.
Ah, excellent. I didn't see it on the list at first.
@ Kevin Cox: https://blog.mozilla.org/meeting-notes/archives/1486 "Thunderbird: 2013-09-17 [...] Round Table mconley GSoC is wrapping up Jon Demelo’s connector is pretty much done, and we’ve tested it against Radicale, and it seems to work as advertised. Ensemble now has theoretical connection support for CardDAV. \o/ "
@mconley Where to find a status update about CardDAV implementation? Running Ubuntu with TB24 has an addon "EDS Contact Integration 0.6" but missing any documentation.
I'd be very interested to know where this stands. Any word?
Me too, and i should get a chance to ask directly on Monday :)
Flags: needinfo?(mconley)
I think we're now at the Thunderbird version that the CardDav version from last year's GSOC was conceived to possibly be released. Brad McEvoy - did you get status? When I search Google, I find no status updates on this topic. Thanks
Hey Glen, walter: Sorry for the lack of response - this one kinda fell off my radar, despite the needinfo flag. So the story here is that last Summer, we did have a GSoC student working on a CardDAV "connector" for "Ensemble"[1], which is an add-on I was writing as a prototype to replace Thunderbird's current address book. Unfortunately, Ensemble development has waned as I've been bogged down by other things. I am, however, open to outside contribution / help / development. If someone would be willing to take the reigns of the project, I'd be happy to help shepherd it forward. All the best, -Mike [1]: https://github.com/mikeconley/thunderbird-ensemble
Flags: needinfo?(mconley)
AA! i would love to, but as i am unable to code, all i can do right now is sitting and waiting :/ *crossing fingers* and thanks for the info! walter
(In reply to Glen Stewart from comment #92) > I think we're now at the Thunderbird version that the CardDav version from > last year's GSOC was conceived to possibly be released. Brad McEvoy - did > you get status? When I search Google, I find no status updates on this > topic. > > Thanks No. I was very surprised that there was no thunderbird representation at the caldav conference. Only a Mozilla Phone developer. There was really no interest in thunderbird at all :(
With Thunderbird 24.6 (windows) and SOGo Connector 24.0.5 CardDAV appears to be fully functional. I'm using radicale 0.8 for my CardDAV server and I believe that you need the Lightning add-on if you you're using authentication.
(In reply to Chris Purves from comment #96) > With Thunderbird 24.6 (windows) and SOGo Connector 24.0.5 CardDAV appears to > be fully functional. With that setup take care of contacts with multiple email addresses. There is a good chance you will lose all but one by syncing with SOGo Connector between TB and your CardDAV server (see http://www.sogo.nu/bugs/view.php?id=2570).
i rather think thats related to owncloud, than to sogo connector.
I am satisfied with SOGo Connector. As a workaround, before syncing, use https://addons.mozilla.org/thunderbird/addon/duplicate-contact-manager/
Has Thunderbird a plan that they will add a new protocol CardDav in the Address Book in the further?
I didn't even remember I was on the CC list for this bug...I've been using gContactSync ever since Zindus ceased updates.
While I have grow used to SOGo Connector, I would prefer this functionality be embedded in Thunderbird so that it doesn't break if a third party goes under. CardDav is too important to be left as an addon.
I'm using SOGo too, but at least it should be included in Mozilla repository to avoid manual installations and upgrades.
After this bug has sat here for 5 years, with noone taking ownership, I think it's safe to say it's going nowhere fast. I wonder if there's enough interest to get up a bounty for it? Or perhaps someone might want to make it a Google "Summer of Code" project.
Aint't Thunderbird discontinued except for security fixes since quite a while? That would explain why no features like this are being added...
Recently lightning (the calendar extension) was added, so there is some progress. See here for some details: https://blog.mozilla.org/thunderbird/ And somebody had already started the implementation as GSOC project (see comment #84), but I do not know the status...
(In reply to devurandom from comment #107) > Aint't Thunderbird discontinued except for security fixes since quite a > while? Not really, there's just no paid staff to add features. So community members have to step up for that part.
https://www.bountysource.com/issues/1015434-add-support-for-online-address-books-using-the-carddav-format this bounty is already over 400$ !!! development went over to the community, lets hope some good people show up and transform tb into a post-email-area, low resource multi platform client, with leading and conservative state of the art technology on the bleeding edge.
(In reply to walter from comment #110) > lets hope some good people show up and > transform tb into a post-email-area, low resource > multi platform client, with leading and conservative > state of the art technology on the bleeding edge. Truer words have never been spoken, well said. Thunderbird is one of the linchpins of a privacy and freedom-respecting online life, and deserves to be well-maintained. Please support the bounty!
I'll happily donate $100 to the bounty but I'm not going to add it to Bountysource as it's nonrefundable. AFAIK, If no one actually builds the feature then Bountysource just get to keep my money! I'm desperate for this feature as we use TB in our (small) business and setting up Add-on's for each member of staff is already a pain in the butt.
@Dan maybe https://freedomsponsors.org/ can be a better solution than the bounty ?
I would also be willing to put down a nice donation. However, I think it would make sense, to finish up the new address book project (ensemble), where a lot of work has already been done. So rather than just fixing a part of it, putting the effort in the new address book as a whole. This way fixing many shortcomings of the present AB and setting the foundation for the future of Thunderbird.
@Rolf Gloor : could you give link about the ? Maybe they talk about implementing CardDav in it. A new address book for Thunderbird, you make me happy to speak about it, I'm waiting for that for so long...
@Thatoo (and @Andrew McNaughton) There is also a bug filed for it: 841598 https://bugzilla.mozilla.org/show_bug.cgi?id=841598
My general plan for this is: 1) Add address book as a js-extendable component in bug 430716. This is not strictly necessary for the address book (unlike for mailnews accounts) but it does make the task of adding a new address book interface easier. 2) Investigate using an open-source Webdav layer that Fallen recommends to see if that is easier than just writing our Carddav interface from scratch. Develop a protocol layer that can maintain a local persisted copy of the CARDDAV address book in memory in a format for reading and writing to the CARDDAV server. (I call this the native layer). Borrow from the ExQuilla database persistence code as appropriate. 3) Follow the same basic mechanism to add an address book as is used in ExQuilla for address book in Exchange Web Services. The main interface there to connect from a locally persisted EWS address book, interfacing to the mailnews address book, is about 2000 lines of code. (That is, not a huge amount of code, particularly since the issues in adding any address book are very similar to each other, so a lot of the issue is translating from one card format to another.) Although ExQuilla code is not open source, any Carddav implementation would be open source. A likely path is to implement this initially as an addon, but plan to merge it into core at some point. The JsAccount technology of bug 430716 is my top priority for the next major version of Thunderbird, version 45. As part of that implementation there will need to be functional demos, and a Carddav implementation is a likely functional demo of using that approach to add address book functionality. Carddav is a top priority for the Thunderbird team as a whole, at least within the existing address book (which has its own issues of course). We've been slowly trying to organize the financial side of Thunderbird that should allow us to support projects such as this in the future. Part of that will be a mechanism for individuals to donate specifically to the Thunderbird project. That is the mechanism that is likely to support development work on important features such as this.
(In reply to Kent James (:rkent) from comment #118) > .... > Carddav is a top priority for the Thunderbird team as a whole, at least > within the existing address book (which has its own issues of course). We've > been slowly trying to organize the financial side of Thunderbird that should > allow us to support projects such as this in the future. Part of that will > be a mechanism for individuals to donate specifically to the Thunderbird > project. That is the mechanism that is likely to support development work on > important features such as this. Thank you rkent for the detailed response! I'm eager to support making a modern and CardDAV friendly Thunderbird address book as soon as physically possible. I already donated to the bounties noted above, should I have donated elsewhere? Such as the Ensemble bounty or starting something at FreedomSponsers? Or should I just wait till the donation mechanism you mentioned to come online? If so how can users help make this happen sooner?
(In reply to avkaplmkt from comment #119) > (In reply to Kent James (:rkent) from comment #118) ... > Thank you rkent for the detailed response! I'm eager to support making a > modern and CardDAV friendly Thunderbird address book as soon as physically > possible. I already donated to the bounties noted above, should I have > donated elsewhere? Bounties can have some value, perhaps if a volunteer developer participates they may be able to claim the bounty. But the actual cost to pay someone who knows what they are doing to implement this, along with the time of others required to review the code and maintain it over time, is typically much more than a bounty can reasonably raise. We are not well organized to monitor and take advantage of bounties at the moment, though I recall there may have been a few cases in the past where they played a role. I suppose they have worked for other projects, but we mainly need to leverage our 20,000,000 users rather than rely on just the 200+ people who have cc'd here. That's really the job of the leadership at the moment. There is unfortunately nowhere that you can donate at the moment that results in additional resources available to the Thunderbird team as a whole. It would be better to followup these issues on the tb-planning email list rather than in this bug.
(In reply to Kent James (:rkent) from comment #118) > 2) Investigate using an open-source Webdav layer that Fallen recommends to > see if that is easier than just writing our Carddav interface from scratch. > Develop a protocol layer that can maintain a local persisted copy of the > CARDDAV address book in memory in a format for reading and writing to the > CARDDAV server. (I call this the native layer). Borrow from the ExQuilla > database persistence code as appropriate. Lighting already uses a WEBDAV framework (CalDAV and CardDAV both extend WEBDAV). Maybe you can use this code. Although Lightning lacks support for "well-known" URI aka autoprovisioning (rfc6764).
(In reply to Andrew McNaughton from comment #116) > @Thatoo: I googled it. > > http://mikeconley.ca/blog/tag/ensemble/ > https://github.com/mikeconley/thunderbird-ensemble Thank you but I knew these references but they are quiet old. Mike Conley didn't write anything in his blog since 2012 and didn't update his github since 2013. (In reply to Rolf Gloor from comment #117) > @Thatoo (and @Andrew McNaughton) > > There is also a bug filed for it: 841598 > https://bugzilla.mozilla.org/show_bug.cgi?id=841598 in 2014-11-24 12:37:21, Mike Conley wrote (In reply to Mike Conley (:mconley) - (Going dark Aug 20 - Sept 11) from comment #20) > (In reply to Karl from comment #18) > > (In reply to Mike Conley (:mconley) - Needinfo me! from comment #17) > > > (In reply to erik from comment #16) > > > > Any progress worth mentioning? > > > > > > I'm afraid if there was any, I'd have posted it. :/ > > > > Still no progress? > > I'm afraid not. > > (In reply to bugzilla.andy from comment #19) > > I am really eager, too! > > Is there anything we can do to help? > > > > If you can find a developer with the cycles to drive this project, that'd be > absolutely huge. Unfortunately, I am not that person at this time. :/ And since then, nothing. It doesn't seem like a new address book with CardDav is coming soon...
Hello Folks, I'd like to remind you about commment 34: Please remember if you are commenting in bugzilla to follow the etiquette: https://bugzilla.mozilla.org/page.cgi?id=etiquette.html Specifically, if you are not adding new information that helps solve the actual bug, then please do not comment. Adding extra comments only serve to get in the way for developers fixing actual bugs. I understand that this a much wanted feature and that all of you are eager to have a developer work on it, I'd like to see this happen just as much. Kent has laid out a plan in comment 118 and work will progress slowly but surely. I'd be delighted if further comments made are comments helpful towards fixing this bug, for example concrete offers to help out with this bug. Thanks!
Restrict Comments: true
Alias: carddav
Priority: -- → P3
Assignee: nobody → geoff
Priority: P3 → P1
Depends on: 1637923
Depends on: 1639430
Attached patch 546932-carddav-directory-1.diff (obsolete) — Splinter Review

This adds a directory type for dealing with CardDAV. There's no way to interact with it yet, short of using the developer tools to run some code, that will be in another patch when I finish it.

Attachment #9151398 - Flags: review?(mkmelin+mozilla)
Comment on attachment 9151398 [details] [diff] [review] 546932-carddav-directory-1.diff Review of attachment 9151398 [details] [diff] [review]: ----------------------------------------------------------------- All looks reasonable to me! r=mkmelin ::: mailnews/addrbook/jsaddrbook/CardDAVDirectory.jsm @@ +11,5 @@ > +ChromeUtils.defineModuleGetter( > + this, > + "Services", > + "resource://gre/modules/Services.jsm" > +); Why not import Services directly? It's going to be there anyway... @@ +13,5 @@ > + "Services", > + "resource://gre/modules/Services.jsm" > +); > + > +class CardDAVDirectory extends AddrBookDirectory { @extends {AddrBookDirectory} @implements {nsIAbDirectory} @@ +39,5 @@ > + > + get _serverURL() { > + let url = this.getStringValue("carddav.url", ""); > + > + Object.defineProperty(this, "_serverURL", { why is this needed? @@ +60,5 @@ > + * directory. > + * > + * @param {String} path - A path relative to the server URL. > + * @param {Object} details - See makeRequest. > + * @return {Promise<Object>} please document what we're returning @@ +132,5 @@ > + } > + > + /** > + * Converts card to a vCard and performs a PUT request to store it on the > + * server. Then immediately performs a GET request ensuring the local copy the card @@ +230,5 @@ > + */ > + async updateAllFromServer() { > + let data = `<addressbook-query xmlns="urn:ietf:params:xml:ns:carddav" xmlns:d="DAV:"> > + <d:prop> > + <d:getetag /> Oh, comes to mind. You don't want the extra space before closing I think (globally in the patch) @@ +302,5 @@ > + <d:prop> > + <d:getetag /> > + <address-data /> > + </d:prop> > + ${hrefsToFetch.join()} join("\n") for readability? ::: mailnews/addrbook/test/CardDAVServer.jsm @@ +4,5 @@ > + > +const EXPORTED_SYMBOLS = ["CardDAVServer"]; > + > +const CARD_NS = "urn:ietf:params:xml:ns:carddav"; > +const DAV_NS = "DAV:"; might not be worth having a variable that's longer than the value ;) @@ +105,5 @@ > + return; > + } > + > + Assert.report(true, undefined, undefined, "Should not have reached here"); > + response.setStatusLine("1.1", 404, "Not Found"); please add inDocument.documentElement.localName to the output/assert for easier debugging. And how about just "doc"? @@ +156,5 @@ > + > + syncCollection(inDocument, response) { > + let token = inDocument > + .querySelector("sync-token") > + .textContent.replace(/\D/g, ""); what is this about? Worth making sure it doesn't clear out completely? @@ +206,5 @@ > + return; > + } > + > + if (!/\/[\w-]+\.vcf$/.test(request.path)) { > + response.setStatusLine("1.1", 404, "Not Found"); for responses like this, would be nice to also output a body and include the missing path in the text there. @@ +223,5 @@ > + return; > + } > + > + Assert.report(true, undefined, undefined, "Should not have reached here"); > + response.setStatusLine("1.1", 404, "Not Found"); please add the unhandled request.method to the output/assert
Attachment #9151398 - Flags: review?(mkmelin+mozilla) → review+
Attached patch 546932-carddav-directory-2.diff (obsolete) — Splinter Review

Sorry to make you read this again, but since it hasn't landed yet and later stuff would end up rewriting large chunks of it …

The only bits of any significance are makeRequest/_makeRequest where I've moved a lot of code around and added to it, and fetchAllFromServer which I've modified to handle less-capable servers (looking at you, Google).

Attachment #9151398 - Attachment is obsolete: true
Attachment #9152683 - Flags: review?(mkmelin+mozilla)
Attached patch 546932-carddav-ui-1.diff (obsolete) — Splinter Review

This is the actual interesting bit I've been trying to get to all week so it can land before the strings freeze. It adds a menu item in the address book window and a dialog to handle adding cardDAV books. This is preffed off.

While it suggests connecting to a Google server, that doesn't actually work yet because Google uses OAuth and I've taken that code out for the time being.

Attachment #9152689 - Flags: review?(mkmelin+mozilla)
Comment on attachment 9152683 [details] [diff] [review] 546932-carddav-directory-2.diff Review of attachment 9152683 [details] [diff] [review]: ----------------------------------------------------------------- ::: mailnews/addrbook/jsaddrbook/CardDAVDirectory.jsm @@ +345,5 @@ > + */ > + async updateAllFromServerV2() { > + let syncToken = this._syncToken; > + if (!syncToken) { > + throw new Components.Exception("", Cr.NS_ERROR_UNEXPECTED); I think its to give a message in here, for when it does occur. Like "No syncToken" instead of just "".
Attachment #9152683 - Flags: review?(mkmelin+mozilla) → review+
Comment on attachment 9152689 [details] [diff] [review] 546932-carddav-ui-1.diff Review of attachment 9152689 [details] [diff] [review]: ----------------------------------------------------------------- I'd really prefer if we can do this all in Fluent now. ::: mailnews/addrbook/content/abCardDAVDialog.js @@ +11,5 @@ > +); > + > +var bundle = Services.strings.createBundle( > + "chrome://messenger/locale/addressbook/abCardDAVDialog.properties" > +); Ugh, we really should be using Fluent... @@ +16,5 @@ > + > +var url; > +var username; > +var password; > + would be nice to use g prefix for the globals @@ +19,5 @@ > +var password; > + > +var uiElements = {}; > + > +addEventListener("load", () => { window.addEventListener is more clear @@ +49,5 @@ > + } > +}); > + > +function hostInput() { > + url = uiElements.url.value; make sure to trim() too @@ +50,5 @@ > +}); > + > +function hostInput() { > + url = uiElements.url.value; > + if (!url.startsWith("http://") && !url.startsWith("https://")) { if (!/^https?:/i.test(url)) { @@ +67,5 @@ > + > + setStatus("loading", "loading"); > + > + try { > + if (!url.startsWith("http://") && !url.startsWith("https://")) { if (!/^https?:/i.test(url)) { @@ +133,5 @@ > + let alreadyAdded = 0; > + for (let r of response.dom.querySelectorAll("response")) { > + if (r.querySelector("resourcetype addressbook")) { > + let bookURL = new URL(r.querySelector("href").textContent, url).href; > + console.log(bookURL); please remove ::: mailnews/addrbook/jsaddrbook/AddrBookDirectory.jsm @@ +1085,5 @@ > valueLocal > ); > } > + > + static for(fileName) { any reason not to use a more elaborate name, like forFile?
Attachment #9152689 - Flags: review?(mkmelin+mozilla)
Status: NEW → ASSIGNED

Now with fixed tests.

Attachment #9152683 - Attachment is obsolete: true
Attachment #9153010 - Flags: review+

I think I fixed everything you wanted. I'm away tomorrow, so if this is ready, ship it.

Here's a Try run for good measure.

Attachment #9152689 - Attachment is obsolete: true
Attachment #9153011 - Flags: review?(mkmelin+mozilla)
Comment on attachment 9153011 [details] [diff] [review] [checked in] 546932-carddav-ui-2.diff Review of attachment 9153011 [details] [diff] [review]: ----------------------------------------------------------------- Not the most polished UI we have, but it's do, thank you! I'll go ahead and update (per comments below) a bit. I do find some smaller issues like ""Looking up configuration" stays even after success. For the fluent ids, they should be a bit more specific. I can imaging we want this stuff inline somewhere later and then there might be id collisions. ::: mail/locales/en-US/messenger/addressbook/abCardDAVDialog.ftl @@ +18,5 @@ > + .placeholder = CardDAV URL > + > +connect-to-account = Connect to your { $providerBrandName } account > + > +username-label = nit: double space @@ +22,5 @@ > +username-label = > + .value = Username: > + .accesskey = U > +username-input = > + .placeholder = Username placeholder should really be kind of an example. maybe you@example.com @@ +24,5 @@ > + .accesskey = U > +username-input = > + .placeholder = Username > + > +password-label = seems to be trailing space here @@ +38,5 @@ > +loading = Looking up configuration… > +connection-error = Failed to connect > +none-found = No address books from this server can be added > +already-added = All address books from this server have already been added > + These are a bit odd talking about server. It's server, provider, account, URL whatever. I'd just go with none-found = Found no address books to add for the specified account. already-added = All address books for the specified account have already been added. @@ +39,5 @@ > +connection-error = Failed to connect > +none-found = No address books from this server can be added > +already-added = All address books from this server have already been added > + > +available-books = Choose which address book(s) to add: I think it would be better to use, like the label there, "available" in this string. Like Available address books: ::: mailnews/addrbook/content/abCardDAVDialog.css @@ +1,3 @@ > +/* This Source Code Form is subject to the terms of the Mozilla Public > + * License, v. 2.0. If a copy of the MPL was not distributed with this > + * file, you can obtain one at http://mozilla.org/MPL/2.0/. */ I think we've starting using the shared theme folder and not putting css in content anymore. But we can fix this later.
Attachment #9153011 - Flags: review?(mkmelin+mozilla) → review+

I'm also modifying it slightly to have one field for provider and one for url. We could hide the url for known providers. In general editable menulists are not too user friendly.

Keywords: leave-open
Target Milestone: --- → Thunderbird 78.0
Pushed by mkmelin@iki.fi: https://hg.mozilla.org/comm-central/rev/f9966a892f2a Add CardDAVDirectory class for syncing with CardDAV servers. r=mkmelin https://hg.mozilla.org/comm-central/rev/41e929c17e1b Add UI (preffed-off) for creating a CardDAV address book. r=mkmelin

Unfortunately I didn't have permissions to comment on this bug until now :(

I just wanted to say that I appreciate this effort and that I would be very happy if this could be certified to work with a Zimbra server. I could provide a test account to the developer.

Thanks, do send Geoff some creds!

(In reply to Magnus Melin [:mkmelin] from comment #137)

Thanks, do send Geoff some creds!

I just sent him an email to confirm his interest and start the credentials process. Thank you.

I also just sent an email to Geoff, offering him a test account on my NextCloud server.

Attached patch 546932-carddav-init-1.diff (obsolete) — Splinter Review

Here's all of the fixes I've been working on (except for making Google work) as one patch because it's easier than trying to tease them all apart. I've summarised the changes in the commit message.

With this landed I think CardDAV should be ready for basic testing. There's no automatic syncing, or indeed any way to make sync happen short of opening the devtools and typing the write commands … but it would be usable for situations where Thunderbird is the only client for a server (ie. a remote backup). Sync is performed when a directory is initially created.

Attachment #9155884 - Flags: review?(mkmelin+mozilla)
Comment on attachment 9155884 [details] [diff] [review] 546932-carddav-init-1.diff Review of attachment 9155884 [details] [diff] [review]: ----------------------------------------------------------------- Can we keep the username (email) entry and prefill the URL from that? ::: mail/locales/en-US/messenger/addressbook/abCardDAVDialog.ftl @@ -21,5 @@ > .value = CardDAV URL: > .accesskey = V > > -carddav-username-label = > - .value = Username: I'm not convinced we don't want to have a place to enter the email. That's much easier for someone, instead of telling them to enter an unknown URL. ::: mailnews/addrbook/content/abCardDAVDialog.js @@ +105,5 @@ > + requestParams > + ); > + } > + if (response.status != 207 || !response.dom) { > + throw new Components.Exception("Connection failure", Cr.NS_ERROR_FAILURE); Would include response.status in the message ::: mailnews/addrbook/content/abCardDAVDialog.xhtml @@ +31,5 @@ > <description data-l10n-id="carddav-experimental-warning"/> > </hbox> > > <html:table> > + <html:tr hidden="true"> hidden="hidden" since this is html
Attachment #9155884 - Flags: review?(mkmelin+mozilla)
Comment on attachment 9155884 [details] [diff] [review] 546932-carddav-init-1.diff Review of attachment 9155884 [details] [diff] [review]: ----------------------------------------------------------------- ::: mailnews/addrbook/content/abCardDAVDialog.js @@ +105,5 @@ > + requestParams > + ); > + } > + if (response.status != 207 || !response.dom) { > + throw new Components.Exception("Connection failure", Cr.NS_ERROR_FAILURE); Please also include statusText, plus any other error message you might be able to gather from the response body. Error handling is going to be critically important here. Otherwise, the user is completely in the dark on what went wrong and why, and setup will be extremely painful. And he'll likely give up and never come back.
Attached patch 546932-carddav-ui-2.diff (obsolete) — Splinter Review

As we talked about, working out the server address from an email address is non-trivial, and we want to at least get this into a state where it can be tested. This version of the patch is mostly the same, but I've left the strings behind in case we want to use them later, and I've improved the logging as requested by creating a prefixed console and reworking the initial connection attempt.

Attachment #9155884 - Attachment is obsolete: true
Attachment #9157227 - Flags: review?(mkmelin+mozilla)
Comment on attachment 9157227 [details] [diff] [review] 546932-carddav-ui-2.diff Review of attachment 9157227 [details] [diff] [review]: ----------------------------------------------------------------- This seems to be the wrong patch ( the same that already landed)
Attachment #9157227 - Flags: review?(mkmelin+mozilla)
Attachment #9153010 - Attachment description: 546932-carddav-directory-3.diff → [checked in] 546932-carddav-directory-3.diff
Attachment #9153011 - Attachment description: 546932-carddav-ui-2.diff → [checked in] 546932-carddav-ui-2.diff
Comment on attachment 9157227 [details] [diff] [review] 546932-carddav-ui-2.diff Yeah, wrong one, oops.
Attachment #9157227 - Attachment is obsolete: true
Attachment #9157474 - Flags: review?(mkmelin+mozilla)
Comment on attachment 9157474 [details] [diff] [review] 546932-carddav-init-2.diff Review of attachment 9157474 [details] [diff] [review]: ----------------------------------------------------------------- ::: mailnews/addrbook/content/abCardDAVDialog.js @@ +97,5 @@ > + async function tryURL(url) { > + console.log(`Attempting to connect to ${url}`); > + response = await CardDAVDirectory.makeRequest(url, requestParams); > + if (response.status == 207 && response.dom) { > + console.log("\u2026 success"); we may want to stick to dot dot dot for debugs :) Anyway, I'd add the url to the message to make it easer to debug (could be long away from the original in some situations) ::: mailnews/addrbook/content/abCardDAVDialog.xhtml @@ +53,2 @@ > <html:td class="input-container"> > + <html:input id="carddav-url" type="text" Why change it to text? With url you get the instant validation and trimming of the value. You could instead prefix https:// onblur as needed. Could also add required="required". I notice you just give blank value to continue (failing) at the moment. ::: mailnews/addrbook/test/CardDAVServer.jsm @@ +116,5 @@ > }, > > + ping(request, response) { > + response.setStatusLine("1.1", 200, "OK"); > + response.write("pong"); Is the response content type output automatically for cases like these? If not, we should add that.
Attachment #9157474 - Flags: review?(mkmelin+mozilla) → review+
Pushed by geoff@darktrojan.net: https://hg.mozilla.org/comm-central/rev/67d3cb8c1ea3 Various fixes for CardDAV. r=mkmelin
Comment on attachment 9157474 [details] [diff] [review] 546932-carddav-init-2.diff This is preffed off and with a big scary warning when it is turned on, so shouldn't be any risk.
Attachment #9157474 - Flags: approval-comm-beta?
Comment on attachment 9157474 [details] [diff] [review] 546932-carddav-init-2.diff Approved for beta
Attachment #9157474 - Flags: approval-comm-beta? → approval-comm-beta+
Depends on: 1650733

Work on CardDAV beyond this initial implementation will continue in bug 1650733.

Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Depends on: 1660127
Depends on: 1660129
Depends on: 1665230
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: