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.
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!
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
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.
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…
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
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.
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…
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?
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
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
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.