I will be offline as of 26/3 for a bit.
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.
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?
How to: Suggest Apache 2 license to plugin as pull request
If plugin has i18n, automatically register plugins to Translate Wiki. If not, suggest supporting i18n.
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?
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
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.
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.
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.
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.
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!
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
Clone git repo
git clone repoURL ~/etherpad-storage
Edit Etherpad settings
Grab the new logic
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
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..
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!