on master help sign in
Merge pull request #1763 from urbit/thelifeandtimes-whom

Create whom.md

commit9ef5ae5ee9de071fa09ef14df22becc4251be07d authorGordon <gordon.cieplak@urbit.org> dateFri 26 Aug 2022, 18:56 (4 years ago) parentf6d47f96041339
1 file changed+69
content/grants/whom.md+69
content/grants/whom.mdnew file+69
@@ -0,0 +1,69 @@
1++++
2+
3+title = "Whom: profile and contacts manager"
4+date = "2022-08-25"
5+
6+[taxonomies]
7+grant_type = ["Proposal"]
8+grant_category = ["App Dev"]
9+
10+[extra]
11+image = ""
12+description = "A dedicated contacts app to store contact info that other apps can programmatically access"
13+reward = "3 stars"
14+assignee = ["~rivmud-fabwen"]
15+champion = ["~palfun-foslup"]
16+grant_id = "P0171"
17+completed = false
18+canceled = false
19+link = ""
20+
21++++
22+
23+# Rationale
24+When I've been to in-person social events like Assembly or other meetups, I was excited to meet new people, but frustrated that I couldn't easily keep track of everyone I met. While I could add other users by `@p` in `%pals`, the tagging system doesn't lend itself to storing contact info in a structured way, like names, emails, Twitter handles, etc. Also, even at Urbit events, many people I met didn't have planets yet! I could add them into my phone's contacts or as a Web 2 social contact, but now my contacts are split between multiple disconnected sources.
25+Urbit needs more robust way of connecting people and representing who they are. In short, I should be able to broadcast who I am with a profile, and I should be able to keep an organized list of contacts with my friends' profiles.
26+While `%pals` is a great tool for defining a list of friends, its tagging feature was not meant to represent structured contact data. The `%pals` frontend states
27+> Applications could make use of tags for grouping content, but should not change their core behavior based on the presence or absence of specific tags.
28+A dedicated contacts app needs to be able to store contact info in a way that other apps can programmatically access specific info about a contact. For example, if I knew somebody in real life, I could enter their real name into my contacts app, and Groups could display their real name instead of their @p in chats.
29+# Overview
30+`%whom` would be an app that lets me manage a list of contacts.
31+Each contact has a variety of fields that are common in desktop/phone/Web2 contact apps (name, notes, email, phone, Twitter, GitHub, etc).
32+If a contact is another Urbit user with `%whom` installed, the contact will also contain info they shared about themselves (their profile).
33+## User stories
34+1. As a user, I want to add people I know to a list of contacts, whether my contact uses Urbit or not.
35+2. As a user, I want to view and edit info about my contacts through a frontend.
36+3. As a user, I want to have a shareable profile with a variety of fields, like name, email, phone, Github, Twitter, etc.
37+4. As a user, I want to see other users' profiles in my contacts list, in addition to the info I entered about them.
38+5. As a user, I want my contacts to be updated when another user updates their profile.
39+6. As a user, when one of my non-Urbit contacts gets a planet, I want to be able to convert them to an Urbit contact.
40+7. As a user with `%pals`, I want my pals to be added to my contacts list automatically.
41+8. As a user with `%pals`, I want to be able to add my contact as a %pal with a button click.
42+9. As a user with `%pals`, I can filter my contacts by tags.
43+10. As a user with `%pals`, I want some info on my profile to be public, but I only want to share more personal info with users I trust (pals).
44+11. As a developer of another app, I want to be able to programmatically access specific fields from contacts.
45+# My background
46+I'm a professional fullstack software engineer and I've been active on Urbit since 2019. I operate the star ~holnes and have onboarded a few of my friends. I graduated Hoon School in 2020, attended Assembly and a few local meetups, and completed the Studio email apprenticeship with Tirrel earlier this year. I've had a great experience working with Hoon and Gall so far, and am eager to build more apps.
47+# Milestones / Estimates / Compensation
48+## Milestone 1 - Contacts
49+Completed by: Sep. 1
50+- Compensation: 1 star
51+- Goals:
52+ - Users can create and manage contacts
53+ - Users can view and edit contacts in a working frontend
54+## Milestone 2 - Profiles
55+- Completed by: Sep. 22 (Assembly '22)
56+- Compensation: 1 star
57+- Goals:
58+ - Users can create public profiles
59+ - Users can view public profiles in the frontend
60+ - Contacts contain public info from profiles
61+## Milestone 3 - Pals and Privacy
62+- Completed by: December
63+- Compensation: 1 star
64+- Goals:
65+ - Pals are automatically added as contacts
66+ - The frontend shows which contacts are pals
67+ - Contacts can be filtered by %pals tags
68+ - Users can click a button to send a contact a pal request
69+ - Users can restrict visibility on their profile, so only pals can see certain fields