rm3
A platform for publishing more than just textual articles on the web.

What is it?
rm3 is not just a blog engine, but it's still lighter-weight and friendlier than those enterprise-grade CMS systems. It can be used to drive a large site, but I don't want to lose sight of being something that a person can install on a micro cloud instance and use themselves. Conceptually, it is to Drupal as Ghost is to WordPress.
rm3 is able work as a blog, a wiki, a photo archive, or some combination of those... and more. It's got blog-styled views such that you can post a series of dated blog articles and view them as such. But every entity on the site has a history, like how a wiki works. Like some of those enterprise CMS systems, you aren't restricted to just creating a mere list of posts. You can use it to manage links, photos, graphics (both photos and SVG vector graphics), and audio.
Release Status
See CHANGELOG.md for recent changes.
This is currently in ALPHA state, defined as:
- I'm running it in production
- Key features are not missing
- Any data you put in here you should be prepared to reconstruct without the benefit of a migration tool (but I'm going to try very hard to avoid that)
- Security and stability bugs are to be expected.
- Some stable internal APIs will be present.
The next milestone is BETA, defined as:
- Key features are not missing
- Any data you put in here should be able to be migrated with an offline migration where you need to shut down the site momentarily
- Stability bugs are to be expected.
- Stable APIs will be present.
How to get started?
Automated Setup
Other setup methods
To generate API docs:
Tests
To test:
To lint:
To check coverage
If you want to do some development with auto-restart:
Benchmarks
Contributing
There are a wide variety of ways to contribute. Documentation, bug triage, detailed issues (including UI/UX, bug reports, etc), artwork, schemes, and so on are all just as important as code. Similarly, cleaning up the messy abstractions and copypasta, writing unit tests, and other non-feature tasks are probably more valuable to me.
Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
CONTRIBUTING.md contains more details on contributing.
License
GPL, see LICENSE
[0.4.0] - Moderate - 2017-02-21: Would Have Done It Earlier But For A Two Hour Power Outage edition
Note: Many of the non-breaking changes for this milestone were rolled out already in 0.3.x builds, so if you are just joining us after the 0.3.0 release, check the added functionality in the point releases instead of just what happened between 0.3.8 and 0.4.
I'm able to replace all of my installations of the original rm with rm3 0.4. It's still alpha but it should work for you. :)
BREAKING: There are database changes since 0.3. Before you install 0.4 you should delete the workflow:
drop table wf_jobs;
drop table wf_jobs_info;
drop table wf_runners;
drop table wf_locked_targets;
drop table wf_workflows;
And then you can add the tables:
CREATE TABLE wh_geotag (
"predPath" ltree,
"objGeotag" point,
"subjPath" ltree,
"objClass" text
);
CREATE TABLE wh_ticket (
PRIMARY KEY("ticketId"),
"ticketId" uuid,
path ltree,
"inetAddr" inet,
"identityId" uuid,
"userPath" ltree,
subject text,
recorded timestamp,
details json
);
CREATE TABLE wh_serviceaccount (
PRIMARY KEY(provider, "clientId"),
provider text,
"clientId" text,
"providerDetails" json
);
CREATE TABLE wh_workflowsub (
PRIMARY KEY("subscriptionId"),
"subscriptionId" uuid,
proto text,
pathQuery lquery,
"actorPath" ltree,
"workflowDetails" json
);
and create the workflow engine again: ./bin/rm3admin createworkflow
Alternatively, you can load from a saved dump.
Added
- Image protection, so that full-resolution original images aren't part of a public blob store
- Unobtrusive watermarking
- rm3mv command
- rm3rm command has the -r option to redirect to an external URL.
- Ontological tag can be in template.
- Added support for ontological tags, tag categories, link tags, and auto-suggest tags.
- Added tickets to DB (represents votes, flags, etc)
- Added storage support for geotags (but no UI yet)
- OAuth2 support
- DB table for workflow subscriptions (but no code yet)
Changed
- BasicQuery can select on a proto type.
- Filtering out tags with only one hit on them.
- Updated dependencies - React 0.14.x to React 15.x being the big one
- rm3dump doesn't need a
-p
to specify path anymore.
Removed
- RM3_DANGER_FORCE_AUTH flag removed.