cccs-web / core

CCCS' customized django web application
4 stars 11 forks source link

adding history tracking and diff capabilities to webpage content #133

Open cccs-ip opened 9 years ago

cccs-ip commented 9 years ago

... one possibility in lieu of using wikis


CCCS was using 'project' wikis as a quick way of developing content among small teams. Our wikis were helpful especially for the ease with which page could be create, renamed/moved and sorted. It was also handy to have an in-built compare function. Wikis, however, are meant to be open to "everyone"--making access control issues a challenge. For 'internal' wikis, there is only the ability to collaborate behind a private wiki.

There are few good options for publishing collaboratively-developed documents on the web that can facilitate both "public" and "behind the scenes" interactions among collaborators. Wiki articles, for example, cannot be set to as 'visible only to team members who are logged in'--reserving 'public' and 'private' sections of the site.

Our current web framework has a lot of advantages over the wiki, but it is not yet as helpful as a too for collaborative publication, as was the wiki. Changes to content, for example, are lost if one user saves a mistaken change. While good database backup protocol can help to avoid data loss and compromise, it would be better if the database maintained a record of changes (like wikis do) allowing Git diff functions.

pwhipp commented 9 years ago

This would be interesting. As it is a potentially large undertaking I'd need to commit a couple of hours into investigating it (including a search for existing stuff) before I can tell you how much work is involved.

I'd guess that implementing a feature like this would be not less than a day of work if we're prepared to be quick and dirty but more likely to be perhaps two or three days if we are to retain compatibility with mezzanine updates.

cccs-ip commented 9 years ago

Thanks Paul. I am also still investigating what is out there, which is why I put this up. Actually, you were the one who suggested this approach in the first place:

We have a number of options - a wiki, enhancing pages such that we track changes to them...

... It would be cool if we could track edits and change to normal webpage content and show differences between revisions. I have no idea how this would work, but I guess if MediaWiki can do it with materials stored in a database, so can Django

cccs-ip commented 9 years ago

.. For the moment, however, this will remain un-assigned. We need to finish the CV database UI and data model first.

cccs-ip commented 9 years ago

Just a note about our discussion: Achieving this may be possible by writing git hooks that apply when users edit the site. That would be cool. I want people to be able to change the site as they wish, but I'd like to have some record of the changes. Being able to monitor the logs locally would suffice; we need not have a fancy web presentation format in the beginning.

pwhipp commented 9 years ago

I'm trying django_reversion but with little success so far. I've raised the topic on the mezzanine user group in the hope of finding an easy solution.

cccs-ip commented 9 years ago

Thanks, Paul. I hope that I am not asking for something that is fundamentally different than what we're currently using.

pwhipp commented 9 years ago

No responses on the mezzanine group so I've reraised the topic on the reversion group.

Reversion looks like exactly the right tool for the job and I'm hoping I've just missed something needed to get it to play nice with Mezzanine.

pwhipp commented 9 years ago

Some early attempts (links from Dave Hall's response and search so I don't forget about them) https://groups.google.com/forum/#!topic/mezzanine-users/cbGtXw7quwk/discussion http://grokbase.com/t/gg/mezzanine-users/12b93f09gv/status-of-django-reversion-integration

cccs-ip commented 9 years ago

Thanks for continuing to explore this.

pwhipp commented 9 years ago

The continued discussion indicates that this could be a lot of work for a full integration (probably a day or two at least, maybe as much as a week). I would aim to make the integration a separate application but there is a risk of needing to modify mezzanine (in a manner similar to the model translation stuff) which creates long term maintenance issues.

cccs-ip commented 9 years ago

I am surprised that this sort of feature doesn't already exist. Django wiki, Mediwiki, and other web content management platforms all track changes and allow comparisons of previous revisions.

Is there another approach that would be easier to implement?

pwhipp commented 9 years ago

It is surprising.

I've searched fairly extensively and I cannot find anything appropriate. This thread was very encouraging but seems to have dried up and cheathcott does not have any public repositories or recent activity.

I am updating our mezzanine fork and investigating how easily I can do a basic integration.

pwhipp commented 9 years ago

Done and deployed to both production and staging.