-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
Summary
The current spec mandates daily files (YYYY/MM/DD/chat.ttl). This proposal suggests allowing monthly files (YYYY/MM.ttl) as an alternative for moderate-activity chat rooms.
Problem with Daily-Only
For rooms with low-to-moderate activity (~10-100 messages/day):
| Metric | Daily | Monthly |
|---|---|---|
| Files per year | 365 | 12 |
| HTTP requests to load 1 month | ~30 | 1 |
| Avg file size | 10-50KB | 300KB-1MB |
| Directory listings needed | Many | Few |
Daily sharding creates:
- Many small files (overhead)
- Many HTTP requests for historical browsing
- Complex discovery (need to enumerate days)
Proposal
Allow implementations to choose sharding granularity:
<#chat> a meeting:LongChat ;
:shardingPeriod :monthly . # or :daily (default)Monthly structure:
/chat/
index.ttl
2024/
01.ttl
02.ttl
Daily structure (current, remains default):
/chat/
index.ttl
2024/
01/
15/chat.ttl
16/chat.ttl
Discovery
Readers would check index.ttl for sharding type, then:
- Daily: enumerate
YYYY/MM/DD/ - Monthly: enumerate
YYYY/MM.ttl
Or better: index file lists all shard URIs explicitly.
Use Cases
| Room Type | Recommended |
|---|---|
| High-volume (100+ msgs/day) | Daily |
| Moderate (10-100 msgs/day) | Monthly |
| Low-volume (<10 msgs/day) | Monthly or even yearly |
Backwards Compatibility
- Daily remains the default
- Existing daily chats continue working
- Monthly is opt-in for new chats
- Readers must support both (follow links from index)
References
- Discussion: Scalability: Handle long chat histories sustainably solid-chat/app#7
- Current spec: https://solid.github.io/chat/
Would love feedback on whether this flexibility would be acceptable while maintaining interoperability.
Metadata
Metadata
Assignees
Labels
No labels