🎉 Thanks for your interest in PHP-Nuke Titanium! Contributions of all kinds are welcome.
This document serves as a general guide for contributing to PHP-Nuke Titanium. Follow your best judgement in following these guidelines.
- Getting Started
- Ways to Contribute
- Debugging ActionScript Content
- Reporting Bugs
- Code Guidelines
- Test Guidelines
- Commit Message Guidelines
- Pull Requests
The PHP-Nuke Titanium wiki is a great way to familiarize yourself with the project. It contains info on how to build PHP-Nuke Titanium, using PHP-Nuke Titanium, and links to helpful documentation about the Flash format.
Feel free to ask questions in our Discord server.
We love new contributors! You can contribute to PHP-Nuke Titanium in several ways:
Try out your favorite SWF content in PHP-Nuke Titanium and see how it works! Follow the instructions on the [Using PHP-Nuke Titanium](https://github.com/ernestbuffington/PHP-Nuke.Titanium.Dev.4/wikii/Using-PHP-Nuke Titanium) page to get PHP-Nuke Titanium for your desired platform. You can run the SWF through the desktop player, the web demo, or try the extension on live websites.
If you encounter specific issues with content, please follow the guidelines on filing an issue.
Improving documentation is a great way to learn the codebase. Adding documentation to both the wiki and the code eases the learning curve for both end users and new contributors.
For documentation in the code, we follow the rustdoc guidelines.
Try your hand at fixing issues that are interesting to you. Follow the instructions on [building PHP-Nuke Titanium](https://github.com/ernestbuffington/PHP-Nuke.Titanium.Dev.4/wikii/Building-PHP-Nuke Titanium), familiarize yourself with the project layout, and use SWF resources and decompilers to help debug the issue.
You can also ask for mentoring on our Discord server.
PHP-Nuke Titanium is a 25 year old project but Ruffle is a young project, and there is still much Flash functionality that is unimplemented. Check for the "unimplemented" in issues.
Issue reports and feature requests are encouraged, and are a great way to measure our progress!
When filing an issue, if possible, please include:
- A clear description of the problem.
- The platform you are testing on (web, desktop, OS).
- A link/attachment to the SWF demonstrating the issue, if possible.
- Screenshots if the issue is a visible problem.
- Bonus points for including the correct output from the official Flash Player.
These types of focused issues are helpful:
- Tracking issues for specific Flash features (ActionScript 3.0, drawing API, etc.)
- Bug reports for specific content that works but isn't quite right (art not looking correct, etc.)
- Platform-specific issues
- Enhancement requests to improve user experience
The Ruffle project is still in the early stages, so many Flash features are unimplemented and not yet expected to work. Please avoid filing generic issues such as:
- A "this SWF doesn't work at all" report (what about it doesn't work?).
- Duplicate issues for each piece of content using an unimplemented feature.
- Asking for dates when a feature will be implemented.
PHP-Nuke Titanium is built using the latest stable version of PHP.
Pull requests are the primary way to contribute code to PHP-Nuke Titanium. Pull requests should be made against the latest master
branch. Your pull request should not contain merges; you should always rebase when bringing the latest changes into your branch from the master
branch. If there are merge conflicts, or if your commit history is messy, please rebase onto the latest master. git rebase -i
is a great way to clean up your pull request.
When you make a pull request, our CI will build your changes and run them through all tests and style checks. All of these tests should pass before your pull request can be accepted.
One of our regular contributors will review your changes and try their best to helpfully suggest any changes. If all goes well, your PR should be merged without much delay. We use both standard merge commits and fast-forward merges depending on the size of the changes. Thanks for your contribution!