-
Notifications
You must be signed in to change notification settings - Fork 33
Enhanced RSS Feeds with RFC-Specific Features #41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from all commits
08c6e39
9e18e8b
72de249
454dad1
b7d18e0
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,119 @@ | ||
| # Enhanced RSS Feeds with RFC-Specific Features | ||
|
|
||
| ## Summary | ||
|
|
||
| This PR adds three new RSS feed modes to the PHP wiki with enhanced RFC tracking capabilities, providing the PHP community with comprehensive feeds for staying informed about RFC developments, voting activities, and general wiki changes. | ||
|
|
||
| ## Background | ||
|
|
||
| Currently, the PHP wiki provides a single RSS feed that combines all wiki changes. This makes it difficult for community members to: | ||
| - Track only RFC-related activities | ||
| - Monitor RFC status changes (Discussion → Voting → Implemented) | ||
| - Follow voting processes and deadlines | ||
| - Filter out non-RFC content when focusing on language development | ||
|
|
||
| This enhancement was discussed on a live podcast and addresses the community's need for better RFC change tracking. | ||
|
|
||
| ## Features Added | ||
|
|
||
| ### Three Distinct Feed Modes | ||
| 1. **All wiki changes** (`?mode=recent`) - Enhanced existing feed with RFC metadata | ||
| 2. **RFC-only changes** (`?mode=rfc-only`) - New feed focused exclusively on RFC activities | ||
| 3. **Non-RFC changes** (`?mode=non-rfc`) - New feed for all non-RFC wiki content | ||
|
|
||
| ### Enhanced RFC Processing | ||
| - **Status Change Detection** - Automatically detects and highlights RFC status transitions | ||
| - **Rich Metadata Extraction** - Parses RFC author, version, voting deadlines, target PHP version | ||
| - **Enhanced Titles** - Includes status indicators like "[Status Changed: Discussion → Voting]" | ||
| - **Detailed Descriptions** - Provides context with RFC metadata and change summaries | ||
| - **Smart Categorization** - Categories like `rfc-status-change`, `rfc-voting-start`, `rfc-new` | ||
| - **Discussion Page Tracking** - Monitors RFC-related discussion pages | ||
| - **Comment Detection** - Identifies likely comment additions | ||
|
|
||
| ### Feed URLs | ||
| ``` | ||
| https://wiki.php.net/feed.php?mode=recent # All changes (default, enhanced) | ||
| https://wiki.php.net/feed.php?mode=rfc-only # RFC changes only | ||
| https://wiki.php.net/feed.php?mode=non-rfc # Non-RFC changes only | ||
| ``` | ||
|
|
||
| ### RFC Enhancement Controls | ||
| ``` | ||
| https://wiki.php.net/feed.php?mode=rfc-only&rfc_enhanced=1 # Enhanced features (default) | ||
| https://wiki.php.net/feed.php?mode=rfc-only&rfc_status=1 # Status change detection | ||
| https://wiki.php.net/feed.php?mode=rfc-only&rfc_discussions=1 # Discussion tracking | ||
| ``` | ||
|
|
||
| ## Example Enhanced Feed Content | ||
|
|
||
| ### RFC Status Change | ||
| ```xml | ||
| <item> | ||
| <title>RFC: Add new array functions [Status Changed: Discussion → Voting]</title> | ||
| <description> | ||
| RFC status changed from Discussion to Voting. | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. RSS feed item's content should be in HTML. Right now, my RSS feed reader would just cobble everything together in one line (like HTML and XML would). Changing the content of each item to properly marked up HTML (with escaping, if needed), is probably wise to do. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. oh interesting - i thought it was XML still - will change. |
||
| 🗳️ Voting has started! | ||
| Voting deadline: 2024-02-15 | ||
|
|
||
| Change summary: Added implementation details and voting section. | ||
|
|
||
| RFC Details: | ||
| • Current Status: Voting | ||
| • Author: John Doe | ||
| • Version: 1.2 | ||
| • Target PHP Version: 8.4 | ||
| • Voting Deadline: 2024-02-15 | ||
| </description> | ||
| <category>rfc-status-change</category> | ||
| <category>rfc-voting-start</category> | ||
| </item> | ||
| ``` | ||
|
|
||
| ## Technical Implementation | ||
|
|
||
| ### Files Modified | ||
| - `dokuwiki/inc/Feed/FeedCreatorOptions.php` - Added RFC enhancement options and new modes | ||
| - `dokuwiki/inc/Feed/FeedCreator.php` - Added RFC filtering and processing logic | ||
| - `dokuwiki/feed.php` - Updated documentation for new parameters | ||
|
|
||
| ### Files Added | ||
| - `dokuwiki/inc/Feed/RFCFeedItemProcessor.php` - RFC-specific processing and metadata extraction | ||
|
|
||
| ### Backward Compatibility | ||
| - ✅ All existing feeds continue to work unchanged | ||
| - ✅ Default behavior remains identical | ||
| - ✅ No breaking changes to existing URLs | ||
| - ✅ Existing caching system preserved and enhanced | ||
| - ✅ All feed formats (RSS, Atom) supported | ||
|
|
||
| ## Benefits | ||
|
|
||
| ### For RFC Authors | ||
| - Get notified when RFCs receive comments | ||
| - Track status changes and voting progress | ||
| - Monitor discussion activity across related pages | ||
|
|
||
| ### For PHP Community | ||
| - Stay informed about RFC developments without noise | ||
| - Follow voting processes in real-time | ||
| - Track implementation progress with rich context | ||
|
|
||
| ### For Tools and Aggregators | ||
| - Rich categorization enables intelligent filtering | ||
| - Enhanced metadata supports better presentation | ||
| - Separate feeds allow targeted monitoring | ||
|
|
||
| ## Testing | ||
|
|
||
| The implementation includes comprehensive RFC detection and processing: | ||
| - Namespace-based RFC identification (`rfc:*` pages) | ||
| - ACL-based permission checking | ||
| - Discussion page pattern matching | ||
| - Content parsing for status and metadata | ||
| - All existing DokuWiki functionality preserved | ||
|
|
||
| ## Impact | ||
|
|
||
| This enhancement provides the PHP community with the RSS feed functionality discussed in recent podcasts, enabling better tracking of RFC activities and more informed participation in PHP's development process. | ||
|
|
||
| The implementation is production-ready and follows DokuWiki's architectural patterns while adding no external dependencies. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,130 @@ | ||
| # RFC Feed Plugin for DokuWiki | ||
|
|
||
| Enhanced RSS feeds with RFC-specific features for the PHP Wiki. | ||
|
|
||
| ## Features | ||
|
|
||
| This plugin provides three distinct RSS feed modes with enhanced RFC tracking capabilities: | ||
|
|
||
| ### Feed Modes | ||
|
|
||
| 1. **All wiki changes** (`?mode=recent`) - Enhanced existing feed with RFC metadata | ||
| 2. **RFC-only changes** (`?mode=rfc-only`) - New feed focused exclusively on RFC activities | ||
| 3. **Non-RFC changes** (`?mode=non-rfc`) - New feed for all non-RFC wiki content | ||
|
|
||
| ### Enhanced RFC Processing | ||
|
|
||
| - **Status Change Detection** - Automatically detects and highlights RFC status transitions | ||
| - **Rich Metadata Extraction** - Parses RFC author, version, voting deadlines, target PHP version | ||
| - **Enhanced Titles** - Includes status indicators like "[Status Changed: Discussion → Voting]" | ||
| - **Detailed Descriptions** - Provides context with RFC metadata and change summaries | ||
| - **Smart Categorization** - Categories like `rfc-status-change`, `rfc-voting-start`, `rfc-new` | ||
| - **Discussion Page Tracking** - Monitors RFC-related discussion pages | ||
| - **Comment Detection** - Identifies likely comment additions | ||
|
|
||
| ## Usage | ||
|
|
||
| ### Feed URLs | ||
|
|
||
| ``` | ||
| https://wiki.php.net/feed.php?mode=recent # All changes (default, enhanced) | ||
| https://wiki.php.net/feed.php?mode=rfc-only # RFC changes only | ||
| https://wiki.php.net/feed.php?mode=non-rfc # Non-RFC changes only | ||
| ``` | ||
|
|
||
| ### RFC Enhancement Controls | ||
|
|
||
| ``` | ||
| https://wiki.php.net/feed.php?mode=rfc-only&rfc_enhanced=1 # Enhanced features (default) | ||
| https://wiki.php.net/feed.php?mode=rfc-only&rfc_status=1 # Status change detection | ||
| https://wiki.php.net/feed.php?mode=rfc-only&rfc_discussions=1 # Discussion tracking | ||
| ``` | ||
|
|
||
| ## Example Enhanced Feed Content | ||
|
|
||
| ### RFC Status Change | ||
|
|
||
| ```xml | ||
| <item> | ||
| <title>RFC: Add new array functions [Status Changed: Discussion → Voting]</title> | ||
| <description> | ||
| RFC status changed from Discussion to Voting. | ||
| Voting has started! | ||
| Voting deadline: 2025-02-15 | ||
|
|
||
| Change summary: Added implementation details and voting section. | ||
|
|
||
| RFC Details: | ||
| • Current Status: Voting | ||
| • Author: John Doe | ||
| • Version: 1.2 | ||
| • Target PHP Version: 8.4 | ||
| • Voting Deadline: 2025-02-15 | ||
| </description> | ||
| <category>rfc-status-change</category> | ||
| <category>rfc-voting-start</category> | ||
| </item> | ||
| ``` | ||
|
|
||
| ## Benefits | ||
|
|
||
| ### For RFC Authors | ||
| - Get notified when RFCs receive comments | ||
| - Track status changes and voting progress | ||
| - Monitor discussion activity across related pages | ||
|
|
||
| ### For PHP Community | ||
| - Stay informed about RFC developments without noise | ||
| - Follow voting processes in real-time | ||
| - Track implementation progress with rich context | ||
|
|
||
| ### For Tools and Aggregators | ||
| - Rich categorization enables intelligent filtering | ||
| - Enhanced metadata supports better presentation | ||
| - Separate feeds allow targeted monitoring | ||
|
|
||
| ## Technical Details | ||
|
|
||
| ### Implementation | ||
|
|
||
| This plugin uses DokuWiki's event system to extend RSS feed functionality without modifying core files: | ||
|
|
||
| - **FEED_MODE_UNKNOWN** - Handles custom feed modes (`rfc-only`, `non-rfc`) | ||
| - **FEED_ITEM_ADD** - Enhances RFC items with metadata | ||
| - **FEED_OPTS_POSTPROCESS** - Adds RFC-specific options | ||
|
|
||
| ### Files | ||
|
|
||
| - `action.php` - Main plugin file with event handlers | ||
| - `RFCFeedItemProcessor.php` - RFC metadata extraction and processing | ||
| - `plugin.info.txt` - Plugin metadata | ||
| - `README.md` - This file | ||
|
|
||
| ### RFC Detection | ||
|
|
||
| The plugin identifies RFC pages using multiple methods: | ||
|
|
||
| 1. **Namespace-based** - Pages starting with `rfc:` | ||
| 2. **ACL-based** - Permission checking for RFC namespace | ||
| 3. **Discussion pages** - Patterns like `rfc:*_talk`, `discussion:rfc:*` | ||
|
|
||
| ### Backward Compatibility | ||
|
|
||
| - ✅ All existing feeds continue to work unchanged | ||
| - ✅ Default behavior remains identical | ||
| - ✅ No breaking changes to existing URLs | ||
| - ✅ Existing caching system preserved and enhanced | ||
| - ✅ All feed formats (RSS, Atom) supported | ||
|
|
||
| ## Installation | ||
|
|
||
| This plugin is already installed as part of the PHP Wiki customization. It will persist through DokuWiki upgrades since it's in the `lib/plugins/` directory. | ||
|
|
||
| ## Upgrade Safety | ||
|
|
||
| Unlike the previous implementation which modified DokuWiki core files, this plugin: | ||
|
|
||
| - ✅ Survives DokuWiki upgrades without modification | ||
| - ✅ Requires no cherry-picking of commits after upgrades | ||
| - ✅ Follows DokuWiki plugin best practices | ||
| - ✅ Can be easily disabled/enabled without code changes |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this
DESCRIPTION.mdfile shouldn't be in the PR?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
correct - this was me planning how to describe it for the pr - will remove.