Форумы
The great place to discuss topics with other users
Extending Sngine’s Chronological Timeline Without Algorithms
'
Extending the Chronological Timeline in Sngine
A structural proposal for humane content discovery
From a Linear Feed to Living Content
The limitation of a purely chronological timeline
A chronological timeline displays content strictly by publication time: newest first, older posts continuously pushed downward.
While this approach is transparent and simple, it has a fundamental structural limitation:
Visibility is entirely tied to the moment of posting.
This leads to several structural issues:
- Valuable content has a very short visibility window
- Attention concentrates on "what's new" rather than "what matters"
- Older discussions disappear regardless of quality
- Long-term engagement naturally declines
Content does not lose relevance — it loses visibility.
The Core Idea: Content Lives in Phases, Not Rankings
Instead of replacing chronological order, this concept extends it by introducing parallel content views that reflect how content actually lives over time.
Only explicit, human-driven signals.
1. Chronological View — Now
- Default view
- Fully unchanged
- No filtering or prioritization
This remains the neutral source of truth within Sngine.
2. Resonance View — Alive
An optional view that surfaces content which regains relevance through meaningful interaction, rather than popularity metrics.
A post enters Resonance only when:
- A new comment is added
- After at least 48 hours of inactivity
Explicitly not triggered by:
- Likes (too easily gamed)
- Shares (can be automated)
- Author self-promotion
- Any automated or passive actions
Transparency (mandatory)
Each resurfaced post clearly displays the reason it appears:
"Conversation resumed after 6 days by [username]"
This reason is stored explicitly in the database, not inferred or calculated:
Database Schema Addition
| Table | Column | Type | Purpose |
|---|---|---|---|
posts |
last_resonance_at |
TIMESTAMP NULL | When post entered Resonance |
posts |
resonance_reason |
VARCHAR(255) NULL | Explicit reason for display |
posts |
resonance_count |
INT DEFAULT 0 | Track re-entries (cooldown logic) |
users |
default_view |
ENUM | User preference (optional) |
Intentional constraints
- Maximum of 5 items visible — no infinite scroll, no filler
- Temporary visibility: 24 hours OR until displaced by newer qualifying content
- Re-entry cooldown: Minimum 7 days between appearances prevents spam
- No artificial filling: If only 2 items qualify, show 2. Silence is acceptable.
3. Archive View — Past
Not a list of old posts, but a space for intentional discovery.
Features
- Filter by time period, topic, or author
- Thematic timelines: "This topic was actively discussed in September 2023"
- Visual connections: Related posts within the same theme
The archive preserves context, not just stored data.
The Role of the Author: Human Curation
Authors may optionally:
- Mark one older post per week as contextually relevant
- Add a required explanation (minimum 50 characters) why it matters now
This is:
- Not a boost (no algorithmic advantage)
- Not a ranking (appears in Resonance with distinct visual indicator)
- Explicit human interpretation, not system inference
Why not a "bump" button? A bump is intentional manipulation by the author. Resonance responds to genuine community interest — someone else must reignite the conversation. This prevents gaming while preserving agency.
Why This Improves Engagement (Without Manipulation)
This approach does not aim to maximize:
- Clicks
- Scrolling time
- Daily active users through notifications
Instead, it enables:
- Longer and resumed conversations
- Higher-quality interaction
- Content with multiple life cycles
- Sustained attention over time
Alternative Success Metrics
Rather than focusing on traditional engagement metrics, this model evaluates:
- Conversation continuity: Average time between first and last comment
- Resonance rate: Percentage of posts that re-enter active discussion
- Attention distribution: Views spread across content age, not concentration on "now"
- Author retention: Motivation to post quality over quantity
Summary
A purely chronological timeline is fair, but structurally limited. By extending it with transparent, activity-based resurfacing and narrative archival discovery, Sngine can:
- Preserve chronological integrity
- Increase content longevity
- Improve engagement without algorithms or manipulation
- Maintain technical simplicity (3 columns, optional module)
It is a structural proposal to "make Sngine more humane."
Technical Implementation Notes
Resonance Detection Logic (Pseudo-code)
// On new comment submission
if ($post->last_comment_time < strtotime('-48 hours')) {
$post->last_resonance_at = now();
$post->resonance_count++;
$post->resonance_reason = sprintf(
"Conversation resumed after %d days by %s",
daysSince($post->last_comment_time),
$current_user->username
);
// Maintain max 5 items: remove oldest if needed
if (Resonance::count() > 5) {
Resonance::oldest()->remove();
}
// Cooldown check for re-entry
if ($post->resonance_count > 1) {
$post->resonance_locked_until = now()->addDays(7);
}
}

1️⃣ Database Setup
-- Add new fields to posts
ALTER TABLE posts
ADD COLUMN last_resonance_at TIMESTAMP NULL,
ADD COLUMN resonance_count INT DEFAULT 0,
ADD COLUMN resonance_reason VARCHAR(255) NULL;
-- Table for user feed preferences
CREATE TABLE user_feed_preferences (
user_id INT PRIMARY KEY,
default_view ENUM('chronological', 'resonance', 'archive') DEFAULT 'chronological',
resonance_enabled BOOLEAN DEFAULT TRUE
);
✅ Ready to store “Resonance” and personal feed preferences.
2️⃣ Resonance Trigger (PHP)
function handleResonance($post_id, $comment_user_id) {
// Fetch post
$post = getPostById($post_id);
// Check if last comment was more than 48 hours ago
if (strtotime($post['last_comment_time']) < strtotime('-48 hours')) {
$post['last_resonance_at'] = date('Y-m-d H:i:s');
$post['resonance_count'] += 1;
$post['resonance_reason'] = "Conversation resumed after " .
calculateDaysSince($post['last_comment_time']) . " days by UserID: $comment_user_id";
updatePostResonance($post); // Update in DB
maintainResonanceLimit(5); // Max 5 posts visible
}
}
// Helper function
function calculateDaysSince($timestamp) {
$then = new DateTime($timestamp);
$now = new DateTime();
$diff = $then->diff($now);
return $diff->days;
}
3️⃣ Frontend: Tabs and Display
<div class="feed-tabs">
<button onclick="showTab('chronological')">Now</button>
<button onclick="showTab('resonance')">Alive</button>
<button onclick="showTab('archive')">Past</button>
</div>
<div id="chronological" class="tab-content">
<?php foreach($posts_chrono as $post): ?>
<div class="post">
<p><?= $post['content'] ?></p>
<small><?= $post['created_at'] ?></small>
</div>
<?php endforeach; ?>
</div>
<div id="resonance" class="tab-content" style="display:none">
<?php foreach($posts_resonance as $post): ?>
<div class="post">
<p><?= $post['content'] ?></p>
<small><?= $post['resonance_reason'] ?></small>
</div>
<?php endforeach; ?>
</div>
<div id="archive" class="tab-content" style="display:none">
<?php foreach($posts_archive as $post): ?>
<div class="post">
<p><?= $post['content'] ?></p>
<small><?= $post['created_at'] ?> | Theme: <?= $post['theme'] ?></small>
</div>
<?php endforeach; ?>
</div>
<script>
function showTab(tabName) {
document.querySelectorAll('.tab-content').forEach(tab => tab.style.display='none');
document.getElementById(tabName).style.display='block';
}
</script>
✅ Simple, clear, three distinct views.
4️⃣ Queries
Chronological
SELECT * FROM posts
ORDER BY created_at DESC
LIMIT 50;
Resonance
SELECT * FROM posts
WHERE last_resonance_at IS NOT NULL
ORDER BY last_resonance_at DESC
LIMIT 5;
Archive
SELECT * FROM posts
WHERE created_at < NOW() - INTERVAL 7 DAY
ORDER BY created_at DESC;
> In Archive you can later filter by theme, author, or month.
5️⃣ Author Curation (Optional)
function markPostAsContextual($post_id, $note) {
$post = getPostById($post_id);
$post['resonance_reason'] = $note;
$post['last_resonance_at'] = date('Y-m-d H:i:s');
updatePostResonance($post);
}
> Allows authors to explicitly make old posts relevant again.
6️⃣ Testing Checklist
- New post → check Chronological feed
- Old post + new comment after >48h → check Resonance feed
- Archive → filter by date or theme → check context display
- Author marks post → appears in Resonance with note