mkstack/NIP.md

116 lines
3.6 KiB
Markdown
Raw Normal View History

2025-07-14 21:40:30 +00:00
# NIP-GNOME: Gnome Speak Translation Protocol
`draft` `optional`
## Abstract
This NIP defines a client-side translation protocol for converting kind 1 (Short Text Note) events into "Gnome Speak" - a whimsical fantasy language that transforms regular text into gnome-themed vocabulary and expressions.
## Motivation
To create an immersive and entertaining experience for users of gnome-themed Nostr clients, where all text content is automatically translated into a consistent fantasy language that maintains readability while adding magical woodland charm.
## Specification
### Translation Scope
- **MUST** translate all kind 1 events (Short Text Notes) into Gnome Speak
- **SHOULD NOT** translate other event kinds to maintain protocol compatibility
- **MUST** preserve original URLs, Nostr references (npub, note, etc.), and hashtags without translation
- **SHOULD** maintain the semantic meaning of the original text
### Translation Rules
#### Vocabulary Substitution
Common words are replaced with gnome-themed equivalents:
- Greetings: `hello``greetings, fellow earth-dweller`
- Technology: `computer``thinking-box of metal and magic`
- Time: `today``this blessed sun-cycle`
- Actions: `go``venture forth`
- People: `friend``companion of the woodland path`
#### Gnome Expressions
- Exclamations are enhanced with gnome phrases: `!``! By my pointy hat!`
- Sentence starters may be added: `In the sacred grove, ...`
- Sentence endings may be appended: `...as the ancients foretold.`
#### Special Formatting
- Bitcoin/crypto terms: `bitcoin``✨golden acorns of the digital realm✨`
- Nostr terms: `nostr``🍄message-mushroom🍄`
- Greetings: `gm``🌅when dew kisses the earth🌅`
### Implementation
#### Client Behavior
Clients implementing this NIP:
1. **MUST** detect kind 1 events
2. **MUST** apply Gnome Speak translation before displaying content
3. **SHOULD** preserve original content for editing/replying
4. **MAY** provide toggle to view original content
5. **SHOULD** indicate when content has been translated
#### Content Preservation
- Original event content **MUST** remain unchanged in storage/transmission
- Translation occurs only at display time
- Replies and quotes **SHOULD** reference original content, not translated
#### Tag Usage
Clients **MAY** add a `t` tag with value `gnome` to indicate gnome-themed content:
```json
{
"kind": 1,
"content": "Hello world!",
"tags": [["t", "gnome"]],
...
}
```
### Example
Original event:
```json
{
"kind": 1,
"content": "Good morning! Having coffee and checking bitcoin prices.",
"tags": [],
...
}
```
Displayed as:
```
"When dew kisses the earth! Partaking of bitter bean brew and witnessing ✨golden acorns of the digital realm✨ values, blessed by the forest spirits."
```
## Rationale
This approach provides:
1. **Immersive Experience**: Creates a consistent fantasy atmosphere
2. **Protocol Compatibility**: No changes to underlying Nostr protocol
3. **Reversibility**: Original content always preserved
4. **Interoperability**: Non-gnome clients display original content normally
## Security Considerations
- Translation is purely cosmetic and doesn't affect event integrity
- Original content validation remains unchanged
- No additional attack vectors introduced
## Implementation Status
This NIP is implemented in Gnome Nostr client as a client-side translation layer.
## References
- [NIP-01: Basic protocol flow description](https://github.com/nostr-protocol/nips/blob/master/01.md)
- [NIP-10: Text Notes and Threads](https://github.com/nostr-protocol/nips/blob/master/10.md)