Sharing feature

One idea for a feature that’s been going around for a while is to enable a person-to-person sharing, aka food baskets in Foodsharing.de. This is also an idea worth pursuing to make Karrot into a more general sharing platform.

I made up the following mock-up of how it would look like, with comments below.

Shared items or food will be accessible on the sidenav (as you notice from the mock-up, I already excluded from the home-menu some of the less used features). The shared items will be visible with the picture, avatar of person sharing it and title. The button for sharing something (adding an item) should be prominent. Location on the map is on the left (already zoomed in to the selected item on the right). On the right-side column you have the item chat where other users can show their interest in getting the item.

Questions:

  • expiration date for the item?
  • how notifications will work
  • possibility to de-activate offering and chat after choosing the person who will get it
  • some rating or feedback system?

Implementation

My suggestion to start with the feature to work within a group, that is, whatever a person shares is visible for group members only. Later it would be interesting to make it possible to share an item publicly, that is, visible to any user of the platform, and to share items between groups, that is, a user can choose to which group(s) the item will be visible. There’s a whole bunch of reasons to set it up like this, but I’ll expose them in another occasion.

3 Likes

One detail. Well, i do use history, where will that be then.

I really like how you used the existing columns design for your mockup, @bruno! Having the chat and more detailed explanation in the detail sidebar makes perfect sense to me.

To your questions:
An expiration date of some kind would be really cool, but I don’t know exactly how it should look like. From the experience in foodsharing.de I know that people normally don’t delete their offers even after they’re not longer valid. But I also know that sometimes you have something left longer than you initially planned… That makes it hard to estimate the time your offer should be online.
Maybe the person offering can set an expiration date when creating the offer, but when it expires it’s not automatically deleted but just inactive and if necessary it can be reactivated…?

Notifications are always tricky, but here it seems quite straight-forward… I’d enable notifications for new item listings by default and then could give the users a checkbox in their settings to generally disable them. Then we’d have the normal button in the detail sidebar for every individual case. And of course, when you write into the chat of an item you’re automatically subscribed to that conversation. The person offering is part of that conversation from the start and thus gets notified as soon as someone else writes something.

Deactivating is a necessity for sure. We’d need a new page like ‘your offers’ where all your offers are listed - be them active or inactive - and where you can edit, (de)activate and/or delete them.

A rating system sounds like extra sugar and I wouldn’t add it to the first implementation.

Same goes for public sharing and sharing between groups - that’s probably much more complex as everything in Karrot is designed to work on group level… But I like the ideas and agree that it would definitely be cool to have those features!

1 Like

@Disa: I guess the history button in the sidenav would go to the three-dots-menu next to the cog in the row called ‘Home’. :slight_smile:

1 Like

Good points! I generally agree!

Yeah, probably the best is to have only the active/inactive status on offerings, to begin with at least.

About the notifications on by default it seems reasonable when groups are still slowly adopting the feature and there’s not much activity going on. Thereafter it begins to be problematic. The way I see to solve this issue is the bootstrap mode (for all kinds of notifications) that would be turned off after x number of users or activity in the group, but that’s another feature :wink:

More on the practical side I can see how to easily put it into action here in Gothenburg, perhaps not even in the Solikyl group (although it would be great if people spontaneously started using it) but by starting another group with people involved in different saving initiatives, including Free Shops.

I started to work on it here Person to person sharing by nicksellen · Pull Request #1799 · yunity/karrot-frontend · GitHub - it might take me a while though…

1 Like

You can see it on the netlify preview now (login with dev account details, e.g. foo@foo.com / foofoo).

So, as expected it brings up lots of questions, here’s a few unsorted points/questions:

  • I figure we should have it so you request the item, and can also later withdraw your request
  • the person offering the item should be able to accept one request (or more, perhaps there are multiple parts to the offer)
  • I’m thinking there should be a chat per request (that would be seperate to any other 1-on-1 chat between the two people)
  • perhaps the UI could be a bit like the issue sidebar with tabs for “item details” and “request / chat”
  • there needs to be the other corresponding UI for the person putting the item up for sharing
  • this would concern physical items only (not services)
  • this would concern items where it is intended to transfer ownership to the other person, not rental/lending
  • I would tend towards keeping it free-form, so no specific fields for food-related stuff, at least initially
  • should probably allow multiple photos per item
  • at the moment I called the module “sharing”, but not sure I like this name (it should be a noun I think), could be “items”, but sounds too generic… “baskets” is too foodsharing imo, or “sharing items”, but that’s a bit cumbersome…
1 Like

Cool!

  • naming: maybe “offers”?
  • maybe this feature could be released per-group with a feature flag? then we could test it out with Solikyl and other interested groups without confusing the rest
1 Like

Yup, I like both ideas. The word “offers” also doesn’t tie it down to physical items if we want to expand the concept in the future.

Looks great!! So cool that you’re working on it, Nick!

I like the “offers” too.

And I think a chat per item would work better, rather than making it per request, so that different people can interact at the same place. It tends to make things more transparent (who’s arguing what for the request they’re making).

We should consider also if we want to make this transparent: who requests an item and which requests are accepted. We could also consider a simpler option whereby there are no requests to be formally made and accepted (just written on the item chat or privately) and the person who’s offering would be able to disable the offer as soon as s/he decides who is getting it. That is usually the way it works on sharing/donation groups on Facebook. People show their interest by replying to the post and the person who posted the offer writes when the offer is closed (ie person chosen). Facebook is obviously no good reference but it is interesting to consider the social dynamics there. There’s usually some competition about who replies “interested” first and I think we should design in such a way that hoarding behaviour is somehow discouraged.

1 Like

Interesting idea for the chat per pickup - I had imagined them as more private, but maybe it is more interesting to have it as a shared chat. It makes it more like facebook sharing groups as you said, which could be good or bad. They always seemed really hectic to me, and a bit like a popularity contest. There was also the problem of the “sort by $” algorithm for deciding which order to show them in, and that old ones would not seem to be removed, so lots of “DM’d you” type messages long after the item has gone… (which might be resolvable by making the UI more clear/specific about that)… which I guess leads another point if people are more inclined to DM the author than write in the messages.

It’s definitely simpler though, and I really like that aspect…

1 Like

… also, it’ll probably take me ages to complete it, I’m paused for now as I will be cycling soon …

I guess there would be no filtering at its first iteraction and offers would be sorted by date, which still leaves the problem of old offers being visible. Later we could also have some sort of expiration date as mentioned by Janina or just a simple button for the person offering to disable/archive the offer. Depends on how much you want to implement at once…

DM would still be possible, but having a chat per item would still allow for some interesting use cases in smaller groups where trust is higher and communication in general is more transparent.

I was also wondering, if we want to have the possibility of sharing/offering things publicly in the future and also from a user to a group to which they do not belong to, would this affect much the work that is put on the backend at this stage?

1 Like

Yup, basically I am happy to follow your lead on how this should work. You are like “feature owner” as far as I’m concerned.

I’ve just added the chat to the UI, it’s only with mock data for now, doesn’t work, but you can see it at https://deploy-preview-1799--karrot.netlify.com/#/group/13/offers/234 - and should work for mobile display now too.

Maybe that would be sufficient for viewing the offers for initial version?

I’ll work a bit more on the form for creating offers, as I wanted to add support for uploading multiple images, which we didn’t do before…

1 Like

I think I’ll start working on the backend now with the following concept:

  • any member of a group can create an offer within that group
  • offers will be only offered within the group
  • they have a single conversation attached, to which anyone can participate should they wish
  • the list will be ordered by creation date
  • each offer will have name, description, and one or more photos
  • the first photo is the “cover” photo

things I won’t work on initially, but will need some solution/implementation soonish:

  • no ability to remove offers once created
  • no expiry for items
  • no history entries created

Would welcome any feedback about this basic model of offers, @bruno has basically come up with that model, maybe @Disa / @tiltec / @djahnie or any others have some opinions too :slight_smile:

3 Likes

Sounds good!

What about having “accepted” and “disabled” statuses for offers that the creator can set?

Did you think about notifications already? Should users be made aware of new offers? Can they be marked as seen?

1 Like

Cool! I guess the next thing to make it a great working prototype would be the disabled/archive status that creators of offers can set.

Will it be possible at this first stage to edit the offer? Then people will find a way to mark it as disabled if it’s not available

So, this is sort-of working now - the backend was deployed to dev.karrot.world yesterday, and the frontend, is still very much work in progress, but you can use quite a few of the features via the netlify preview.

I don’t like the accept/archive buttons at the moment, but will leave them that until a better idea arrives :slight_smile:

buttons
So bluuuuuuuuuuuuue

2 Likes

Looking good! Maybe we could deploy it to the Playground group for a few days and ask people from different groups to try it out and do some testing? It’s much less of a barrier for the average user than logging into dev.

At some point we could even add location to offers.

The frontend is not merged yet (so not available on https://dev.karrot.world/), thats the first step, and it’s close!

I also need to add the feature flag option to allow it to be used only for some groups.

After that I agree!

1 Like