Skip to content

Commit 96ac381

Browse files
committed
Release version 1.7.0
From now on, releases will be cut from develop, and merged directly into master. Each release will be a tag on the master branch (e.g. 1.7.0). A "release/1.7.0" branch will eventually be created only if/when a hotfix will be needed.
2 parents 275f1b1 + 4408a1e commit 96ac381

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+843
-370
lines changed

CHANGELOG.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
# 1.7.0
2+
* FIX: `getLineHTMLForExport()` no longer produces multiple copies of a line. **WARNING**: this could potentially break some plugins
3+
* FIX: authorship of bullet points no longer changes when a second author edits them
4+
* FIX: improved Firefox compatibility (non printable keys)
5+
* FIX: `getPadPlainText()` was not working
6+
* REQUIREMENTS: minimum required Node version is 6.9.0 LTS. The next release will require at least Node 8.9.0 LTS
7+
* SECURITY: updated MySQL, Elasticsearch and PostgreSQL drivers
8+
* SECURITY: started updating deprecated code and packages
9+
* DOCS: documented --credentials, --apikey, --sessionkey. Better detailed contributors guidelines. Added a section on securing the installation
10+
111
# 1.6.6
212
* FIX: line numbers are aligned with text again (broken in 1.6.4)
313
* FIX: text entered between connection loss and reconnection was not saved
@@ -490,7 +500,7 @@
490500
* Plugin-specific settings in settings.json (finally allowing for things like a google analytics plugin)
491501
* Serve admin dashboard at /admin (still very limited, though)
492502
* Modify your settings.json through the newly created UI at /admin/settings
493-
* Fix: Import <ol>'s as <ol>'s and not as <ul>'s!
503+
* Fix: Import `<ol>` as `<ol>` and not as `<ul>`!
494504
* Added solaris compatibility (bin/installDeps.sh was broken on solaris)
495505
* Fix a bug with IE9 and Password Protected Pads using HTTPS
496506

CONTRIBUTING.md

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,34 @@
11
# Contributor Guidelines
22
(Please talk to people on the mailing list before you change this page, see our section on [how to get in touch](https://github.com/ether/etherpad-lite#get-in-touch))
33

4+
## Pull requests
5+
6+
* the commit series in the PR should be _linear_ (it **should not contain merge commits**). This is necessary because we want to be able to [bisect](https://en.wikipedia.org/wiki/Bisection_(software_engineering)) bugs easily. Rewrite history/perform a rebase if necessary
7+
* PRs should be issued against the **develop** branch: we never pull directly into **master**
8+
* PRs **should not have conflicts** with develop. If there are, please resolve them rebasing and force-pushing
9+
* when preparing your PR, please make sure that you have included the relevant **changes to the documentation** (preferably with usage examples)
10+
* contain meaningful and detailed **commit messages** in the form:
11+
```
12+
submodule: description
13+
14+
longer description of the change you have made, eventually mentioning the
15+
number of the issue that is being fixed, in the form: Fixes #someIssueNumber
16+
```
17+
* if the PR is a **bug fix**:
18+
* the first commit in the series must be a test that shows the failure
19+
* subsequent commits will fix the bug and make the test pass
20+
* the final commit message should include the text `Fixes: #xxx` to link it to its bug report
21+
* think about stability: code has to be backwards compatible as much as possible. Always **assume your code will be run with an older version of the DB/config file**
22+
* if you want to remove a feature, **deprecate it instead**:
23+
* write an issue with your deprecation plan
24+
* output a `WARN` in the log informing that the feature is going to be removed
25+
* remove the feature in the next version
26+
* if you want to add a new feature, put it under a **feature flag**:
27+
* once the new feature has reached a minimal level of stability, do a PR for it, so it can be integrated early
28+
* expose a mechanism for enabling/disabling the feature
29+
* the new feature should be **disabled** by default. With the feature disabled, the code path should be exactly the same as before your contribution. This is a __necessary condition__ for early integration
30+
* think of the PR not as something that __you wrote__, but as something that __someone else is going to read__. The commit series in the PR should tell a novice developer the story of your thoughts when developing it
31+
432
## How to write a bug report
533

634
* Please be polite, we all are humans and problems can occur.
@@ -25,12 +53,6 @@ If you send logfiles, please set the loglevel switch DEBUG in your settings.json
2553

2654
The logfile location is defined in startup script or the log is directly shown in the commandline after you have started etherpad.
2755

28-
29-
## Important note for pull requests
30-
**Pull requests should be issued against the develop branch**. We never pull directly into master.
31-
32-
**Our goal is to iterate in small steps. Release often, release early. Evolution instead of a revolution**
33-
3456
## General goals of Etherpad
3557
To make sure everybody is going in the same direction:
3658
* easy to install for admins and easy to use for people
@@ -93,6 +115,8 @@ You can build the docs e.g. produce html, using `make docs`. At some point in th
93115
## Testing
94116
Front-end tests are found in the `tests/frontend/` folder in the repository. Run them by pointing your browser to `<yourdomainhere>/tests/frontend`.
95117

118+
Back-end tests can be run from the `src` directory, via `npm test`.
119+
96120
## Things you can help with
97121
Etherpad is much more than software. So if you aren't a developer then worry not, there is still a LOT you can do! A big part of what we do is community engagement. You can help in the following ways
98122
* Triage bugs (applying labels) and confirming their existance

README.md

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
### This project is looking for a new project lead. If you wish to help steer Etherpad forward please email [email protected]
2-
3-
[![Deps](https://david-dm.org/ether/etherpad-lite.svg?branch=develop)](https://david-dm.org/ether/etherpad-lite)
4-
[![NSP Status](https://nodesecurity.io/orgs/etherpad/projects/635f6185-35c6-4ed7-931a-0bc62758ece7/badge)](https://nodesecurity.io/orgs/etherpad/projects/635f6185-35c6-4ed7-931a-0bc62758ece7)
5-
61
# A really-real time collaborative word processor for the web
72
![Demo Etherpad Animated Jif](https://i.imgur.com/zYrGkg3.gif "Etherpad in action on PrimaryPad")
83

@@ -13,6 +8,9 @@ Etherpad is a really-real time collaborative editor scalable to thousands of sim
138

149
# Installation
1510

11+
## Requirements
12+
- `nodejs` >= **6.9.0** (preferred: `nodejs` >= **8.9**)
13+
1614
## Uber-Quick Ubuntu
1715
```
1816
curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
@@ -26,25 +24,26 @@ You'll need gzip, git, curl, libssl develop libraries, python and gcc.
2624
- *For Fedora/CentOS*: `yum install gzip git curl python openssl-devel && yum groupinstall "Development Tools"`
2725
- *For FreeBSD*: `portinstall node, npm, curl, git (optional)`
2826

29-
Additionally, you'll need [node.js](https://nodejs.org) installed, Ideally the latest stable version, we recommend installing/compiling nodejs from source (avoiding apt).
27+
Additionally, you'll need [node.js](https://nodejs.org) installed (minimum required Node version: **6.9.0**).
28+
Ideally, the latest stable version is preferred. Please note that the packages offered on some operating systems are outdated. In those cases, we recommend installing nodejs from official archives or compiling it from source (avoiding yum/apt).
3029

3130
**As any user (we recommend creating a separate user called etherpad):**
3231

33-
1. Move to a folder where you want to install Etherpad. Clone the git repository `git clone git://github.com/ether/etherpad-lite.git`
34-
2. Change into the new directory containing the cloned source code `cd etherpad-lite`
32+
1. Move to a folder where you want to install Etherpad. Clone the git repository: `git clone git://github.com/ether/etherpad-lite.git`
33+
2. Change into the new directory containing the cloned source code: `cd etherpad-lite`
3534

36-
Now, run `bin/run.sh` and open <http://127.0.0.1:9001> in your browser.
35+
Now, run `bin/run.sh` and open <http://127.0.0.1:9001> in your browser.
3736

38-
Update to the latest version with `git pull origin`. The next start with bin/run.sh will update the dependencies.
37+
Update to the latest version with `git pull origin`. The next start with `bin/run.sh` will update the dependencies.
3938

4039
[Next steps](#next-steps).
4140

4241
## Windows
4342

44-
### Prebuilt windows package
43+
### Prebuilt Windows package
4544
This package works out of the box on any windows machine, but it's not very useful for developing purposes...
4645

47-
1. [Download the latest windows package](http://etherpad.org/#download)
46+
1. [Download the latest Windows package](http://etherpad.org/#download)
4847
2. Extract the folder
4948

5049
Now, run `start.bat` and open <http://localhost:9001> in your browser. You like it? [Next steps](#next-steps).
@@ -63,17 +62,26 @@ Update to the latest version with `git pull origin`, then run `bin\installOnWind
6362

6463
If cloning to a subdirectory within another project, you may need to do the following:
6564

66-
1. Start the server manually (e.g. `node/node_modules/ep_etherpad-lite/node/server.js]`)
65+
1. Start the server manually (e.g. `node/node_modules/ep_etherpad-lite/node/server.js`)
6766
2. Edit the db `filename` in `settings.json` to the relative directory with the file (e.g. `application/lib/etherpad-lite/var/dirty.db`)
6867
3. Add auto-generated files to the main project `.gitignore`
6968

7069
# Next Steps
7170

7271
## Tweak the settings
73-
You can initially modify the settings in `settings.json`. (If you need to handle multiple settings files, you can pass the path to a settings file to `bin/run.sh` using the `-s|--settings` option. This allows you to run multiple Etherpad instances from the same installation.) Once you have access to your /admin section settings can be modified through the web browser.
72+
You can modify the settings in `settings.json`.
73+
If you need to handle multiple settings files, you can pass the path to a settings file to `bin/run.sh` using the `-s|--settings` option: this allows you to run multiple Etherpad instances from the same installation.
74+
Similarly, `--credentials` can be used to give a settings override file, `--apikey` to give a different APIKEY.txt file and `--sessionkey` to give a non-default SESSIONKEY.txt.
75+
Once you have access to your /admin section settings can be modified through the web browser.
7476

7577
You should use a dedicated database such as "mysql", if you are planning on using etherpad-in a production environment, since the "dirtyDB" database driver is only for testing and/or development purposes.
7678

79+
## Secure your installation
80+
If you have enabled authentication in `users` section in `settings.json`, it is a good security practice to **store hashes instead of plain text passwords** in that file. This is _especially_ advised if you are running a production installation.
81+
82+
Please install [ep_hash_auth plugin](https://www.npmjs.com/package/ep_hash_auth) and configure it.
83+
If you prefer, `ep_hash_auth` also gives you the option of storing the users in a custom directory in the file system, without having to edit `settings.json` and restart Etherpad each time.
84+
7785
## Plugins and themes
7886

7987
Etherpad is very customizable through plugins. Instructions for installing themes and plugins can be found in [the plugin wiki article](https://github.com/ether/etherpad-lite/wiki/Available-Plugins).

bin/backendTests.sh

Lines changed: 0 additions & 1 deletion
This file was deleted.

bin/createRelease.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
#!/bin/bash
22
#
3+
# WARNING: since Etherpad 1.7.0 (2018-08-17), this script is DEPRECATED, and
4+
# will be removed/modified in a future version.
5+
# It's left here just for documentation.
6+
# The branching policies for releases have been changed.
7+
#
38
# This script is used to publish a new release/version of etherpad on github
49
#
510
# Work that is done by this script:
@@ -16,6 +21,16 @@
1621
# ETHER_REPO:
1722
# - Create a new release on github
1823

24+
printf "WARNING: since Etherpad 1.7.0 this script is DEPRECATED, and will be removed/modified in a future version.\n\n"
25+
while true; do
26+
read -p "Do you want to continue? This is discouraged. [y/N]" yn
27+
case $yn in
28+
[Yy]* ) break;;
29+
[Nn]* ) exit;;
30+
* ) printf "Please answer yes or no.\n\n";;
31+
esac
32+
done
33+
1934
ETHER_REPO="https://github.com/ether/etherpad-lite.git"
2035
ETHER_WEB_REPO="https://github.com/ether/ether.github.com.git"
2136
TMP_DIR="/tmp/"

bin/installDeps.sh

Lines changed: 56 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,53 @@
11
#!/bin/sh
22

3+
# minimum required node version
4+
REQUIRED_NODE_MAJOR=6
5+
REQUIRED_NODE_MINOR=9
6+
7+
# minimum required npm version
8+
REQUIRED_NPM_MAJOR=3
9+
REQUIRED_NPM_MINOR=10
10+
11+
require_minimal_version() {
12+
PROGRAM_LABEL="$1"
13+
VERSION_STRING="$2"
14+
REQUIRED_MAJOR="$3"
15+
REQUIRED_MINOR="$4"
16+
17+
# Flag -s (--only-delimited on GNU cut) ensures no string is returned
18+
# when there is no match
19+
DETECTED_MAJOR=$(echo $VERSION_STRING | cut -s -d "." -f 1)
20+
DETECTED_MINOR=$(echo $VERSION_STRING | cut -s -d "." -f 2)
21+
22+
if [ -z "$DETECTED_MAJOR" ]; then
23+
printf 'Cannot extract %s major version from version string "%s"\n' "$PROGRAM_LABEL" "$VERSION_STRING" >&2
24+
exit 1
25+
fi
26+
27+
if [ -z "$DETECTED_MINOR" ]; then
28+
printf 'Cannot extract %s minor version from version string "%s"\n' "$PROGRAM_LABEL" "$VERSION_STRING" >&2
29+
exit 1
30+
fi
31+
32+
case "$DETECTED_MAJOR" in
33+
''|*[!0-9]*)
34+
printf '%s major version from "%s" is not a number. Detected: "%s"\n' "$PROGRAM_LABEL" "$VERSION_STRING" "$DETECTED_MAJOR" >&2
35+
exit 1
36+
;;
37+
esac
38+
39+
case "$DETECTED_MINOR" in
40+
''|*[!0-9]*)
41+
printf '%s minor version from "%s" is not a number. Detected: "%s"\n' "$PROGRAM_LABEL" "$VERSION_STRING" "$DETECTED_MINOR" >&2
42+
exit 1
43+
esac
44+
45+
if [ "$DETECTED_MAJOR" -lt "$REQUIRED_MAJOR" ] || ([ "$DETECTED_MAJOR" -eq "$REQUIRED_MAJOR" ] && [ "$DETECTED_MINOR" -lt "$REQUIRED_MINOR" ]); then
46+
printf 'Your %s version "%s" is too old. %s %d.%d.x or higher is required.\n' "$PROGRAM_LABEL" "$VERSION_STRING" "$PROGRAM_LABEL" "$REQUIRED_MAJOR" "$REQUIRED_MINOR" >&2
47+
exit 1
48+
fi
49+
}
50+
351
#Move to the folder where ep-lite is installed
452
cd `dirname $0`
553

@@ -36,22 +84,15 @@ hash npm > /dev/null 2>&1 || {
3684
}
3785

3886
#Check npm version
39-
NPM_VERSION=$(npm --version)
40-
NPM_MAIN_VERSION=$(echo $NPM_VERSION | cut -d "." -f 1)
41-
if [ $(echo $NPM_MAIN_VERSION) = "0" ]; then
42-
echo "You're running a wrong version of npm, you're using $NPM_VERSION, we need 1.x or higher" >&2
43-
exit 1
44-
fi
87+
NPM_VERSION_STRING=$(npm --version)
88+
89+
require_minimal_version "npm" "$NPM_VERSION_STRING" "$REQUIRED_NPM_MAJOR" "$REQUIRED_NPM_MINOR"
4590

4691
#Check node version
47-
NODE_VERSION=$(node --version)
48-
NODE_V_MINOR=$(echo $NODE_VERSION | cut -d "." -f 1-2)
49-
NODE_V_MAIN=$(echo $NODE_VERSION | cut -d "." -f 1)
50-
NODE_V_MAIN=${NODE_V_MAIN#"v"}
51-
if [ ! $NODE_V_MINOR = "v0.10" ] && [ ! $NODE_V_MINOR = "v0.11" ] && [ ! $NODE_V_MINOR = "v0.12" ] && [ ! $NODE_V_MAIN -ge 4 ]; then
52-
echo "You're running a wrong version of node. You're using $NODE_VERSION, we need node v0.10.x or higher" >&2
53-
exit 1
54-
fi
92+
NODE_VERSION_STRING=$(node --version)
93+
NODE_VERSION_STRING=${NODE_VERSION_STRING#"v"}
94+
95+
require_minimal_version "nodejs" "$NODE_VERSION_STRING" "$REQUIRED_NODE_MAJOR" "$REQUIRED_NODE_MINOR"
5596

5697
#Get the name of the settings file
5798
settings="settings.json"
@@ -73,7 +114,7 @@ echo "Ensure that all dependencies are up to date... If this is the first time
73114
cd node_modules
74115
[ -e ep_etherpad-lite ] || ln -s ../src ep_etherpad-lite
75116
cd ep_etherpad-lite
76-
npm install --loglevel warn
117+
npm install --no-save --loglevel warn
77118
) || {
78119
rm -rf node_modules
79120
exit 1

doc/api/http_api.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ The API is accessible via HTTP. HTTP Requests are in the format /api/$APIVERSION
7272
### Response Format
7373
Responses are valid JSON in the following format:
7474

75-
```js
75+
```json
7676
{
7777
"code": number,
7878
"message": string,

doc/plugins.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ There are server hooks, which will be executed on the server (e.g. `expressCreat
5050
### Parts
5151
As your plugins become more and more complex, you will find yourself in the need to manage dependencies between plugins. E.g. you want the hooks of a certain plugin to be executed before (or after) yours. You can also manage these dependencies in your plugin definition file `ep.json`:
5252

53-
```javascript
53+
```json
5454
{
5555
"parts": [
5656
{
@@ -99,7 +99,7 @@ Your plugin must also contain a [package definition file](https://docs.npmjs.com
9999
"author": "USERNAME (REAL NAME) <[email protected]>",
100100
"contributors": [],
101101
"dependencies": {"MODULE": "0.3.20"},
102-
"engines": { "node": ">= 0.6.0"}
102+
"engines": { "node": ">= 6.9.0"}
103103
}
104104
```
105105

doc/stats.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ We currently measure:
1515

1616
Under the hood, we are happy to rely on [measured](https://github.com/felixge/node-measured) for all our metrics needs.
1717

18-
To modify or simply access our stats in your plugin, simply `require('ep_etherpad-lite/stats')` which is a `measured.Collection`.
18+
To modify or simply access our stats in your plugin, simply `require('ep_etherpad-lite/stats')` which is a [`measured.Collection`](https://yaorg.github.io/node-measured/packages/measured-core/Collection.html).

0 commit comments

Comments
 (0)