5.2 KiB
Contributing
Read this when you want to:
- file an issue (bug or feature request)
- help translate the News file to your language
- start programming and change the way the News app works
- add cool new feeds to the feed explore section
- want to provide additional full text feed rules
Issues
This section is split into two section:
- Everything that has to do with bugs
- How to request features
Before Reporting Bugs
- We do not support Internet Explorer and Safari (Patches accepted though, except for IE < 10)
- We do not support the server-side encryption app (use client side encryption instead)
- Get the latest version of the News app
- Disable all browser add-ons to make sure that it's not a plugin's fault (adblockers!)
- Clear your PHP opcode cache if you use any by restarting your webserver. This affects any version of PHP >=5.5
- Check if they have already been reported
- Check if your problem is covered in the FAQ section
If you are not able to add a feed because its XML does not validate (see this issue for an example), check if:
- It is a valid RSS by running it through the W3C validator
- You are able to add the feed in other feed readers
When reporting bugs
- Enable debug mode in your config/config.php:
- Add the debug attribute to config array (if not already present) and set it to true:
<?php
$CONFIG = array(
// other options
// ...
'debug' => true,
);
- Reproduce the Problem
- Check data/nextcloud.log
- Check your browser's JavaScript console for errors if it's a client-side issue
Please provide the following details so that your problem can be fixed:
- data/nextcloud.log (important!)
- Nextcloud version
- News version
- Browser and version
- PHP version
- Distribution and version
When Requesting Features
Please always provide the usecase in addition solution, e.g.:
- "If I read feed that has comics, the newest first ordering does not work well because I have to read from the bottom up"
is much more helpful than just writing:
- "Please add reverse ordering".
Translation
For translations in other languages than English, we rely on the Transifex platform.
If you want to help with translating the app, please do not create a pull request. Instead, head over to https://www.transifex.com/projects/p/nextcloud/resource/news/ and join the team of your native language.
If approved, the translation will be automatically ported to the code within 24 hours.
Explore feeds section
You can help to improve our explore feeds section by providing more feeds
Fulltext configurations
Nextcloud News uses picoFeed web scrapers. Simply create a new configuration file if needed and open a pull request on their repository. The News app syncs regularly with the most recent changes.
Development
In general it's a good idea to first create an issue where you explain why, what and how you want to make a change before writing any code.
That way we can talk about the problem first and discuss the implementation (and of course help you with your code)
How to set up a development environment
To get started after cloning the repository, install the build dependencies and run:
make
in the app directory to fetch all dependencies and compile the JavaScript. The News app uses Composer for PHP dependencies, Gulp for building the JavaScript "binary" and Bower/npm as JavaScript package manager. For more information on JavaScript development check out the README.md in the js folder
For running all tests suites you can run:
make test
Packaging is done via:
make dist
The packages are inside the top level build/artifacts folder
Contact Us!
We usually hang out on irc.freenode.net in the #nextcloud-news and #nextcloud-dev chat room. Just ping BernhardPosselt or cosenal or write us a mail directly. Mail addresses are listed on our GitHub profiles.
Coding Style Guidelines
-
Use 4 spaces for indention. Why spaces? Because it looks the same on every machine and on the web where you can't normally control the tab width.
-
Place the open curly braces on the same line as the parameter block, e.g.:
if (condition) { // code } else { // code }
-
Place a space before and after the parameter block for if, else, for, foreach, function
-
Everything should be in pascalCase except classes which should be in CamelCase
-
For linting JavaScript, a jshint file is used that is run before compiling the JavaScript