Files
Swarm/docs/FOLLOWING_USERS_GUIDE.md
2025-12-28 22:18:50 +08:00

426 lines
10 KiB
Markdown

# Follow Feature - User Guide
## Quick Start: How to Follow Fediverse Users
### Method 1: Via Search (Recommended)
1. Go to the search bar in Solar Network
2. Type the user's full address: `@username@domain.com`
- Example: `@alice@mastodon.social`
- Example: `@bob@pleroma.site`
3. Click on their profile in search results
4. Click the "Follow" button
5. Wait for acceptance (usually immediate)
6. ✅ Done! Their posts will now appear in your timeline
### Method 2: Via Profile URL
1. If you know their profile URL, visit it directly:
- Example: `https://mastodon.social/@alice`
2. Look for the "Follow" button on their profile
3. Click it to follow
4. ✅ You're now following them!
## What Happens When You Follow Someone
### The Technical Flow
```
You click "Follow"
Solar Network creates Follow Activity
Follow Activity is signed with your private key
Solar Network sends Follow to their instance's inbox
Their instance verifies your signature
Their instance processes the Follow
Their instance sends Accept Activity back
Solar Network receives and processes Accept
Relationship is stored in database
Their public posts federate to Solar Network
```
### What You'll See
-**"Following..."** (while waiting for acceptance)
-**"Following" ✓** (when accepted)
-**Their posts** in your home timeline
-**Their likes, replies, boosts** on your posts
## Different Types of Accounts
### Regular Users
- Full ActivityPub support
- Follows work both ways
- Content federates normally
- Example: `@alice@mastodon.social`
### Locked Accounts
- User must manually approve followers
- You'll see "Pending" after clicking follow
- User receives notification to approve/deny
- Example: `@private@pleroma.site`
### Bot/Service Accounts
- Automated content accounts
- Often auto-accept follows
- Example: `@newsbot@botsin.space`
### Organizational Accounts
- Group or team accounts
- Example: `@team@company.social`
## Managing Your Follows
### View Who You're Following
**Go to**: Following page or `GET /api/activitypub/following`
You'll see:
- Username
- Display name
- Profile picture
- When you followed them
- Their instance (e.g., "Mastodon")
### Unfollowing Someone
**Method 1: Via UI**
1. Go to their profile
2. Click "Following" button (shows as active)
3. Click to unfollow
**Method 2: Via API**
```bash
curl -X POST http://solar.local:5000/api/activitypub/unfollow \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"targetActorUri": "https://mastodon.social/users/alice"
}'
```
**Response**:
```json
{
"success": true,
"message": "Unfollowed successfully"
}
```
### View Your Followers
**Go to**: Followers page or `GET /api/activitypub/followers`
You'll see:
- Users following you
- Their instance
- When they started following
- Whether they're local or from another instance
## Searching Fediverse Users
### How Search Works
1. **Type in search bar**: `@username@domain.com`
2. **Solar Network queries their instance**:
- Fetches their actor profile
- Checks if they're discoverable
3. **Shows results**:
- Profile picture
- Display name
- Bio
- Instance name
### Supported Search Formats
| Format | Example | Works? |
|--------|---------|--------|
| Full handle | `@alice@mastodon.social` | ✅ Yes |
| Username only | `alice` | ⚠️ May search local users first |
| Full URL | `https://mastodon.social/@alice` | ✅ Yes |
## Privacy Considerations
### Public Posts
- **What**: Posts visible to everyone
- **Federation**: ✅ Federates to all followers
- **Timeline**: Visible in public federated timelines
- **Example**: General updates, thoughts, content you want to share
### Private Posts
- **What**: Posts only visible to followers
- **Federation**: ✅ Federates to followers (including remote)
- **Timeline**: Only visible to your followers
- **Example**: Personal updates, questions
### Unlisted Posts
- **What**: Posts not in public timelines
- **Federation**: ✅ Federates but marked unlisted
- **Timeline**: Only followers see it
- **Example**: Limited audience content
### Followers-Only Posts
- **What**: Posts only to followers, no federated boost
- **Federation**: ⚠️ May not federate fully
- **Timeline**: Only your followers
- **Example**: Very sensitive content
## Following Etiquette
### Best Practices
1. **Check before following**:
- Read their bio and recent posts
- Make sure they're who you think they are
- Check if their content aligns with your interests
2. **Start with interactions**:
- Like a few posts first
- Reply thoughtfully
- Share interesting content
- Then follow if you want to see more
3. **Respect instance culture**:
- Each instance has its own norms
- Read their community guidelines
- Be mindful of local rules
4. **Don't spam**:
- Don't mass-follow users
- Don't send unwanted DMs
- Don't repeatedly like old posts
5. **Use appropriate post visibility**:
- Public for general content
- Unlisted for updates to followers
- Private for sensitive topics
### Red Flags to Watch
1. **Suspicious accounts**:
- Newly created with generic content
- Only posting promotional links
- Unusual following patterns
2. **Instances with poor moderation**:
- Lots of spam in public timelines
- Harassment goes unaddressed
- You may want to block the instance
3. **Content warnings not respected**:
- Users posting unmarked sensitive content
- You can report/block these users
## Troubleshooting
### "Follow button doesn't work"
**Possible causes**:
1. User doesn't exist
2. Instance is down
3. Network connectivity issue
**What to do**:
1. Verify the username/domain is correct
2. Try searching for them again
3. Check your internet connection
4. Try again in a few minutes
### "User doesn't appear in Following list"
**Possible causes**:
1. Follow was rejected (locked account)
2. Follow is still pending
3. Error in federation
**What to do**:
1. Check if their account is locked
2. Wait a few minutes for acceptance
3. Check your ActivityPub logs
4. Try following again
### "Can't find a user via search"
**Possible causes**:
1. Username/domain is wrong
2. User's instance is blocking your instance
3. User's profile is not discoverable
**What to do**:
1. Double-check the spelling
2. Try their full URL: `https://instance.com/@username`
3. Check if they're from a blocked instance
4. Contact them directly for their handle
## API Reference
### Follow a Remote User
**Endpoint**: `POST /api/activitypub/follow`
**Request**:
```json
{
"targetActorUri": "https://mastodon.social/users/alice"
}
```
**Success Response**:
```json
{
"success": true,
"message": "Follow request sent. Waiting for acceptance.",
"targetActorUri": "https://mastodon.social/users/alice"
}
```
### Get Your Following
**Endpoint**: `GET /api/activitypub/following?limit=50`
**Response**:
```json
{
"users": [
{
"actorUri": "https://mastodon.social/users/alice",
"username": "alice",
"displayName": "Alice Smith",
"bio": "I love tech!",
"avatarUrl": "https://...",
"followedAt": "2024-01-15T10:30:00Z",
"isLocal": false,
"instanceDomain": "mastodon.social"
}
]
}
```
### Get Your Followers
**Endpoint**: `GET /api/activitypub/followers?limit=50`
**Response**:
```json
{
"users": [
{
"actorUri": "https://pleroma.site/users/bob",
"username": "bob",
"displayName": "Bob Jones",
"bio": "Federated user following me",
"avatarUrl": "https://...",
"followedAt": "2024-01-10T14:20:00Z",
"isLocal": false,
"instanceDomain": "pleroma.site"
}
]
}
```
### Search Users
**Endpoint**: `GET /api/activitypub/search?query=@alice@domain.com&limit=20`
**Response**:
```json
{
"users": [
{
"actorUri": "https://mastodon.social/users/alice",
"username": "alice",
"displayName": "Alice Smith",
"bio": "Tech enthusiast",
"avatarUrl": "https://...",
"isLocal": false,
"instanceDomain": "mastodon.social"
}
]
}
```
## Real Examples
### Example 1: Following a Mastodon User
**What you do**:
1. Search for `@alice@mastodon.social`
2. Click on Alice's profile
3. Click "Follow" button
4. Wait 1-2 seconds
5. ✅ Alice appears in your "Following" list
6. ✅ Alice's public posts appear in your timeline
**What happens technically**:
- Solar Network sends Follow to Alice's Mastodon instance
- Alice's Mastodon auto-accepts (unless locked)
- Mastodon sends Accept back to Solar Network
- Relationship stored in both databases
- Alice's future posts federate to Solar Network
### Example 2: Following a Locked Account
**What you do**:
1. Search for `@private@pleroma.site`
2. Click "Follow" button
3. ✅ See "Following..." (pending)
4. Wait for user to approve
**What happens technically**:
- Solar Network sends Follow to private@pleroma.site
- Private user receives notification
- Private user manually approves the request
- Private user's instance sends Accept
- ✅ Now following!
### Example 3: Following a Bot Account
**What you do**:
1. Search for `@news@botsin.space`
2. Click "Follow" button
3. ✅ Immediately following (bots auto-accept)
**What happens technically**:
- Follow is auto-accepted
- News posts appear in your timeline
- Regular updates from the bot
## Key Differences from Traditional Social Media
| Aspect | Traditional Social | ActivityPub |
|---------|------------------|-------------|
| Central server | ❌ No | ✅ Yes (per instance) |
| Multiple platforms | ❌ No | ✅ Yes (Mastodon, Pleroma, etc.) |
| Data ownership | ❌ On their servers | ✅ On your server |
| Blocking | ❌ One platform | ✅ Per instance |
| Migration | ❌ Difficult | ✅ Use your own domain |
| Federation | ❌ No | ✅ Built-in |
## Getting Help
If you have issues following users:
1. **Check the main guide**: See `HOW_TO_FOLLOW_FEDIVERSE_USERS.md`
2. **Check your logs**: Look for ActivityPub errors
3. **Test the API**: Use curl to test follow endpoints directly
4. **Verify the user**: Make sure the user exists on their instance
## Summary
Following fediverse users in Solar Network:
1. **Simple**: Just search and click "Follow"
2. **Works both ways**: You can follow them, they can follow you
3. **Works across instances**: Mastodon, Pleroma, Lemmy, etc.
4. **Federated content**: Their posts appear in your timeline
5. **Full interactions**: Like, reply, boost their posts
It works just like following on any other social platform, but with the added benefit of being able to follow users on completely different services! 🌍