doc: 0.9.0 release notes
[mediagoblin.git] / docs / source / siteadmin / relnotes.rst
index 7d480d9060320862d226ab2e1f4af34ff1018653..584fd8c343f515f5550d0f8891de2b9d0a47444a 100644 (file)
@@ -11,6 +11,8 @@
    Dedication along with this software. If not, see
    <http://creativecommons.org/publicdomain/zero/1.0/>.
 
+.. _release-notes:
+
 =============
 Release Notes
 =============
@@ -19,17 +21,620 @@ This chapter has important information for releases in it.
 If you're upgrading from a previous release, please read it
 carefully, or at least skim over it.
 
-WIP
+.. note::
+
+   ALWAYS do backups before upgrading, especially before
+   running migrations!  That way if something goes wrong, we can fix
+   things!
+
+   And be sure to shut down your current mediagoblin/celery processes
+   before upgrading!
+
+.. note::
+
+   The MediaGoblin repository used to be on gitorious.org, but since
+   gitorious.org shut down, we had to move.  We are presently on
+   Savannah.  You may need to update your git repository location::
+
+       git remote set-url origin git://git.savannah.gnu.org/mediagoblin.git
+
+
+0.9.0
+=====
+
+This release has a number of improvements, but is also a major
+"plumbing upgrade" release to MediaGoblin.  Notably, we now support
+Python 3, which is pretty cool!
+
+**Do this to upgrade**
+
+0. If you haven't already, switch the git remote URL:
+   ``git remote set-url origin git://git.savannah.gnu.org/mediagoblin.git``
+1. Update to the latest release.  If checked out from git, run:
+   ``git fetch && git checkout -q v0.9.0``
+2. Run
+   ``./bootstrap.sh && ./configure && make``
+3. Also run
+   ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+
+**Bugfixes/improvements:**
+
+- Python 3 is now a first class citizen!  We now support both
+  Python 2.7 and Python 3.4 or later.
+- Major updates to internal tooling to pave the way for federation.
+  - Massive overhaul to the database layout (particularly in
+    permitting generic relations)
+  - OAuth updates
+  - Updating how we handle collections
+  - Add a "graveyard" system with tombstones for keeping information
+    about removed objects
+  - Large overhaul to how "comments" work.  In federation, many things
+    can reply to many things, so we had to loosen the model.
+- If your user has some collections available, these will be presented
+  as a dropdown option while submitting media.
+- Begin using Alembic for migrations
+- Lots of bugfixes and etc
+  - Many fixes to typos
+  - Some fixes to the blog system
+  - Switch to waitress for development
+  - And more...!
+
+
+0.8.1
+=====
+
+This release is a security and bugfix release.  We recommend you upgrade as
+soon as possible.
+
+**Do this to upgrade**
+
+0. If you haven't already, switch the git remote URL:
+   ``git remote set-url origin git://git.savannah.gnu.org/mediagoblin.git``
+1. Update to the latest release.  If checked out from git, run:
+   ``git fetch && git checkout -q v0.8.1``
+2. Run
+   ``./bootstrap.sh && ./configure && make``
+3. Also run
+   ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+
+(Please check intermediate release steps as well if not upgrading from
+0.8.0)
+
+**Bugfixes/improvements:**
+
+Most importantly, there is an **important security fix**:
+
+Quoting here a portion of the
+`release blogpost <http://mediagoblin.org/news/mediagoblin-0.8.1-security-release.html>`_::
+
+  We have had a security problem in our OAuth implementation reported to
+  us privately and have taken steps to address it. The security problem
+  affects all versions of GNU MediaGoblin since 0.5.0. I have created a patch
+  for this and released a minor version 0.8.1. It's strongly advised
+  that everyone upgrade as soon as they can.
+
+  In order to exploit the security issue, an attacker must have had
+  access to a logged in session to your GNU MediaGoblin account. If you
+  have kept your username and password secret, logging in only over
+  HTTPS and you've not left yourself logged in on publicly accessible
+  computers, you should be safe.  However it's still advised all users
+  take the following precautions, listed below.
+
+  Users should check their authorized clients. Any client which looks
+  unfamiliar to you, you should deauthorize. To check this:
+
+  1) Log in to the GNU MediaGoblin instance
+  2) Click the drop down arrow in the upper right
+  3) Click "Change account settings"
+  4) At the bottom click the "Deauthorize applications" link
+
+  If you are unsure of any of these, click "Deauthorize".
+
+There are other bugfixes, but they are fairly minor.
+
+
+0.8.0
+=====
+
+This release has a number of changes related to the way we recommend
+building MediaGoblin; upgrade steps are below, but if you run into
+trouble, consider pinging the MediaGoblin list or IRC channel.
+
+**Do this to upgrade**
+
+0. If you haven't already, switch the git remote URL:
+   ``git remote set-url origin git://git.savannah.gnu.org/mediagoblin.git``
+1. If you don't have node.js installed, you'll need it for handling
+   MediaGoblin's static web dependencies.  Install this via your
+   distribution!  (In the glorious future MediaGoblin will be simply
+   packaged for your distribution so you won't have to worry about
+   this!)
+2. Update to the latest release.  If checked out from git, run:
+   ``git fetch && git checkout -q v0.8.0``
+3. Run
+   ``./bootstrap.sh && ./configure && make``
+4. Also run
+   ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+
+Please note the important steps of 0 and 2, which have not appeared in
+prior upgrade guides!
+
+Additionally:
+
+- Are you using audio or video media types?  In that case, you'll need
+  to update your Gstreamer instance to 1.0.
+- The Pump API needs some data passed through to the WSGI application,
+  so if you are using apache with mod_wsgi you should be sure to make
+  sure to add "WSGIPassAuthorization On" to your config.  (Using the
+  default MediaGoblin documnetation and config, things should work
+  as-is.)
+
+
+**Bugfixes/improvements:**
+
+- Preliminary / experimental support for Python 3!
+- Footer forced to the bottom of page
+- Massive improvements to Pump API support
+  - Able to run on multiple existing Pump clients!  Including Pumpa
+    and Dianara!
+- much cleaner ./configure && make support; it's now the default
+- Clearer documentation on permissions and installation
+- Switched from Transifex, which had become proprietary, to an
+  instance of Pootle hosted for GNU
+- Moved to Gstreamer 1.0!  This also adds a new thumbnailer which
+  gives much better results in
+- Removed terrible check-javascript-dependencies-into-your-application
+  setup, now using Bower for dependency tracking
+- Put some scaffolding in place for Alembic, which will be used for
+  future mitration work
+- Automatically create a fresh mediagoblin.ini from
+  mediagoblin.ini.example
+- no more need for mediagoblin_local.ini (though it's still supported)
+- Fix lowercasing of username in auth steps
+- Slowly moving towards removing global state (a source of many bugs)
+
+0.7.1
 =====
 
+This is a purely bugfix release.  Important changes happened since
+0.7.0; if running MediaGoblin 0.7.0, an upgrade is highly recommended;
+see below.  This release is especially useful if you have been running
+postgres and have been receiving seemingly random database transaction
+errors.
+
+**Do this to upgrade**
+
+1. Update to the latest release.  If checked out from git, run:
+   ``git fetch && git checkout -q v0.7.1 && git submodule init && git submodule update``
+2. Make sure to run
+   ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+
+That's it, probably!  If you run into problems, don't hesitate to
+`contact us <http://mediagoblin.org/pages/join.html>`_
+(IRC is often best).
+
+**Bugfixes/improvements:**
+
+- The *MOST IMPORTANT* change in this release:
+  Disabling a couple of non-critical features that were causing
+  database transaction issues.  (These should be back by 0.8.0.)
+
+  + Disabled the "checking if the database is up to date at
+    mediagoblin startup" feature
+  + Disabled the garbage collection stuff by default for now
+    (You can set garbage_collection under the config mediagoblin
+    header to something other than 0 to turn it back on for now, but
+    it's potentially risky for the moment.)
+
+- Some fixes to the 0.7.0 docs
+- Fixed Sandy 70s speedboat navbar by updating git submodule
+- Added support for cr2 files in raw_image media type
+- Added a description to setup.py
+- Collection and CollectionItem objects now have nicer in-python representations
+- Fixed unicode error with raw image mediatype logging
+- Fixed #945 "Host metadata does not confirm to spec (/.well-known/meta-data)"
+
+  + Add XRD+XML formatting for /.well-known/host-meta
+  + Add /.well-known/webfinger API to lookup user hrefs
+
+- deleteuser gmg subcommand now fails gracefully
+- Removed a false download link from setup.py
+
+0.7.0
+=====
+
+**Do this to upgrade**
+
+1. Update to the latest release.  If checked out from git, run:
+   ``git fetch && git checkout -q v0.7.0 && git submodule init && git submodule update``
+2. Make sure to run
+   ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+
+(NOTE: earlier versions of the 0.7.0 release instructions left out the
+``git submodule init`` step!  If you did an upgrade earlier based on
+these instructions and your theme looks weirdly aligned, try running
+the following:)
+
+  ``git submodule init && git submodule update``
+
+That's it, probably!  If you run into problems, don't hesitate to
+`contact us <http://mediagoblin.org/pages/join.html>`_
+(IRC is often best).
+
+**New features:**
+
+- New mobile upload API making use of the
+  `Pump API <https://github.com/e14n/pump.io/blob/master/API.md>`_
+  (which will be the foundation for MediaGoblin's federation)
+- New theme: Sandy 70s Speedboat!
+
+- Metadata features!  We also now have a json-ld context. 
+
+- Many improvements for archival institutions, including metadata
+  support and featuring items on the homepage.  With the (new!)
+  archivalook plugin enabled, featuring media is possible.
+  Additionally, metadata about the particular media item will show up
+  in the sidebar.
+
+  In the future these plugins may be separated, but for now they have
+  come together as part of the same plugin.
+
+- There is a new gmg subcommand called batchaddmedia that allows for
+  uploading many files at once.  This is aimed to be useful for
+  archival institutions and groups where there is an already existing
+  and large set of available media that needs to be included.
+- Speaking of, the call to postgres in the makefile is fixed.
+- We have a new, generic media-page context hook that allows for
+  adding context depending on the type of media.
+- Tired of video thumbnails breaking during processing all the time?
+  Good news, everyone!  Video thumbnail generation should not fail
+  frequently anymore.  (We think...)
+- You can now set default permissions for new users in the config.
+
+- bootstrap.sh / gnu configuration stuff still exists, but moves to be
+  experimental-bootstrap.sh so as to not confuse newcomers.  There are
+  some problems currently with the autoconf stuff that we need to work
+  out... we still have interest in supporting it, though help is
+  welcome.
+
+- MediaGoblin now checks whether or not the database is up to date
+  when starting.
+- Switched to `Skeleton <http://www.getskeleton.com/>`_ as a system for
+  graphic design.
+- New gmg subcommands for administrators:
+  - A "deletemedia" command
+  - A "deleteuser" command
+- We now have a blogging media type... it's very experimental,
+  however.  Use with caution!
+- We have switched to exifread as an external library for reading EXIF
+  data.  It's basically the same thing as before, but packaged
+  separately from MediaGoblin.
+- Many improvements to internationalization.  Also (still rudimentary,
+  but existant!) RTL language support!
+
+**Known issues:**
+ - The host-meta is now json by default; in the spec it should be xml by
+   default.  We have done this because of compatibility with the pump
+   API.  We are checking with upstream to see if there is a way to
+   resolve this discrepancy.
+
+
+0.6.1
+=====
+
+This is a short, bugfix release.
+
+**Do this to upgrade**
+
+1. Update to the latest release.  If checked out from git, run:
+   ``git fetch && git checkout -q v0.6.1``
+2. Make sure to run
+   ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+
+This release switches the default terms of service to be off by
+default and corrects some mistakes in the default terms of service.
+
+Turning the terms of service on is very easy, just set ``show_tos`` in
+the ``[mediagoblin]`` section of your config to ``true``.
+
+
+0.6.0
+=====
+
+**Do this to upgrade**
+
+1. Update to the latest release.  If checked out from git, run:
+   ``git fetch && git checkout -q v0.6.0``
+2. Make sure to run
+   ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+
+That's it, probably!  If you run into problems, don't hesitate to
+`contact us <http://mediagoblin.org/pages/join.html>`_
+(IRC is often best).
+
+This tool has a lot of new tools for administrators, hence the
+nickname "Lore of the Admin"!
+
+**New features:**
+
+- New tools to control how much users can upload, both as a general
+  user limit, or per file.
+
+  You can set this with the following options in your mediagoblin
+  config file: `upload_limit` and `max_file_size`.  Both are integers
+  in megabytes.
+
+  There is an option to control how much each individual user can
+  upload too, though an interface for this is not yet exposed.  See
+  the "uploaded" field on the core__users table.
+
+- MediaGoblin now contains an authentication plugin for ldap!  You
+  can turn on the mediagoblin.plugins.ldap plugin to make use of
+  this.  See the documentation: :ref:`ldap-plugin`
+
+- There's a new command line upload tool!  At long last!  See
+  `./bin/gmg addmedia --help` for info on how to use this.
+
+- There's now a terms of service document included in MediaGoblin.
+  It's turned on by default, but you can turn it off if you prefer,
+  just set the configuration option of `show_tos` in the [mediagoblin]
+  section of your config to false.
+
+  Alternately, you can override the template for the terms of service
+  document to set up your own.
+
+- We have a lot of new administrative tooling features!
+  - There's a built-in privileges/permissions system now.
+    Administrators are given access to modifying these parameters
+    from a user administration panel.
+  - Users can submit reports about other problematic users or media
+    and administrators are given tools to resolve said reports and
+    ban/unban users if needed.
+
+- New version of video.js is included with MediaGoblin.  Slight
+  amount of skinning to match the MediaGoblin look, otherwise also
+  uses the new default skin.
+
+Developer-oriented changes:
+
+- New developer tool for quickly setting up a development environment
+  in `devtools/make_example_database.sh`.  Requires doing a checkout
+  of our other tool `mg_dev_environments <https://gitorious.org/mediagoblin/mg-dev-environments/>`_
+  (probably in the parent Directory) though!
+- A "foundations" framework has entered into the codebase.
+  This is mostly just relevant to coders, but it does mean that it's
+  much easier to add database structures that need some entries filled
+  automatically by default.
+- Refactoring to the authentication code and the reprocessing code
+
+
+0.5.1
+=====
+
+v0.5.1 is a bugfix release... the steps are the same as for 0.5.1.
+
+**Bugfixes:**
+
+- python 2.6 compatibility restored
+- Fixed last release's release notes ;)
+
+
+0.5.0
+=====
+
+**NOTE:** If using the API is important to you, we're in a state of
+ransition towards a new API via the Pump API.  As such, though the old
+API still probably works, some changes have happened to the way oauth
+works to make it more Pump-compatible.  If you're heavily using
+clients using the old API, you may wish to hold off on upgrading for
+now.  Otherwise, jump in and have fun! :)
+
+**Do this to upgrade**
+
+1. Make sure to run
+   ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+   after upgrading.
+
+.. mention something about new, experimental configure && make support
+
+2. Note that a couple of things have changed with ``mediagoblin.ini``. First
+   we have a new Authentication System. You need to add 
+   ``[[mediagoblin.plugins.basic_auth]]`` under the ``[plugins]`` section of 
+   your config file. Second, media types are now plugins, so you need to add
+   each media type under the ``[plugins]`` section of your config file.
+
+
+3. We have made a script to transition your ``mediagoblin_local.ini`` file for
+   you. This script can be found at:
+   
+   http://mediagoblin.org/download/0.5.0_config_converter.py
+
+If you run into problems, don't hesitate to
+`contact us <http://mediagoblin.org/pages/join.html>`_
+(IRC is often best).
+
 **New features**
 
-**Other changed**
+* As mentioned above, we now have a plugable Authentication system. You can
+  use any combination of the multiple authentication systems 
+  (:ref:`basic_auth-chapter`, :ref:`persona-chapter`, :ref:`openid-chapter`)
+  or write your own!
+* Media types are now plugins!  This means that new media types will
+  be able to do new, fancy things they couldn't in the future.
+* We now have notification support! This allows you to subscribe to media
+  comments and to be notified when someone comments on your media.
+* New reprocessing framework! You can now reprocess failed uploads, and
+  send already processed media back to processing to re-transcode or resize
+  media.
+* Comment preview!
+* Users now have the ability to change their email associated with their
+  account.
+* New oauth code as we move closer to federation support.
+* Experimental pyconfigure support for GNU-style configue and makefile
+  deployment.
+* Database foundations! You can now pre-populate the database models.
+* Way faster unit test run-time via in-memory database.
+* All mongokit stuff has been cleaned up.
+* Fixes for non-ascii filenames.
+* The option to stay logged in.
+* Mediagoblin has been upgraded to use the latest `celery <http://celeryproject.org/>`_
+  version.
+* You can now add jinja2 extensions to your config file to use in custom
+  templates.
+* Fixed video permission issues.
+* Mediagoblin docs are now hosted with multiple versions.
+* We removed redundent tooltips from the STL media display.
+* We are now using itsdangerous for verification tokens.
+
+
+0.4.1
+=====
+
+This is a bugfix release for 0.4.0.  This only implements one major
+fix in the newly released document support which prevented the
+"conversion via libreoffice" feature.
+
+If you were running 0.4.0 you can upgrade to v0.4.1 via a simple
+switch and restarting mediagoblin/celery with no other actions.
+
+Otherwise, follow 0.4.0 instructions.
+
+
+0.4.0
+=====
+
+**Do this to upgrade**
+
+1. Make sure to run
+   ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
+   after upgrading.
+2. See "For Theme authors" if you have a custom theme.
+3. Note that ``./bin/gmg theme assetlink`` is now just
+   ``./bin/gmg assetlink`` and covers both plugins and assets.
+   Keep on reading to hear more about new plugin features.
+4. If you want to take advantage of new plugins that have statically
+   served assets, you are going to need to add the new "plugin_static"
+   section to your nginx config.  Basically the following for nginx::
+
+     # Plugin static files (usually symlinked in)
+     location /plugin_static/ {
+        alias /srv/mediagoblin.example.org/mediagoblin/user_dev/plugin_static/;
+     }
+
+   Similarly, if you've got a modified paste config, you may want to
+   borrow the app:plugin_static section from the default paste.ini
+   file.
+5. We now use itsdangerous for sessions; if you had any references to
+   beaker in your paste config you can remove them.  Again, see the
+   default paste.ini config
+6. We also now use git submodules.  Please do:
+   ``git submodule init && git submodule update``
+   You will need to do this to use the new PDF support.
+
+**For theme authors**
+
+If you have your own theme or you have any "user modified templates",
+please note the following:
+
+* mediagoblin/bits/ files above-content.html, body-end.html,
+  body-start.html now are renamed... they have underscores instead of
+  dashes in the filenames now :)
+* There's a new file: ``mediagoblin/bits/frontpage_welcome.html``.
+  You can easily customize this to give a welcome page appropriate to
+  your site.
+
+
+**New features**
+
+* PDF media type!
+* Improved plugin system.  More flexible, better documented, with a
+  new plugin authoring section of the docs.
+* itsdangerous based sessions.  No more beaker!
+* New, experimental Piwigo-based API.  This means you should be able
+  to use MediaGoblin with something like Shotwell.  (Again, a word of
+  caution: this is *very experimental*!)
+* Human readable timestamps, and the option to display the original
+  date of an image when available (available as the
+  "original_date_visible" variable)
+* Moved unit testing system from nosetests to py.test so we can better
+  handle issues with sqlalchemy exploding with different database
+  configurations.  Long story :)
+* You can now disable the ability to post comments.
+* Tags now can be up to length 255 characters by default.
+
+
+0.3.3
+=====
+
+**Do this to upgrade**
+
+1. Make sure to run ``bin/gmg dbupdate`` after upgrading.
+2. OpenStreetMap is now a plugin, so if you want to use it, add the
+   following to your config file:
+
+   .. code-block:: ini
+
+    [plugins]
+    [[mediagoblin.plugins.geolocation]]
+
+If you have your own theme, you may need to make some adjustments to
+it as some theme related things may have changed in this release.  If
+you run into problems, don't hesitate to
+`contact us <http://mediagoblin.org/pages/join.html>`_
+(IRC is often best).
+
+**New features**
+
+* New dropdown menu for accessing various features.
+
+* Significantly improved URL generation.  Now mediagoblin won't give
+  up on making a slug if it looks like there will be a duplicate;
+  it'll try extra hard to generate a meaningful one instead.
+
+  Similarly, linking to an id no longer can possibly conflict with
+  linking to a slug; /u/username/m/id:35/ is the kind of reference we
+  now use to linking to entries with ids.  However, old links with
+  entries that linked to ids should work just fine with our migration.
+  The only urls that might break in this release are ones using colons
+  or equal signs.
+
+* New template hooks for plugin authoring.
+
+* As a demonstration of new template hooks for plugin authoring,
+  openstreetmap support now moved to a plugin!
+
+* Method to add media to collections switched from icon of paperclip
+  to button with "add to collection" text.
+
+* Bug where videos often failed to produce a proper thumbnail fixed!
+
+* Copying around files in MediaGoblin now much more efficient, doesn't
+  waste gobs of memory.
+
+* Video transcoding now optional for videos that meet certain
+  criteria.  By default, MediaGoblin will not transcode webm videos
+  that are smaller in resolution than the MediaGoblin defaults, and
+  MediaGoblin can also be configured to allow theora files to not be
+  transcoded as well.
+
+* Per-user license preference option; always want your uploads to be
+  BY-SA and tired of changing that field?  You can now set your
+  license preference in your user settings.
+
+* Video player now responsive; better for mobile!
+
+* You can now delete your account from the user preferences page if
+  you so wish.
+
+**Other changes**
 
 * Plugin writers: Internal restructuring led to mediagoblin.db.sql* be
   mediagoblin.db.* starting from 0.3.3
 
-* Dependency list has been reduced not requireing the "webob" package anymore.
+* Dependency list has been reduced not requiring the "webob" package anymore.
+
+* And many small fixes/improvements, too numerous to list!
+
 
 0.3.2
 =====
@@ -39,7 +644,19 @@ MongoDB-based MediaGoblin instance to the newer SQL-based system.
 
 **Do this to upgrade**
 
-1. Make sure to run ``bin/gmg dbupdate`` after upgrading.
+    # directory of your mediagoblin install
+    cd /srv/mediagoblin.example.org
+
+    # copy source for this release
+    git fetch
+    git checkout tags/v0.3.2
+
+    # perform any needed database updates
+    bin/gmg dbupdate
+    
+    # restart your servers however you do that, e.g.,
+    sudo service mediagoblin-paster restart
+    sudo service mediagoblin-celeryd restart
 
 
 **New features**