426 lines
10 KiB
Markdown
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! 🌍
|