diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 4b352922e..b5d7ede72 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,14 +1,16 @@ # Welcome to the contributing guide for PeerTube -Interesting in contributing? Awesome! +Interested in contributing? Awesome! -**Quick Links:** +**This guide will present you the following contribution topics:** * [Translate](#translate) * [Give your feedback](#give-your-feedback) * [Write documentation](#write-documentation) * [Develop](#develop) - + * [Improve the website](#improve-the-website) + * [Troubleshooting](#troubleshooting) + * [Tutorials](#tutorials) ## Translate @@ -37,6 +39,15 @@ Some hints: * Models sent/received by the controllers are defined in [/shared/models](/shared/models) directory +## Improve the website + +PeerTube's website is [joinpeertube.org](https://joinpeertube.org), where people can learn about the project and how it works – note that it is not a PeerTube instance, but rather the project's homepage. + +You can help us improve it too! + +It is not hosted on GitHub but on [Framasoft](https://framasoft.org/)'s own [GitLab](https://about.gitlab.com/) instance, [FramaGit](https://framagit.org): https://framagit.org/framasoft/peertube/joinpeertube + + ## Develop Don't hesitate to talk about features you want to develop by creating/commenting an issue @@ -122,7 +133,7 @@ and the web server is automatically restarted. $ npm run dev ``` -### Federation +### Testing the federation of PeerTube servers Create a PostgreSQL user **with the same name as your username** in order to avoid using the *postgres* user. Then, we can create the databases (if they don't already exist): @@ -176,3 +187,11 @@ $ npm run mocha -- --exit --require ts-node/register/type-check --bail server/te Instance configurations are in `config/test-{1,2,3,4,5,6}.yaml`. Note that only instance 2 has transcoding enabled. + +### Troubleshooting + +Please check out the issues and [list of common errors](https://docs.joinpeertube.org/lang/en/devdocs/troubleshooting.html). + +### Tutorials + +Please check out the related section in the [development documentation](https://docs.joinpeertube.org/lang/en/devdocs/index.html#tutorials). Contribute tutorials at [framagit.org/framasoft/peertube/documentation](https://framagit.org/framasoft/peertube/documentation). diff --git a/.gitignore b/.gitignore index 22478c444..a31da70a9 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ /test4/ /test5/ /test6/ +/server/tests/fixtures/video_high_bitrate_1080p.mp4 # Production /storage/ diff --git a/.travis.yml b/.travis.yml index 9fd54447c..d252ae625 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,7 +14,10 @@ addons: - g++-4.9 postgresql: "9.4" -cache: yarn +cache: + directories: + - $HOME/.cache/yarn + - $HOME/fixtures sudo: false @@ -39,17 +42,18 @@ matrix: - env: TEST_SUITE=api-1 - env: TEST_SUITE=api-2 - env: TEST_SUITE=api-3 + - env: TEST_SUITE=api-4 - env: TEST_SUITE=cli - env: TEST_SUITE=lint - env: TEST_SUITE=jest script: - - travis_retry npm run travis -- "$TEST_SUITE" + - NODE_PENDING_JOB_WAIT=1000 travis_retry npm run travis -- "$TEST_SUITE" after_failure: - - cat test1/logs/all-logs.log - - cat test2/logs/all-logs.log - - cat test3/logs/all-logs.log - - cat test4/logs/all-logs.log - - cat test5/logs/all-logs.log - - cat test6/logs/all-logs.log + - cat test1/logs/peertube.log + - cat test2/logs/peertube.log + - cat test3/logs/peertube.log + - cat test4/logs/peertube.log + - cat test5/logs/peertube.log + - cat test6/logs/peertube.log diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 160d6fc4f..f3254d2d6 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -2,10 +2,16 @@ ## Vocabulary - - **Fediverse:** several servers following each others. + - **Fediverse:** several servers following one another, several users + following each other. Designates federated communities in general. + - **Vidiverse:** same as Fediverse, but federating videos specifically. - **Instance:** a server which runs PeerTube in the fediverse. - **Origin instance:** the instance on which the video was uploaded and which is seeding (through the WebSeed protocol) the video. + - **Cache instance:** an instance that decided to make available a WebSeed + of its own for a video originating from another instance. It sends a `ptCache` + activity to notify the origin instance, which will then update its list of + WebSeeds for the video. - **Following:** the action of a PeerTube instance which will follow another instance (subscribe to its videos). @@ -22,8 +28,8 @@ * All the requests are retried several times if they fail. ### Instance - * An instance has a websocket tracker which is responsible for all the video - uploaded in it. + * An instance has a websocket tracker which is responsible for all videos + uploaded by its users. * An instance has an administrator that can follow other instances. * An instance can be configured to follow back automatically. * An instance can blacklist other instances (only used in "follow back" diff --git a/CHANGELOG.md b/CHANGELOG.md index ea6007b4c..13bec7535 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,317 @@ # Changelog +## v1.2.0 + +### BREAKING CHANGES + + * **Docker:** `PEERTUBE_TRUST_PROXY` env variable is now an array ([LecygneNoir](https://github.com/LecygneNoir)) + * **Docker:** Check you have all the storage fields in your `/config/production.yaml` file: https://github.com/Chocobozzz/PeerTube/blob/develop/support/docker/production/config/production.yaml#L34 + * **nginx:** Add redundancy endpoint in static file. **You should add it in your nginx configuration: https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/production.md#nginx** + * **nginx:** Add socket io endpoint. **You should add it in your nginx configuration: https://github.com/Chocobozzz/PeerTube/blob/develop/support/doc/production.md#nginx** + * Moderators can manage users now (add/delete/update/block) + * Add `tmp` and `redundancy` directories in configuration file. **You should configure them in your production.yaml** + +### Maintenance + + * Check free storage before upgrading in upgrade script ([@Nutomic](https://github.com/nutomic)) + * Explain that PeerTube must be stopped in prune storage script + * Add some security directives in the systemd unit configuration file ([@rigelk](https://github.com/rigelk) & [@mkoppmann](https://github.com/mkoppmann)) + * Update FreeBSD startup script ([@gegeweb](https://github.com/gegeweb)) + +### Docker + + * Patch docker entrypoint to speed up the chown at startup ([LecygneNoir](https://github.com/LecygneNoir)) + +### Features + + * Add Russian, Polish and Italian languages + * Add user notifications: + * Notification types: + * Comment on my video + * New video from my subscriptions + * New video abuses (for moderators) + * Blacklist/Unblacklist on my video + * Video import finished (error or success) + * Pending video published (after transcoding or a scheduled update) + * My account or one of my channel has a new follower + * Someone (except muted accounts) mentioned me in comments + * A user registered on the instance (for moderators) + * Notification actions: + * Add a web notification + * Send an english email + * Add contact form in about page (**enabled by default**) + * Add ability to unfederate a local video in blacklist modal (**checkbox checked by default**) + * Support additional video extensions if transcoding is enabled (**enabled by default**) + * Redirect to the last url on login + * Add ability to automatically set the video caption in URL. Example: https://peertube2.cpy.re/videos/watch/9c9de5e8-0a1e-484a-b099-e80766180a6d?subtitle=ru + * Automatically enable the last selected caption when watching a video + * Add ability to disable, clear and list user videos history + * Add a button to help to translate peertube + * Add text in the report modal to explain to whom the report will be sent + * Open my account menu entries on hover + * Explain what features are enabled on the instance in the about page + * Add an error message in the forgot password modal if the instance email system is not configured + * Add sitemap + * Add well known url to change password ([@rigelk](https://github.com/rigelk)) + * Remove 8GB video upload limit on client side. There may still be such limit depending on the reverse proxy configuration ([@scanlime](https://github.com/scanlime)) + * Add CSP ([@rigelk](https://github.com/rigelk) & [@Nutomic](https://github.com/nutomic)) + * Update title and description HTML tags when rendering video HTML page + * Add webfinger support for remote follows ([@acid-chicken](https://github.com/acid-chicken)) + * Add tooltip to explain how the trending algorithm works ([@auberanger](https://github.com/auberanger)) + * Warn users when they want to delete a channel because they will not be able to create another channel with the same name + * Warn users when they leave the video upload/update (on page refresh/tab close) + * Set max user name, user display name, channel name and channel display name lengths to 50 characters ([@McFlat](https://github.com/mcflat)) + * Increase video abuse length to 3000 characters + * Add totalLocalVideoFilesSize in the stats endpoint + +## Bug fixes + + * Fix the addition of captions to a video + * Fix federation of some videos + * Fix NSFW blur on search + * Add error message when trying to upload .ass subtitles + * Fix default homepage in the progressive web application + * Don't crash on queue error + * Fix EXDEV errors if you have multiple mount points + * Fix broken audio in transcoding with some videos + * Fix crash on getVideoFileStream issue + * Fix followers search + * Remove trailing `/` in CLI import script ([@HesioZ](https://github.com/HesioZ/)) + * Use origin video url in canonical tag + * Fix captions in HTTP fallback + * Automatically refresh remote actors to fix deleted remote actors that are still displayed on some instances + * Add missing translations in video embed page + * Fix some styling issues in dark mode + * Fix transcoding issues with some videos + * Fix Mac OS mkv/avi upload + * Fix menu overflow on mobile + * Fix ownership button icons ([@joshmorel](https://github.com/joshmorel)) + + +## v1.1.0 + +***Since v1.0.1*** + +### BREAKING CHANGES + + * **Docker:** `PEERTUBE_TRUST_PROXY` env variable is now an array ([LecygneNoir](https://github.com/LecygneNoir)) + +### Maintenance + + * Improve REST API documentation: https://docs.joinpeertube.org/api.html ([@rigelk](https://github.com/rigelk)) + * Add basic ActivityPub documentation: https://docs.joinpeertube.org/lang/en/devdocs/federation.html ([@rigelk](https://github.com/rigelk)) + * Add CLI option to run PeerTube without client ([@rigelk](https://github.com/rigelk)) + * Add manpage to peertube CLI ([@rigelk](https://github.com/rigelk)) + * Make backups of files in optimize-old-videos script ([@Nutomic](https://github.com/nutomic)) + * Allow peertube-import-videos.ts CLI script to run concurrently ([@McFlat](https://github.com/mcflat)) + +### Scripts + + * Use DB information from config/production.yaml in upgrade script ([@ldidry](https://github.com/ldidry)) + * Add REPL script ([@McFlat](https://github.com/mcflat)) + +### Docker + + * Add search and import settings env settings env variables ([@kaiyou](https://github.com/kaiyou)) + * Add docker dev image ([@am97](https://github.com/am97)) + * Improve docker compose template ([@Nutomic](https://github.com/nutomic)) + * Add postfix image + * Redirect HTTP -> HTTPS + * Disable Træfik web UI + +### Features + + * Automatically resume videos if the user is logged in + * Hide automatically the menu when the window is resized ([@BO41](https://github.com/BO41)) + * Remove confirm modal for JavaScript/CSS injection ([@scanlime](https://github.com/scanlime)) + * Set bitrate limits for transcoding ([@Nutomic](https://github.com/nutomic)) + * Add moderation tools in the account page + * Add bulk actions in users table (Delete/Ban for now) + * Add search filter in admin users table + * Add search filter in admin following + * Add search filter in admin followers + * Add ability to list all local videos + * Add ability for users to mute an account or an instance + * Add ability for administrators to mute an account or an instance + * Rename "News" category to "News & Politics" ([@daker](https://github.com/daker)) + * Add explicit error message when changing video ownership ([@lucas-dclrcq](https://github.com/lucas-dclrcq)) + * Improve description of the HTTP video import feature ([@rigelk](https://github.com/rigelk)) + * Set shorter keyframe interval for transcoding (2 seconds) ([@Nutomic](https://github.com/nutomic)) + * Add ability to disable webtorrent (as a user) ([@rigelk](https://github.com/rigelk)) + * Make abuse-delete clearer ([@barbeque](https://github.com/barbeque)) + * Adding minimum signup age conforming to ceiling GPDR age ([@rigelk](https://github.com/rigelk)) + * Feature/description support fields length 1000 ([@McFlat](https://github.com/mcflat)) + * Add background effect to activated menu entry + * Improve video upload error handling + * Improve message visibility on signup + * Auto login user on signup if email verification is disabled + * Speed up PeerTube startup (in particular the first one) + * Delete invalid or deleted remote videos + * Add ability to admin to set email as verified ([@joshmorel](https://github.com/joshmorel)) + * Add separators in user moderation dropdown + +### Bug fixes + + * AP mimeType -> mediaType + * PeerTube is not in beta anymore + * PeerTube is not in alpha anymore :p + * Fix optimize old videos script + * Check follow constraints when getting a video + * Fix application-config initialization in CLI tools ([Yetangitu](https://github.com/Yetangitu)) + * Fix video pixel format compatibility (using yuv420p) ([@rigelk](https://github.com/rigelk)) + * Fix video `state` AP context ([tcitworld](https://github.com/tcitworld)) + * Fix Linked Signature compatibility + * Fix AP collections pagination + * Fix too big thumbnails (when using URL import) + * Do not host remote AP objects: use redirection instead + * Fix video miniature with a long name + * Fix video views inconsistencies inside the federation + * Fix video embed in Wordpress Gutenberg + * Fix video channel videos url when scrolling + * Fix player progress bar/seeking when changing resolution + * Fix search tab title with no search + * Fix YouTube video import with some videos + +***Since v1.1.0-rc.1*** + +### Bug fixes + + * Fix AP infinite redirection + * Fix trending page + + +## v1.1.0-rc.1 (since v1.1.0-alpha.2) + +### Maintenance + + * Improve REST API documentation: https://docs.joinpeertube.org/api.html ([@rigelk](https://github.com/rigelk)) + * Add basic ActivityPub documentation: https://docs.joinpeertube.org/lang/en/devdocs/federation.html ([@rigelk](https://github.com/rigelk)) + * Add CLI option to run PeerTube without client ([@rigelk](https://github.com/rigelk)) + * Add manpage to peertube CLI ([@rigelk](https://github.com/rigelk)) + * Make backups of files in optimize-old-videos script ([@Nutomic](https://github.com/nutomic)) + * Allow peertube-import-videos.ts CLI script to run concurrently ([@McFlat](https://github.com/mcflat)) + +### Docker + + * Improve docker compose template ([@Nutomic](https://github.com/nutomic)) + * Add postfix image + * Redirect HTTP -> HTTPS + * Disable Træfik web UI + * Add ability to set an array in `PEERTUBE_TRUST_PROXY` ([LecygneNoir](https://github.com/LecygneNoir)) + +### Features + + * Add background effect to activated menu entry + * Improve video upload error handling + * Improve message visibility on signup + * Auto login user on signup if email verification is disabled + * Speed up PeerTube startup (in particular the first one) + * Delete invalid or deleted remote videos + * Add ability to admin to set email as verified ([@joshmorel](https://github.com/joshmorel)) + * Add separators in user moderation dropdown + +### Bug fixes + + * Check follow constraints when getting a video + * Fix application-config initialization in CLI tools ([Yetangitu](https://github.com/Yetangitu)) + * Fix video pixel format compatibility (using yuv420p) ([@rigelk](https://github.com/rigelk)) + * Fix video `state` AP context ([tcitworld](https://github.com/tcitworld)) + * Fix Linked Signature compatibility + * Fix AP collections pagination + * Fix too big thumbnails (when using URL import) + * Do not host remote AP objects: use redirection instead + * Fix video miniature with a long name + * Fix video views inconsistencies inside the federation + * Fix video embed in Wordpress Gutenberg + * Fix video channel videos url when scrolling + * Fix player progress bar/seeking when changing resolution + * Fix search tab title with no search + * Fix YouTube video import with some videos + + +## v1.1.0-alpha.2 (since v1.1.0-alpha.1) + +### Security/Maintenance/Federation + + * Add HTTP Signature in addition to Linked Signature: + * It's faster + * Will allow us to use RSA Signature 2018 in the future without too much incompatibilities in the peertube federation + +### Features + + * Set shorter keyframe interval for transcoding (2 seconds) ([@Nutomic](https://github.com/nutomic)) + * Add ability to disable webtorrent (as a user) ([@rigelk](https://github.com/rigelk)) + * Make abuse-delete clearer ([@barbeque](https://github.com/barbeque)) + * Adding minimum signup age conforming to ceiling GPDR age ([@rigelk](https://github.com/rigelk)) + * Feature/description support fields length 1000 ([@McFlat](https://github.com/mcflat)) + +### Bug fixes + + * Scale bitrate linearly with FPS ([@Nutomic](https://github.com/nutomic)) + * AP mimeType -> mediaType + * PeerTube is not in beta anymore + * PeerTube is not in alpha anymore :p + * Fix optimize old videos script + + +## v1.0.1 + +### Security/Maintenance/Federation + + * Add HTTP Signature in addition to Linked Signature: + * It's faster + * Will allow us to use RSA Signature 2018 in the future without too much incompatibilities in the peertube federation + + +## v1.1.0-alpha.1 + +We released this alpha version because some admins/users need some moderation tools we implemented in recent weeks. +This release could contain bugs. Don't expect a stable v1.1.0 until December :) + +### Scripts + + * Use DB information from config/production.yaml in upgrade script ([@ldidry](https://github.com/ldidry)) + * Add REPL script ([@McFlat](https://github.com/mcflat)) + +### Docker + + * Add search and import settings env settings env variables ([@kaiyou](https://github.com/kaiyou)) + * Add docker dev image ([@am97](https://github.com/am97)) + +### Features + + * Automatically resume videos if the user is logged in + * Hide automatically the menu when the window is resized ([@BO41](https://github.com/BO41)) + * Remove confirm modal for JavaScript/CSS injection ([@scanlime](https://github.com/scanlime)) + * Set bitrate limits for transcoding ([@Nutomic](https://github.com/nutomic)) + * Add moderation tools in the account page + * Add bulk actions in users table (Delete/Ban for now) + * Add search filter in admin users table + * Add search filter in admin following + * Add search filter in admin followers + * Add ability to list all local videos + * Add ability for users to mute an account or an instance + * Add ability for administrators to mute an account or an instance + * Rename "News" category to "News & Politics" ([@daker](https://github.com/daker)) + * Add explicit error message when changing video ownership ([@lucas-dclrcq](https://github.com/lucas-dclrcq)) + * Improve description of the HTTP video import feature ([@rigelk](https://github.com/rigelk)) + + +## v1.0.0 + +### SECURITY + + * Add more headers to HTTP signature to avoid actor impersonation by replaying modified signed HTTP requests (thanks Thibaut Girka) + +### Bug fixes + + * Check video exists before extending expiration + * Correctly delete redundancy files + * Fix account URI in remote comment modal ([@rigelk](https://github.com/rigelk)) + * Fix avatar update + * Avoid old issue regarding duplicated hosts in database + + ## v1.0.0-rc.2 ### Bug fixes @@ -87,7 +399,7 @@ ### Features - * Video redundancy system (experimental, see [the doc](/support/doc/redundancy.md)) + * Video redundancy system (experimental, see [the doc](https://docs.joinpeertube.org/lang/en/devdocs/architecture.html#redundancy-between-instances)) * Add peertube script (see [the doc](/support/doc/tools.md#cli-wrapper)) ([@rigelk](https://github.com/rigelk)) * Improve download modal ([@rigelk](https://github.com/rigelk)) * Add redirect after login ([@BO41](https://github.com/BO41)) diff --git a/CREDITS.md b/CREDITS.md index e0e647dc9..509f9800d 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -3,65 +3,82 @@ * [Chocobozzz](https://github.com/Chocobozzz) * [rigelk](https://github.com/rigelk) * [gegeweb](https://github.com/gegeweb) + * [Nutomic](https://github.com/Nutomic) * [Jorropo](https://github.com/Jorropo) + * [BO41](https://github.com/BO41) + * [joshmorel](https://github.com/joshmorel) + * [buoyantair](https://github.com/buoyantair) * [bnjbvr](https://github.com/bnjbvr) * [DavidLibeau](https://github.com/DavidLibeau) * [jankeromnes](https://github.com/jankeromnes) + * [JohnXLivingston](https://github.com/JohnXLivingston) + * [kaiyou](https://github.com/kaiyou) + * [McFlat](https://github.com/McFlat) * [DimitriGilbert](https://github.com/DimitriGilbert) * [floSoX](https://github.com/floSoX) * [Green-Star](https://github.com/Green-Star) - * [joshmorel](https://github.com/joshmorel) + * [thomaskuntzz](https://github.com/thomaskuntzz) * [rezonant](https://github.com/rezonant) - * [kaiyou](https://github.com/kaiyou) - * [Nutomic](https://github.com/Nutomic) - * [JohnXLivingston](https://github.com/JohnXLivingston) - * [okhin](https://github.com/okhin) - * [fflorent](https://github.com/fflorent) * [ldidry](https://github.com/ldidry) + * [okhin](https://github.com/okhin) + * [daftaupe](https://github.com/daftaupe) + * [LecygneNoir](https://github.com/LecygneNoir) + * [fflorent](https://github.com/fflorent) * [dedesite](https://github.com/dedesite) * [Nautigsam](https://github.com/Nautigsam) - * [BO41](https://github.com/BO41) - * [daftaupe](https://github.com/daftaupe) + * [scanlime](https://github.com/scanlime) + * [tcitworld](https://github.com/tcitworld) + * [am97](https://github.com/am97) * [dadall](https://github.com/dadall) * [jonathanraes](https://github.com/jonathanraes) - * [LecygneNoir](https://github.com/LecygneNoir) + * [anoadragon453](https://github.com/anoadragon453) * [rhaamo](https://github.com/rhaamo) * [mrflos](https://github.com/mrflos) * [jocelynj](https://github.com/jocelynj) + * [lucas-dclrcq](https://github.com/lucas-dclrcq) * [lucaspontoexe](https://github.com/lucaspontoexe) * [flyingrub](https://github.com/flyingrub) - * [tcitworld](https://github.com/tcitworld) + * [SerCom-KC](https://github.com/SerCom-KC) * [valvin1](https://github.com/valvin1) - * [am97](https://github.com/am97) * [taziden](https://github.com/taziden) * [sticmac](https://github.com/sticmac) + * [barbeque](https://github.com/barbeque) * [luzpaz](https://github.com/luzpaz) + * [acid-chicken](https://github.com/acid-chicken) * [louistio](https://github.com/louistio) * [qsypoq](https://github.com/qsypoq) + * [daker](https://github.com/daker) + * [xyproto](https://github.com/xyproto) * [Anton-Latukha](https://github.com/Anton-Latukha) * [noplanman](https://github.com/noplanman) + * [auberanger](https://github.com/auberanger) * [austinheap](https://github.com/austinheap) * [benabbottnz](https://github.com/benabbottnz) * [ewft](https://github.com/ewft) * [bradsk88](https://github.com/bradsk88) - * [WildYorkies](https://github.com/WildYorkies) * [Ealhad](https://github.com/Ealhad) + * [clementbrizard](https://github.com/clementbrizard) * [DeeJayBro](https://github.com/DeeJayBro) * [Edznux](https://github.com/Edznux) * [ebrehault](https://github.com/ebrehault) * [DatBewar](https://github.com/DatBewar) * [ReK2Fernandez](https://github.com/ReK2Fernandez) + * [Yetangitu](https://github.com/Yetangitu) * [grizio](https://github.com/grizio) * [Glandos](https://github.com/Glandos) * [lanodan](https://github.com/lanodan) + * [HesioZ](https://github.com/HesioZ) + * [jagannathBhat](https://github.com/jagannathBhat) * [jlebras](https://github.com/jlebras) * [alcalyn](https://github.com/alcalyn) * [mkody](https://github.com/mkody) - * [lucas-dclrcq](https://github.com/lucas-dclrcq) + * [pichouk](https://github.com/pichouk) * [zapashcanon](https://github.com/zapashcanon) * [mart-e](https://github.com/mart-e) - * [scanlime](https://github.com/scanlime) + * [0mp](https://github.com/0mp) + * [mkoppmann](https://github.com/mkoppmann) * [1000i100](https://github.com/1000i100) + * [roipoussiere](https://github.com/roipoussiere) * [zeograd](https://github.com/zeograd) * [PhieF](https://github.com/PhieF) * [Quenty31](https://github.com/Quenty31) @@ -77,6 +94,7 @@ * [imbsky](https://github.com/imbsky) * [ctlaltdefeat](https://github.com/ctlaltdefeat) * [jomo](https://github.com/jomo) + * [lsde](https://github.com/lsde) * [memoryboxes](https://github.com/memoryboxes) * [norrist](https://github.com/norrist) * [osauzet](https://github.com/osauzet) @@ -88,11 +106,13 @@ # Translations + * [abdhessuk](https://trad.framasoft.org/zanata/profile/view/abdhessuk) * [abidin24](https://trad.framasoft.org/zanata/profile/view/abidin24) * [aditoo](https://trad.framasoft.org/zanata/profile/view/aditoo) * [alice](https://trad.framasoft.org/zanata/profile/view/alice) * [anastasia](https://trad.framasoft.org/zanata/profile/view/anastasia) * [autom](https://trad.framasoft.org/zanata/profile/view/autom) + * [balaji](https://trad.framasoft.org/zanata/profile/view/balaji) * [bristow](https://trad.framasoft.org/zanata/profile/view/bristow) * [butterflyoffire](https://trad.framasoft.org/zanata/profile/view/butterflyoffire) * [chocobozzz](https://trad.framasoft.org/zanata/profile/view/chocobozzz) @@ -103,22 +123,30 @@ * [ehsaan](https://trad.framasoft.org/zanata/profile/view/ehsaan) * [esoforte](https://trad.framasoft.org/zanata/profile/view/esoforte) * [fkohrt](https://trad.framasoft.org/zanata/profile/view/fkohrt) + * [giqtaqisi](https://trad.framasoft.org/zanata/profile/view/giqtaqisi) * [goofy](https://trad.framasoft.org/zanata/profile/view/goofy) * [gorkaazk](https://trad.framasoft.org/zanata/profile/view/gorkaazk) * [gwendald](https://trad.framasoft.org/zanata/profile/view/gwendald) * [h3zjp](https://trad.framasoft.org/zanata/profile/view/h3zjp) + * [jfblanc](https://trad.framasoft.org/zanata/profile/view/jfblanc) * [jhertel](https://trad.framasoft.org/zanata/profile/view/jhertel) + * [jmf](https://trad.framasoft.org/zanata/profile/view/jmf) * [jorropo](https://trad.framasoft.org/zanata/profile/view/jorropo) + * [kairozen](https://trad.framasoft.org/zanata/profile/view/kairozen) * [kedemferre](https://trad.framasoft.org/zanata/profile/view/kedemferre) * [kousha](https://trad.framasoft.org/zanata/profile/view/kousha) * [krkk](https://trad.framasoft.org/zanata/profile/view/krkk) + * [landrok](https://trad.framasoft.org/zanata/profile/view/landrok) + * [leeroyepold48](https://trad.framasoft.org/zanata/profile/view/leeroyepold48) * [m4sk1n](https://trad.framasoft.org/zanata/profile/view/m4sk1n) * [matograine](https://trad.framasoft.org/zanata/profile/view/matograine) + * [medow](https://trad.framasoft.org/zanata/profile/view/medow) * [mhu](https://trad.framasoft.org/zanata/profile/view/mhu) * [midgard](https://trad.framasoft.org/zanata/profile/view/midgard) * [nbrucy](https://trad.framasoft.org/zanata/profile/view/nbrucy) * [nitai](https://trad.framasoft.org/zanata/profile/view/nitai) * [noncommutativegeo](https://trad.framasoft.org/zanata/profile/view/noncommutativegeo) + * [nopsidy](https://trad.framasoft.org/zanata/profile/view/nopsidy) * [nvivant](https://trad.framasoft.org/zanata/profile/view/nvivant) * [osoitz](https://trad.framasoft.org/zanata/profile/view/osoitz) * [outloudvi](https://trad.framasoft.org/zanata/profile/view/outloudvi) @@ -129,6 +157,7 @@ * [s8321414](https://trad.framasoft.org/zanata/profile/view/s8321414) * [sato_ss](https://trad.framasoft.org/zanata/profile/view/sato_ss) * [sercom_kc](https://trad.framasoft.org/zanata/profile/view/sercom_kc) + * [severo](https://trad.framasoft.org/zanata/profile/view/severo) * [silkevicious](https://trad.framasoft.org/zanata/profile/view/silkevicious) * [sosha](https://trad.framasoft.org/zanata/profile/view/sosha) * [spla](https://trad.framasoft.org/zanata/profile/view/spla) @@ -139,11 +168,17 @@ * [thibaultmartin](https://trad.framasoft.org/zanata/profile/view/thibaultmartin) * [tirifto](https://trad.framasoft.org/zanata/profile/view/tirifto) * [tuxayo](https://trad.framasoft.org/zanata/profile/view/tuxayo) + * [unextro](https://trad.framasoft.org/zanata/profile/view/unextro) * [unzarida](https://trad.framasoft.org/zanata/profile/view/unzarida) + * [vincent](https://trad.framasoft.org/zanata/profile/view/vincent) * [wanhua](https://trad.framasoft.org/zanata/profile/view/wanhua) * [xinayder](https://trad.framasoft.org/zanata/profile/view/xinayder) * [xosem](https://trad.framasoft.org/zanata/profile/view/xosem) * [zveryok](https://trad.framasoft.org/zanata/profile/view/zveryok) + * [aditoo](https://trad.framasoft.org/zanata/profile/view/aditoo) + * [autom](https://trad.framasoft.org/zanata/profile/view/autom) + * [curupira](https://trad.framasoft.org/zanata/profile/view/curupira) + * [leeroyepold48](https://trad.framasoft.org/zanata/profile/view/leeroyepold48) # Design diff --git a/FAQ.md b/FAQ.md index dba6bb1d0..e335868f8 100644 --- a/FAQ.md +++ b/FAQ.md @@ -5,6 +5,7 @@ +- [Why did you create PeerTube?](#why-did-you-create-peertube) - [I don't like the name "PeerTube"](#i-dont-like-the-name-peertube) - [If nobody watches a video, is it seeded?](#if-nobody-watches-a-video-is-it-seeded) - [What is WebSeed?](#what-is-webseed) @@ -12,15 +13,40 @@ - [Will an index of all the videos of servers you follow be too large for small servers?](#will-an-index-of-all-the-videos-of-servers-you-follow-be-too-large-for-small-servers) - [Which container formats can I use for the videos I want to upload?](#which-container-formats-can-i-use-for-the-videos-i-want-to-upload) - [I want to change my domain name, how can I do that?](#i-want-to-change-my-domain-name-how-can-i-do-that) +- [Why do we have to put our Twitter username in PeerTube configuration?](#why-do-we-have-to-put-our-twitter-username-in-peertube-configuration) +- [How video views are calculated?](#how-video-views-are-calculated) - [Should I have a big server to run PeerTube?](#should-i-have-a-big-server-to-run-peertube) - [Can I seed videos with my classic BitTorrent client (Transmission, rTorrent...)?](#can-i-seed-videos-with-my-classic-bittorrent-client-transmission-rtorrent) - [Why host on GitHub and Framagit?](#why-host-on-github-and-framagit) - [Are you going to use the Steem blockchain?](#are-you-going-to-use-the-steem-blockchain) - [Are you going to support advertisements?](#are-you-going-to-support-advertisements) - [What is "creation dynamic" and why not modify it?](#what-is-creation-dynamic-and-why-not-modify-it) +- [I have found a security vulnerability in PeerTube. Where and how should I report it?](#i-have-found-a-security-vulnerability-in-peertube-where-and-how-should-i-report-it) +## Why did you create PeerTube? + +We can't build a FOSS video streaming alternative to YouTube, Dailymotion, +Vimeo... with centralized software. One organization alone may not have +enough money to pay for bandwidth and video storage of its servers. + +Our stance is that only a decentralized network of servers can provide an +acceptable answer to technical issues (bandwidth, transcoding expenses, etc.) +and social answers (need for a particular moderation policy, preserving +content, etc.). + +While a paragraph is not enough to answer all these problems, PeerTube has +very early prouded itself for using a contributory design, both for creating +communities as federated nodes (as [Mastodon](https://joinmastodon.org/) for +example), and for seeding videos (instances can seed each other's videos). But it's not +enough because one video could become popular and overload the server. That is +why we need to use a P2P protocol to limit the server load. Thanks to +[WebTorrent](https://github.com/feross/webtorrent), we can use BitTorrent +inside most modern web browsers, and users become seeds as the video gets +more viewers. + + ## I don't like the name "PeerTube" PeerTube is just the name of the software. You can install it on your @@ -32,7 +58,7 @@ is named "Framatube". Yes, the origin server always seeds videos uploaded on it thanks to [Webseed](http://www.bittorrent.org/beps/bep_0019.html). -It can also be helped by other servers using [redundancy](/support/doc/redundancy.md). +It can also be helped by other servers using [redundancy](https://docs.joinpeertube.org/lang/en/devdocs/architecture.html#redundancy-between-instances). ## What is WebSeed? @@ -65,6 +91,18 @@ WEBM, MP4 or OGV videos. You can't. You'll need to reinstall an instance and reupload your videos. +## Why do we have to put our Twitter username in PeerTube configuration? + +You don't have to: we set a default value if you don't have a Twitter account. +We need this information because Twitter requires an account for links share/videos embed on their platform. + + +## How video views are calculated? + +Your web browser sends a view to the server after 30 seconds of playback. Then, the IP cannot send another view in the next hour. +Views are buffered, so don't panic if the view counter stays the same after you watched a video. + + ## Should I have a big server to run PeerTube? Not really. For instance, the demonstration server [https://peertube.cpy.re](https://peertube.cpy.re) has 2 vCore and 2GB of RAM and consumes on average: @@ -120,3 +158,7 @@ If you still want to use a functionality potentially altering that state of thin With that being said, know that we are not against these features *per se*. We are always open to discussion about potential PRs bringing in features, even of that kind. But we certainly won't dedicate our limited resources to develop them ourselves when there is so much to be done elsewhere. + +## I have found a security vulnerability in PeerTube. Where and how should I report it? + +We have a policy for contributions related to security. Please refer to [SECURITY.md](./SECURITY.md) diff --git a/README.md b/README.md index c3a39eb1d..a9b4eb54a 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,29 @@
Website | Join an instance - | Create one + | Create an instance | Chat with us + | Donate
-Federated (ActivityPub) video streaming platform using P2P (BitTorrent) -directly in the web browser with WebTorrent. +Be part of a network of multiple small federated, interoperable video hosting providers. Follow video creators and create videos. No vendor lock-in. All on a platform that is community-owned and ad-free.
-We have run a crowdfunding campaign to pave the road to version 1.0 of PeerTube. Thanks to everyone who pitched in and shared the news around. You can now check out the corresponding milestone and help its development! + Developed with ❤ by Framasoft +
+ +
+
+
+
@@ -59,11 +65,25 @@ directly in the web browser with
-
+
-Follow your favorite channels from PeerTube or really any other place. No need to have an account on the instance you watched a video to follow its author, you can do all of that from the Fediverse (Mastodon, Pleroma and plenty others), or just with good ol' RSS. +Follow your favorite channels from PeerTube or really any other place. No need to have an account on the instance you watched a video to follow its author, you can do all of that from the Fediverse (Mastodon, Pleroma, and plenty others), or just with good ol' RSS.
--- @@ -95,38 +115,29 @@ Be it as a user or an instance administrator, you can decide what your experienc-In addition to visitors using WebTorrent to share the load among them, instances can help each other by caching one another's videos. This way even small instances have a way to show content to a wider audience, as they will be shouldered by friend instances (more about that in our redundancy guide). +In addition to visitors using WebTorrent to share the load among them, instances can help each other by caching one another's videos. This way even small instances have a way to show content to a wider audience, as they will be shouldered by friend instances (more about that in our redundancy guide).
-Content creators can get help from their viewers in the simplest way possible: a support button showing a message linking to their donation accounts or really anything else. No more pay-per-view and advertisments that hurt visitors and incentivize alter creativity (more about that in our FAQ).
+Content creators can get help from their viewers in the simplest way possible: a support button showing a message linking to their donation accounts or really anything else. No more pay-per-view and advertisements that hurt visitors and incentivize alter creativity (more about that in our FAQ).
-
-
-
-
-
-
-
-
- PeerTube is only in beta, and want to deliver the best countermeasures possible by the time the stable is released. + PeerTube is in its early stages, and want to deliver the best countermeasures possible by the time the stable is released. In the meantime, we want to test different ideas related to this issue:
@@ -94,4 +94,4 @@- #custom-css .logged-in-email {{ '{' }} - color: red; - {{ '}' }} -- " - > - -