Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions DESCRIPTION.md
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.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this DESCRIPTION.md file shouldn't be in the PR?

Copy link
Author

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.


## 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.
Copy link
Member

Choose a reason for hiding this comment

The 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.

Copy link
Author

Choose a reason for hiding this comment

The 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.
130 changes: 130 additions & 0 deletions dokuwiki/lib/plugins/rfcfeed/README.md
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
Loading