nextcloud / contacts

📇 Contacts app for Nextcloud
https://apps.nextcloud.com/apps/contacts
GNU Affero General Public License v3.0
571 stars 172 forks source link

Auto convert from vcf 2.1 while importing [$10] #492

Open christian-weiss opened 6 years ago

christian-weiss commented 6 years ago

FEATURE REQUEST:

I know you dropped <3.0 support recently as stated here: https://github.com/nextcloud/contacts/issues/433

While in general it is a good thing to remove old standards to force users to do migration to newer standards, to keep a maintainable software solution, but in case of a sync solution like nextcloud/contacts a wide format support is (or should be) a essential attribute of that infrastructure service. My2ct.

Please re-add vcf 2.1 support again (or integrate at least a 2.1to3.0 converter), because 2.1 it is wide spread and still in heavy use.

For example used by:

--- There is a **[$10 open bounty](https://www.bountysource.com/issues/55310051-re-add-vcf-2-1-format-support-in-contact-import-function?utm_campaign=plugin&utm_content=tracker%2F46751899&utm_medium=issues&utm_source=github)** on this issue. Add to the bounty at [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F46751899&utm_medium=issues&utm_source=github).
klawdhfzasjhaa commented 6 years ago

Systems / applications that export vCard 2.1 only:

LineageOS (7.1.2) MyPhoneExplorer (1.8.8) Thunderbird (52.6)

EDIT: Maybe a workaround / better solution is described in DAVdroid FAQ:

export your contacts from your Android device and import them to your CardDAV service (not recommended).

Do not use the .vcf files exported by Android's Contacts app for any other purpose than importing again to the same Android Contacts app! Those .vcf files are using an ancient vCard format (vCard 2.1) and contain syntax errors. There are good chances that contacts will be corrupt when you try to import these .vcf files anywhere else.

Maybe the decision to drop of versions <= 3.0 was correct and we need to do it in another way:

export your Android contacts from your local account (Contacts / Export to .vcf file) and import them into your DAVdroid account (Contacts / Import from .vcf file)

Afterwards, they will be synced (hopefully correctly) to Nextcloud. It should be put on the documentation then.

elman22 commented 6 years ago

Import using DAVdroid account works for me, however high resolution images are converted into small thumbnails. I assume they are just 64x64 px.

hitam4450 commented 6 years ago

What is the current status of resolving this issue ???

Yethiel commented 6 years ago

Many users also carried over contacts from older versions of Outlook so the vCard version remains at an older version as well. I'm also in favor of re-adding support for v2.1.

skjnldsv commented 6 years ago

This is not that simple. Almost all the libraries that manages vcards on javascript doesn't support 2.1.

skjnldsv commented 6 years ago

As a reference: we need https://github.com/mozilla-comm/ical.js/issues/187

laurent22 commented 5 years ago

@christian-weiss, maybe you can add to your list Thunderbird, as it also only exports to vCard 2.1. Because of this I haven't been able to move to Nextcloud Card.

bendem commented 5 years ago

Please at least provide a useful error message that tells users to download their contacts from https://contacts.google.com instead of having them dig up server logs.

CodeAlDente commented 4 years ago

Almost all of my android mobile devices and email clients such as Thunderbird work with 2.1. I wanted to use this plugin to get rid off external services especially Google.

It seems to me that a lot of more software and devices rely on that older version. Although I do understand that sooner or later, we have to switch to a newer version to benefit from stability and security improvements. But you guys can not just drop support for a version that is widely used like this.

I was able to migrate the most of my contacts to the new version but still have to add some extra information which will now take a few hours...

christian-weiss commented 4 years ago

I updated the description to have all affected devices/software at one place. In addition i increased the bounty to 20 USD - hope it helps to motivate someone.

marmoute commented 4 years ago

Could we get to a middle ground where nextcloud detect this is 2.1 and issue an appropriate error message. The current error reporting is quite opaque. With an accurate message users would know were to look.

skjnldsv commented 4 years ago

Could we get to a middle ground where nextcloud detect this is 2.1 and issue an appropriate error message. The current error reporting is quite opaque. With an accurate message users would know were to look.

Yes! That is a very nice idea :) I guess this crosses #990

bendem commented 4 years ago

Could we get to a middle ground where nextcloud detect this is 2.1 and issue an appropriate error message. The current error reporting is quite opaque. With an accurate message users would know were to look.

That's what I asked, but people didn't seem to agree with my request.

@CodeAlDente @NewRedsquare, care to share why the thumb-down?

skjnldsv commented 4 years ago

That's what I asked, but people didn't seem to agree with my request.

Sorry if I misunderstood :disappointed: :hugs:

NewRedsquare commented 4 years ago
bendem commented 4 years ago
* off comment - @bendem u ask to use a proprietary service that collects your data with a low privacy...

Alright, I see the misunderstand. I don't ask to use anything, I say that if someone tries to import the backup of google's contact generated by nextcloud the nextcloud android application, it doesn't work and the error is not useful to the user. What I ask is that we detect this case and tell the user why it doesn't work and what's the solution (downloading their contact from the web ui).

The goal is to smooth out the user experience migrating away from proprietary services.

NewRedsquare commented 4 years ago

Ok, i see now... my fault. I agree with your REAL idea, and adding a "warning" if they import from google contact to avoid it in the future is nice

Blackwidow-sudo commented 4 years ago

thats sad. I dont use Google Calender or Google Contacts. When i export my Contacts and upload the file to my nxtcld to import them, i get errors for all of the contacts. 0% of them can get imported. If i make a Contacts Backup with the Nextcloud-App and then import them, i get fewer Errors. 90% of them are imported.

sushidave commented 4 years ago

As a workaround, people who don't want to use Google services for data privacy reasons could use a self-hosted ownCloud instance and its contacts app. It still seems to support vCard 2.1.

skjnldsv commented 4 years ago

As a workaround, people who don't want to use Google services for data privacy reasons could use a self-hosted ownCloud instance and its contacts app. It still seems to support vCard 2.1.

Also, no updates since 2 years :stuck_out_tongue_closed_eyes:

skjnldsv commented 4 years ago

Could we get to a middle ground where nextcloud detect this is 2.1 and issue an appropriate error message. The current error reporting is quite opaque. With an accurate message users would know were to look.

Yes! That is a very nice idea :) I guess this crosses #990

Closing. Let's be honest, no libraries want to support v2.1 anymore. We're just in a dead end and i'd rather take a stance and make a public statement about it.

What we won't do:

What we will/can do

skjnldsv commented 4 years ago

Let keep this one open for

  • Maybe add a way to auto convert to upper versions if possible shrug
marmoute commented 4 years ago

What we will/can do

* Add proper warning for 2.1 vcards

Yes please !

samweisgamdschie commented 4 years ago

At a users and admins point of view, what happened here is real mess. The only real reason why support for v2.1 was dropped is because developers have no proper third party library to use. But what about using an older version of library and import the relevant parts at least? It seems the maintainers of this addon are not good in thinking as a real life user or only develop for themselves which is sad in an enterprise like application like nextcloud. So many users need this, so many companies still use v2.1 with their addressbooks but it's easier to chat a little on github, than find a solution that rocks..

skjnldsv commented 4 years ago

but it's easier to chat a little on github, than find a solution that rocks

Precisely, otherwise it would have been done already. Do you have a library to suggest? Of course any contribution is very welcome! :+1:

laurent22 commented 4 years ago

I think the issue is that support for v2 was working, then was dropped without providing a replacement. Then it was decided that support will never be restored, although your post implies you'd accept PRs which is in contradiction what you wrote above (" we won’t add 2.1 support”). For me it’s the kind of development process and unclear communication that makes me not trust Nextcloud much.

skjnldsv commented 4 years ago

although your post implies you'd accept PRs which is in contradiction what you wrote above (" we won’t add 2.1 support”). For me it’s the kind of development process and unclear communication that makes me not trust Nextcloud much.

Right! So let me clarify a bit then. Because I know that there is no proper alternative for supporting v2.1 properly, I wrote the comment above. I'd be happy to have a fully replaced all-in-one lib that does all the magic! But We checked, there is nothing sustainable :shrug: So if anyone have lots of time: feel free. But I (or anyone at Nextcloud here) won't dive into this mess and add 2.1.

samweisgamdschie commented 4 years ago

It's so sad when fighting for open source software like Nextcloud which also offers an enterprise support but when it comes to such basics (like supporting older versions which is most likely in use in large companies like mine) a user not even gets a proper error message. This is a perfect example for anti FOSS guys to say: "It's not worth it/reliable because it's a hobby project.".

You want a solution: whats with an older commit/version with v2.1 support? How do you support v2.1 earlier? It's easy to find out which version it is (it's a single line in the file) where you can switch between libraries. Or something like this although a bit outdated...

jancborchardt commented 4 years ago

You want a solution: whats with an older commit/version with v2.1 support? How do you support v2.1 earlier? It's easy to find out which version it is (it's a single line in the file) where you can switch between libraries. Or something like this although a bit outdated...

As @skjnldsv already said, a contribution of this kind would be appreciated! :) We are an open source community and everyone is welcome.

samweisgamdschie commented 4 years ago

I am not able to contribute, neither in js nor in php (Btw. do I find such an answer ignorant, because not everyone that uses a software has the ability to even write software. Have you ever thought of repairing your car by yourself, when it is broken?)

A quick search in google trends show, that the interest is nearly evenly spread over v2.1, v3.0 and v4.0 in year 2020. The question is, are you (as maintainers of a piece of widely used software) happy with dropping support for such a relevant part of users?

skjnldsv commented 4 years ago

Have you ever thought of repairing your car by yourself, when it is broken

I do every time I need to fix my car. Though if I find someone that does it for free for me, I don't go and complains about his work. Not having the knowledge to improve/change Nextcloud is ok. Like you said not everyone can, and that's also great, because it gives different point of view.

What is not ok is feeling entitled to fixes and changes into a software that you get for free. Coming here with sarcastic comments and sassy remarks is not how we contributes nor how I want to start my day. Read our code of conduct

CodeAlDente commented 4 years ago

I think the point here is that the version you guys have just dropped is very widely used. And now we as users are facing a difficult situation to deal with it. I do appreciate your time and your contribution for all of us - no doubt. But I guess even as a developer for open source software you should be able to cope with such feedback. The example with the broken car that users supposed to be able to fix, is neither sarcastic or sassy but just what it is: an example.

Unfortunately I had to uninstall this plugin as it is not useful for my case at the moment. That is a shame as it was a very good alternative to Google.

christian-weiss commented 4 years ago

Expectation management: I think we can treat nextcloud (file share feature) as enterprise ready, but that is a judgement every enterprise business should do on its own. My personal opinion is that nextcloud (file share feature) is a reasonable choice for many companies. But the plugins like "Contacts" or "Calendar" are not good enough to be counted as enterprise-ready. Interoperability is not wide enough to treat it as a serious solution for business needs. Its sync process is not well enough tested to be stable enough. For example if a contact contains more then 1 date (birthdate, deathdate, celebrationdate) then sync is broken, webUI is broken and so on - for years. As an enterprise you may commit to open source if this software is a core part of your business, but if it is just one out of 100 supporting tools then a company probably will never put efforts into it to fix issue. As long as there is no active development by the community, you should tread the plugins as: hobby software.

A discussion if Nextcloud is enterprise-ready or not should not be part of this ticket.

Again, i would vote for a comeback of the old v2.1 (at least as a one-time import; one-way; from phone to nextcloud; sync via v2.1 is not required).

laurent22 commented 4 years ago

For me it goes back to unclear communication from the project as a whole. With a package under the Nextcloud main repository with a generic name like "contacts" you'd expect something stable and that doesn't introduce major breaking changes, at least not without an alternative being offered, but it's not what's happening.

Perhaps it's not the place to discuss this but Nextcloud should reconsider what they are offering exactly - if it's just file sync they really support then so be it. And then they could make it clear that the other apps are indeed more like hobby projects, not really supported, and perhaps move them to a different namespace like "nextcloud-community" or "nextcloud-lab".

That would be best both for users, who wouldn't have too high expectations, and would put less pressure on developers, who are doing a good job nonetheless, but of course can't do everything.

samweisgamdschie commented 4 years ago

I am sorry if anyone feels mocked about my posts, it was not my intention. It is just my job as an ops to integrate software into our enterprise environment..

I also end my part of the discussion here. I agree with the former posts/poster with the confusion. I took a closer look on the description of the apps flag "Featured", which says "Featured apps are developed by and within the community. They offer central functionality and are ready for production use."

skjnldsv commented 4 years ago

you'd expect something stable and that doesn't introduce major breaking changes, at least not without an alternative being offered, but it's not what's happening.

So, despite having 2.1 not really supported in previous version of Nextcloud contacts (and owncloud btw,) Nextcloud (and owncloud) server are rejecting vcard 2.1 since 2015. https://github.com/nextcloud/3rdparty/commit/588b1308f4abf58acb3bb8519f6952d9890cca89#diff-8ad21f9df86ccad579499e20513b08fc622385482583c2bd33ea7479659d38a2R233 https://github.com/nextcloud/3rdparty/blob/588b1308f4abf58acb3bb8519f6952d9890cca89/sabre/vobject/lib/Component/VCard.php#L233

So while I'm intrigued about why this issue have suddenly gained interest over the last weeks, I'm quite surprise to see people complaining about a decision that was taken 5 years ago.

skjnldsv commented 4 years ago

you'd expect something stable and that doesn't introduce major breaking changes

Any software will endure breaking changes at some point. Nextcloud doesn't escape the rule. While we do our best to ease up the User experience, we all have our issues and our way to deal with them the best we can.

skjnldsv commented 4 years ago

Since there isn't really much more to say, I'll lock this thread. If anyone want to start working on a proper auto-conversion of vcards 2.1 to 3/4 on upload, feel free to do so, we'll be happy to assit!.

tflidd commented 3 years ago

Just as others might be interested, I found an external script (python) to convert v2.1 to v3: https://github.com/jowave/vcard2to3

In my case, it worked for a small address book exported from an android phone.