I will be offline as of 26/3 for a bit.
Suggestions for improving Etherpad plugins
UPDATE: Me Gusta! All these things now exist. To improve your Etherpad plugin run
node bin/plugins/checkPlugins.js ep_whatever
In this blog post I will propose some methods to improve Etherpad plugins. This is a musing for myself a brain dump / wish list of things we might want to have in the future.
Test coverage
Does a plugin have test coverage? No test coverage discovered?
How to: Open Github issue including example source code.
Does the plugin have CI? If not create it..
How to: Create .travis file – Possible to automatically register repo as active in travis? Example travis test file
Automatically test plugins when a new version of Etherpad is released.
How to: Github actions?
License
No License?
How to: Suggest Apache 2 license to plugin as pull request
Translations
If plugin has i18n, automatically register plugins to Translate Wiki. If not, suggest supporting i18n.
Readme
Does the README file include a license?
Does the README contain an animated gif of user experience?
Does the plugin contain references to Etherpad as Etherpad lite?
Common faults
Is .ep_initialized included in the repo root? Send PR suggesting to remove it
Does .gitignore exist in root? If not? Send PR suggesting content
Does packages.json include link to repository?
Does package include npm-debug.log? Send PR removing it
JShint/lint?
Spacetime Characterization of Real-Time Collaborative Editing author feedback
This is feedback for the authors of the paper on “Spacetime Characterization of Real-Time Collaborative Editing“. It is an excellent paper full of useful insight for Etherpad.
I’m writing this as an author and maintainer of Etherpad, which for this study was primarily used for providing the data used in the analysis.
I have some suggestions for future research/development of the project with a goal to help improve Etherpad and other RTCE.
I improved the documentation and bugfix the RTCE Analysis and my efforts on this are available on the Etherpad Foundation RTCE Github Repository.
Simulate data to validate analysis.
Spacetime data could be simulated to ensure analysis is accurate.
Suggestion: Generate space-time edits with known values. etherpad-loadtest could do this with just a few hours work probably.
Programming complexity
A single programming language could be used to complete the task.
Suggestion: Rewrite analysis tasks in NodeJS using Etherpad’s built in methods. This would be a few days work.
Supplemental features
Analyzing RTCE along side other communication methods (IE Video conferencing within Etherpad) would be extremely useful. See ep_webrtc, ep_author_follow, ep_comments_page plugins for example..
Suggestion: Speak to WMF to discuss the potential of them rolling out Video chat for a trial period and do a side-by-side comparison to see if there is any difference in findings. This would be a few days prep work then a few months to gather data.
Multiple sources of data.
Using a single source(WMF) for data is not ideal.
Suggestion: Analyze video.etherpad.com, 26LLC (online tutoring platform), WMF and FramaPads content.
Database support
Only supporting a single database store(MySQL) is not ideal as some large instances use Postgres, Maria, Redis etc.
Suggestion: Use Etherpad internals to generate data allowing for analysis of a much larger set of Etherpad instances.
Conclusion
The goal of RTCE software is to reduce the amount of changesets and as such complimentary tools are included as they are often computationally cheaper than editing the pad; some examples are; Chat, Video Chat, Voice Chat and Comments(with suggestions) functionality.
Changesets or RTCE edits are relatively computationally expensive compared to a user doing peer to peer video chat, we want to minimize them so the measurement of success for Etherpad is reducing changesets to complete a document, which is contrary to this paper and may be somewhat surprising to the authors!
Protected: Preventing DoS attacks on Really-real time web applications
Automatically Storing Etherpad Pad contents in Git
This is a how to guide / hack approach for storing Etherpad contents as git commits.
Create git repo
Using your favorite tool / platform. In this instance we use Github to create a new repository called etherpad-storage
Clone git repo
git clone repoURL ~/etherpad-storage
Edit Etherpad settings
Open up settings.json
Replace dirty_db.js
with dirty_git_db.js
Replace var/dirty.db with
~/etherpad-storage/dirty.db
Grab the new logic
Grab dirty_git_db.js
and put it in your src/node_modules/ueberdb2 folder. Ideally this would be how you do it
curl https://gist.githubusercontent.com/JohnMcLear/3a57977ea4dad39b021b8ee8aac2a730/raw/8a025ec3d4fbeef6cc5520e89ea3eb52c10a7737/dirty_git_db.js -o src/node_modules/ueberdb2/dirty_git_db.js
Install simple-git
From within your Etherpad folder..
cd src/node_modules/ueberdb2 && npm install simple-git
Restart and test.
Restart Etherpad, when you type in a pad your changes should be committed to github and your console should be filled with log messages you will probably want to remove..
Conclusion
This is just a simple hack, it’s not designed for production but it might be useful for someone as reference. The goal ultimately is to create a plugin that provides this functionality. It should be easy enough to do!