No need to run git submodule init/update, run by bootstrap.sh
[mediagoblin.git] / docs / source / siteadmin / relnotes.rst
1 .. MediaGoblin Documentation
2
3 Written in 2012 by MediaGoblin contributors
4
5 To the extent possible under law, the author(s) have dedicated all
6 copyright and related and neighboring rights to this software to
7 the public domain worldwide. This software is distributed without
8 any warranty.
9
10 You should have received a copy of the CC0 Public Domain
11 Dedication along with this software. If not, see
12 <http://creativecommons.org/publicdomain/zero/1.0/>.
13
14 .. _release-notes:
15
16 =============
17 Release Notes
18 =============
19
20 This chapter has important information for releases in it.
21 If you're upgrading from a previous release, please read it
22 carefully, or at least skim over it.
23
24 .. note::
25
26 ALWAYS do backups before upgrading, especially before
27 running migrations! That way if something goes wrong, we can fix
28 things!
29
30 And be sure to shut down your current mediagoblin/celery processes
31 before upgrading!
32
33 .. note::
34
35 The MediaGoblin repository used to be on gitorious.org, but since
36 gitorious.org shut down, we had to move. We are presently on
37 Savannah. You may need to update your git repository location::
38
39 git remote set-url origin git://git.savannah.gnu.org/mediagoblin.git
40
41
42 0.8.0
43 =====
44
45 This release has a number of changes related to the way we recommend
46 building MediaGoblin; upgrade steps are below, but if you run into
47 trouble, consider pinging the MediaGoblin list or IRC channel.
48
49 **Do this to upgrade**
50
51 0. If you haven't already, switch the git remote URL:
52 ``git remote set-url origin git://git.savannah.gnu.org/mediagoblin.git``
53 1. Update to the latest release. If checked out from git, run:
54 ``git fetch && git checkout -q v0.8.0``
55 2. Run
56 ``./bootstrap.sh && ./configure && make``
57 3. Also run
58 ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
59
60 Please note this important second new step!
61
62 Additionally:
63
64 - Are you using audio or video media types? In that case, you'll need
65 to update your Gstreamer instance to 1.0.
66 - The Pump API needs some data passed through to the WSGI application,
67 so if you are using apache with mod_wsgi you should be sure to make
68 sure to add "WSGIPassAuthorization On" to your config. (Using the
69 default MediaGoblin documnetation and config, things should work
70 as-is.)
71
72
73 **Bugfixes/improvements:**
74
75 - Preliminary / experimental support for Python 3!
76 - Footer forced to the bottom of page
77 - Massive improvements to Pump API support
78 - Able to run on multiple existing Pump clients! Including Pumpa
79 and Dianara!
80 - much cleaner ./configure && make support; it's now the default
81 - Clearer documentation on permissions and installation
82 - Switched from Transifex, which had become proprietary, to an
83 instance of Pootle hosted for GNU
84 - Moved to Gstreamer 1.0! This also adds a new thumbnailer which
85 gives much better results in
86 - Removed terrible check-javascript-dependencies-into-your-application
87 setup, now using Bower for dependency tracking
88 - Put some scaffolding in place for Alembic, which will be used for
89 future mitration work
90 - Automatically create a fresh mediagoblin.ini from
91 mediagoblin.ini.example
92 - no more need for mediagoblin_local.ini (though it's still supported)
93 - Fix lowercasing of username in auth steps
94 - Slowly moving towards removing global state (a source of many bugs)
95
96 0.7.1
97 =====
98
99 This is a purely bugfix release. Important changes happened since
100 0.7.0; if running MediaGoblin 0.7.0, an upgrade is highly recommended;
101 see below. This release is especially useful if you have been running
102 postgres and have been receiving seemingly random database transaction
103 errors.
104
105 **Do this to upgrade**
106
107 1. Update to the latest release. If checked out from git, run:
108 ``git fetch && git checkout -q v0.7.1 && git submodule init && git submodule update``
109 2. Make sure to run
110 ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
111
112 That's it, probably! If you run into problems, don't hesitate to
113 `contact us <http://mediagoblin.org/pages/join.html>`_
114 (IRC is often best).
115
116 **Bugfixes/improvements:**
117
118 - The *MOST IMPORTANT* change in this release:
119 Disabling a couple of non-critical features that were causing
120 database transaction issues. (These should be back by 0.8.0.)
121
122 + Disabled the "checking if the database is up to date at
123 mediagoblin startup" feature
124 + Disabled the garbage collection stuff by default for now
125 (You can set garbage_collection under the config mediagoblin
126 header to something other than 0 to turn it back on for now, but
127 it's potentially risky for the moment.)
128
129 - Some fixes to the 0.7.0 docs
130 - Fixed Sandy 70s speedboat navbar by updating git submodule
131 - Added support for cr2 files in raw_image media type
132 - Added a description to setup.py
133 - Collection and CollectionItem objects now have nicer in-python representations
134 - Fixed unicode error with raw image mediatype logging
135 - Fixed #945 "Host metadata does not confirm to spec (/.well-known/meta-data)"
136
137 + Add XRD+XML formatting for /.well-known/host-meta
138 + Add /.well-known/webfinger API to lookup user hrefs
139
140 - deleteuser gmg subcommand now fails gracefully
141 - Removed a false download link from setup.py
142
143 0.7.0
144 =====
145
146 **Do this to upgrade**
147
148 1. Update to the latest release. If checked out from git, run:
149 ``git fetch && git checkout -q v0.7.0 && git submodule init && git submodule update``
150 2. Make sure to run
151 ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
152
153 (NOTE: earlier versions of the 0.7.0 release instructions left out the
154 ``git submodule init`` step! If you did an upgrade earlier based on
155 these instructions and your theme looks weirdly aligned, try running
156 the following:)
157
158 ``git submodule init && git submodule update``
159
160 That's it, probably! If you run into problems, don't hesitate to
161 `contact us <http://mediagoblin.org/pages/join.html>`_
162 (IRC is often best).
163
164 **New features:**
165
166 - New mobile upload API making use of the
167 `Pump API <https://github.com/e14n/pump.io/blob/master/API.md>`_
168 (which will be the foundation for MediaGoblin's federation)
169 - New theme: Sandy 70s Speedboat!
170
171 - Metadata features! We also now have a json-ld context.
172
173 - Many improvements for archival institutions, including metadata
174 support and featuring items on the homepage. With the (new!)
175 archivalook plugin enabled, featuring media is possible.
176 Additionally, metadata about the particular media item will show up
177 in the sidebar.
178
179 In the future these plugins may be separated, but for now they have
180 come together as part of the same plugin.
181
182 - There is a new gmg subcommand called batchaddmedia that allows for
183 uploading many files at once. This is aimed to be useful for
184 archival institutions and groups where there is an already existing
185 and large set of available media that needs to be included.
186 - Speaking of, the call to postgres in the makefile is fixed.
187 - We have a new, generic media-page context hook that allows for
188 adding context depending on the type of media.
189 - Tired of video thumbnails breaking during processing all the time?
190 Good news, everyone! Video thumbnail generation should not fail
191 frequently anymore. (We think...)
192 - You can now set default permissions for new users in the config.
193
194 - bootstrap.sh / gnu configuration stuff still exists, but moves to be
195 experimental-bootstrap.sh so as to not confuse newcomers. There are
196 some problems currently with the autoconf stuff that we need to work
197 out... we still have interest in supporting it, though help is
198 welcome.
199
200 - MediaGoblin now checks whether or not the database is up to date
201 when starting.
202 - Switched to `Skeleton <http://www.getskeleton.com/>`_ as a system for
203 graphic design.
204 - New gmg subcommands for administrators:
205 - A "deletemedia" command
206 - A "deleteuser" command
207 - We now have a blogging media type... it's very experimental,
208 however. Use with caution!
209 - We have switched to exifread as an external library for reading EXIF
210 data. It's basically the same thing as before, but packaged
211 separately from MediaGoblin.
212 - Many improvements to internationalization. Also (still rudimentary,
213 but existant!) RTL language support!
214
215 **Known issues:**
216 - The host-meta is now json by default; in the spec it should be xml by
217 default. We have done this because of compatibility with the pump
218 API. We are checking with upstream to see if there is a way to
219 resolve this discrepancy.
220
221
222 0.6.1
223 =====
224
225 This is a short, bugfix release.
226
227 **Do this to upgrade**
228
229 1. Update to the latest release. If checked out from git, run:
230 ``git fetch && git checkout -q v0.6.1``
231 2. Make sure to run
232 ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
233
234 This release switches the default terms of service to be off by
235 default and corrects some mistakes in the default terms of service.
236
237 Turning the terms of service on is very easy, just set ``show_tos`` in
238 the ``[mediagoblin]`` section of your config to ``true``.
239
240
241 0.6.0
242 =====
243
244 **Do this to upgrade**
245
246 1. Update to the latest release. If checked out from git, run:
247 ``git fetch && git checkout -q v0.6.0``
248 2. Make sure to run
249 ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
250
251 That's it, probably! If you run into problems, don't hesitate to
252 `contact us <http://mediagoblin.org/pages/join.html>`_
253 (IRC is often best).
254
255 This tool has a lot of new tools for administrators, hence the
256 nickname "Lore of the Admin"!
257
258 **New features:**
259
260 - New tools to control how much users can upload, both as a general
261 user limit, or per file.
262
263 You can set this with the following options in your mediagoblin
264 config file: `upload_limit` and `max_file_size`. Both are integers
265 in megabytes.
266
267 There is an option to control how much each individual user can
268 upload too, though an interface for this is not yet exposed. See
269 the "uploaded" field on the core__users table.
270
271 - MediaGoblin now contains an authentication plugin for ldap! You
272 can turn on the mediagoblin.plugins.ldap plugin to make use of
273 this. See the documentation: :ref:`ldap-plugin`
274
275 - There's a new command line upload tool! At long last! See
276 `./bin/gmg addmedia --help` for info on how to use this.
277
278 - There's now a terms of service document included in MediaGoblin.
279 It's turned on by default, but you can turn it off if you prefer,
280 just set the configuration option of `show_tos` in the [mediagoblin]
281 section of your config to false.
282
283 Alternately, you can override the template for the terms of service
284 document to set up your own.
285
286 - We have a lot of new administrative tooling features!
287 - There's a built-in privileges/permissions system now.
288 Administrators are given access to modifying these parameters
289 from a user administration panel.
290 - Users can submit reports about other problematic users or media
291 and administrators are given tools to resolve said reports and
292 ban/unban users if needed.
293
294 - New version of video.js is included with MediaGoblin. Slight
295 amount of skinning to match the MediaGoblin look, otherwise also
296 uses the new default skin.
297
298 Developer-oriented changes:
299
300 - New developer tool for quickly setting up a development environment
301 in `devtools/make_example_database.sh`. Requires doing a checkout
302 of our other tool `mg_dev_environments <https://gitorious.org/mediagoblin/mg-dev-environments/>`_
303 (probably in the parent Directory) though!
304 - A "foundations" framework has entered into the codebase.
305 This is mostly just relevant to coders, but it does mean that it's
306 much easier to add database structures that need some entries filled
307 automatically by default.
308 - Refactoring to the authentication code and the reprocessing code
309
310
311 0.5.1
312 =====
313
314 v0.5.1 is a bugfix release... the steps are the same as for 0.5.1.
315
316 **Bugfixes:**
317
318 - python 2.6 compatibility restored
319 - Fixed last release's release notes ;)
320
321
322 0.5.0
323 =====
324
325 **NOTE:** If using the API is important to you, we're in a state of
326 ransition towards a new API via the Pump API. As such, though the old
327 API still probably works, some changes have happened to the way oauth
328 works to make it more Pump-compatible. If you're heavily using
329 clients using the old API, you may wish to hold off on upgrading for
330 now. Otherwise, jump in and have fun! :)
331
332 **Do this to upgrade**
333
334 1. Make sure to run
335 ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
336 after upgrading.
337
338 .. mention something about new, experimental configure && make support
339
340 2. Note that a couple of things have changed with ``mediagoblin.ini``. First
341 we have a new Authentication System. You need to add
342 ``[[mediagoblin.plugins.basic_auth]]`` under the ``[plugins]`` section of
343 your config file. Second, media types are now plugins, so you need to add
344 each media type under the ``[plugins]`` section of your config file.
345
346
347 3. We have made a script to transition your ``mediagoblin_local.ini`` file for
348 you. This script can be found at:
349
350 http://mediagoblin.org/download/0.5.0_config_converter.py
351
352 If you run into problems, don't hesitate to
353 `contact us <http://mediagoblin.org/pages/join.html>`_
354 (IRC is often best).
355
356 **New features**
357
358 * As mentioned above, we now have a plugable Authentication system. You can
359 use any combination of the multiple authentication systems
360 (:ref:`basic_auth-chapter`, :ref:`persona-chapter`, :ref:`openid-chapter`)
361 or write your own!
362 * Media types are now plugins! This means that new media types will
363 be able to do new, fancy things they couldn't in the future.
364 * We now have notification support! This allows you to subscribe to media
365 comments and to be notified when someone comments on your media.
366 * New reprocessing framework! You can now reprocess failed uploads, and
367 send already processed media back to processing to re-transcode or resize
368 media.
369 * Comment preview!
370 * Users now have the ability to change their email associated with their
371 account.
372 * New oauth code as we move closer to federation support.
373 * Experimental pyconfigure support for GNU-style configue and makefile
374 deployment.
375 * Database foundations! You can now pre-populate the database models.
376 * Way faster unit test run-time via in-memory database.
377 * All mongokit stuff has been cleaned up.
378 * Fixes for non-ascii filenames.
379 * The option to stay logged in.
380 * Mediagoblin has been upgraded to use the latest `celery <http://celeryproject.org/>`_
381 version.
382 * You can now add jinja2 extensions to your config file to use in custom
383 templates.
384 * Fixed video permission issues.
385 * Mediagoblin docs are now hosted with multiple versions.
386 * We removed redundent tooltips from the STL media display.
387 * We are now using itsdangerous for verification tokens.
388
389
390 0.4.1
391 =====
392
393 This is a bugfix release for 0.4.0. This only implements one major
394 fix in the newly released document support which prevented the
395 "conversion via libreoffice" feature.
396
397 If you were running 0.4.0 you can upgrade to v0.4.1 via a simple
398 switch and restarting mediagoblin/celery with no other actions.
399
400 Otherwise, follow 0.4.0 instructions.
401
402
403 0.4.0
404 =====
405
406 **Do this to upgrade**
407
408 1. Make sure to run
409 ``./bin/python setup.py develop --upgrade && ./bin/gmg dbupdate``
410 after upgrading.
411 2. See "For Theme authors" if you have a custom theme.
412 3. Note that ``./bin/gmg theme assetlink`` is now just
413 ``./bin/gmg assetlink`` and covers both plugins and assets.
414 Keep on reading to hear more about new plugin features.
415 4. If you want to take advantage of new plugins that have statically
416 served assets, you are going to need to add the new "plugin_static"
417 section to your nginx config. Basically the following for nginx::
418
419 # Plugin static files (usually symlinked in)
420 location /plugin_static/ {
421 alias /srv/mediagoblin.example.org/mediagoblin/user_dev/plugin_static/;
422 }
423
424 Similarly, if you've got a modified paste config, you may want to
425 borrow the app:plugin_static section from the default paste.ini
426 file.
427 5. We now use itsdangerous for sessions; if you had any references to
428 beaker in your paste config you can remove them. Again, see the
429 default paste.ini config
430 6. We also now use git submodules. Please do:
431 ``git submodule init && git submodule update``
432 You will need to do this to use the new PDF support.
433
434 **For theme authors**
435
436 If you have your own theme or you have any "user modified templates",
437 please note the following:
438
439 * mediagoblin/bits/ files above-content.html, body-end.html,
440 body-start.html now are renamed... they have underscores instead of
441 dashes in the filenames now :)
442 * There's a new file: ``mediagoblin/bits/frontpage_welcome.html``.
443 You can easily customize this to give a welcome page appropriate to
444 your site.
445
446
447 **New features**
448
449 * PDF media type!
450 * Improved plugin system. More flexible, better documented, with a
451 new plugin authoring section of the docs.
452 * itsdangerous based sessions. No more beaker!
453 * New, experimental Piwigo-based API. This means you should be able
454 to use MediaGoblin with something like Shotwell. (Again, a word of
455 caution: this is *very experimental*!)
456 * Human readable timestamps, and the option to display the original
457 date of an image when available (available as the
458 "original_date_visible" variable)
459 * Moved unit testing system from nosetests to py.test so we can better
460 handle issues with sqlalchemy exploding with different database
461 configurations. Long story :)
462 * You can now disable the ability to post comments.
463 * Tags now can be up to length 255 characters by default.
464
465
466 0.3.3
467 =====
468
469 **Do this to upgrade**
470
471 1. Make sure to run ``bin/gmg dbupdate`` after upgrading.
472 2. OpenStreetMap is now a plugin, so if you want to use it, add the
473 following to your config file:
474
475 .. code-block:: ini
476
477 [plugins]
478 [[mediagoblin.plugins.geolocation]]
479
480 If you have your own theme, you may need to make some adjustments to
481 it as some theme related things may have changed in this release. If
482 you run into problems, don't hesitate to
483 `contact us <http://mediagoblin.org/pages/join.html>`_
484 (IRC is often best).
485
486 **New features**
487
488 * New dropdown menu for accessing various features.
489
490 * Significantly improved URL generation. Now mediagoblin won't give
491 up on making a slug if it looks like there will be a duplicate;
492 it'll try extra hard to generate a meaningful one instead.
493
494 Similarly, linking to an id no longer can possibly conflict with
495 linking to a slug; /u/username/m/id:35/ is the kind of reference we
496 now use to linking to entries with ids. However, old links with
497 entries that linked to ids should work just fine with our migration.
498 The only urls that might break in this release are ones using colons
499 or equal signs.
500
501 * New template hooks for plugin authoring.
502
503 * As a demonstration of new template hooks for plugin authoring,
504 openstreetmap support now moved to a plugin!
505
506 * Method to add media to collections switched from icon of paperclip
507 to button with "add to collection" text.
508
509 * Bug where videos often failed to produce a proper thumbnail fixed!
510
511 * Copying around files in MediaGoblin now much more efficient, doesn't
512 waste gobs of memory.
513
514 * Video transcoding now optional for videos that meet certain
515 criteria. By default, MediaGoblin will not transcode webm videos
516 that are smaller in resolution than the MediaGoblin defaults, and
517 MediaGoblin can also be configured to allow theora files to not be
518 transcoded as well.
519
520 * Per-user license preference option; always want your uploads to be
521 BY-SA and tired of changing that field? You can now set your
522 license preference in your user settings.
523
524 * Video player now responsive; better for mobile!
525
526 * You can now delete your account from the user preferences page if
527 you so wish.
528
529 **Other changes**
530
531 * Plugin writers: Internal restructuring led to mediagoblin.db.sql* be
532 mediagoblin.db.* starting from 0.3.3
533
534 * Dependency list has been reduced not requiring the "webob" package anymore.
535
536 * And many small fixes/improvements, too numerous to list!
537
538
539 0.3.2
540 =====
541
542 This will be the last release that is capable of converting from an earlier
543 MongoDB-based MediaGoblin instance to the newer SQL-based system.
544
545 **Do this to upgrade**
546
547 # directory of your mediagoblin install
548 cd /srv/mediagoblin.example.org
549
550 # copy source for this release
551 git fetch
552 git checkout tags/v0.3.2
553
554 # perform any needed database updates
555 bin/gmg dbupdate
556
557 # restart your servers however you do that, e.g.,
558 sudo service mediagoblin-paster restart
559 sudo service mediagoblin-celeryd restart
560
561
562 **New features**
563
564 * **3d model support!**
565
566 You can now upload STL and OBJ files and display them in
567 MediaGoblin. Requires a recent-ish Blender; for details see:
568 :ref:`deploying-chapter`
569
570 * **trim_whitespace**
571
572 We bundle the optional plugin trim_whitespace which reduces the size
573 of the delivered html output by reducing redundant whitespace.
574
575 See :ref:`core-plugin-section` for plugin documentation
576
577 * **A new API!**
578
579 It isn't well documented yet but we do have an API. There is an
580 `android application in progress <https://gitorious.org/mediagoblin/mediagoblin-android>`_
581 which makes use of it, and there are some demo applications between
582 `automgtic <https://github.com/jwandborg/automgtic>`_, an
583 automatic media uploader for your desktop
584 and `OMGMG <https://github.com/jwandborg/omgmg>`_, an example of
585 a web application hooking up to the API.
586
587 This is a plugin, so you have to enable it in your mediagoblin
588 config file by adding a section under [plugins] like::
589
590 [plugins]
591 [[mediagoblin.plugins.api]]
592
593 Note that the API works but is not nailed down... the way it is
594 called may change in future releases.
595
596 * **OAuth login support**
597
598 For applications that use OAuth to connect to the API.
599
600 This is a plugin, so you have to enable it in your mediagoblin
601 config file by adding a section under [plugins] like::
602
603 [plugins]
604 [[mediagoblin.plugins.oauth]]
605
606 * **Collections**
607
608 We now have user-curated collections support. These are arbitrary
609 galleries that are customizable by users. You can add media to
610 these by clicking on the paperclip icon when logged in and looking
611 at a media entry.
612
613 * **OpenStreetMap licensing display improvements**
614
615 More accurate display of OSM licensing, and less disruptive: you
616 click to "expand" the display of said licensing.
617
618 Geolocation is also now on by default.
619
620 * **Miscelaneous visual improvements**
621
622 We've made a number of small visual improvements including newer and
623 nicer looking thumbnails and improved checkbox placement.
624
625
626
627 0.3.1
628 =====
629
630 **Do this to upgrade**
631
632 1. Make sure to run ``bin/gmg dbuptdate`` after upgrading.
633
634 2. If you set up your server config with an older version of
635 mediagoblin and the mediagoblin docs, it's possible you don't
636 have the "theme static files" alias, so double check to make
637 sure that section is there if you are having problems.
638
639
640
641 **New features**
642
643 * **theming support**
644
645 MediaGoblin now also includes theming support, which you can
646 read about in the section :ref:`theming-chapter`.
647
648 * **flatpages**
649
650 MediaGoblin has a flatpages plugin allowing you to add pages that
651 are aren't media-related like "About this site...", "Terms of
652 service...", etc.
653
654 See :ref:`core-plugin-section` for plugin documentation
655
656
657 0.3.0
658 =====
659
660 This release has one important change. You need to act when
661 upgrading from a previous version!
662
663 This release changes the database system from MongoDB to
664 SQL(alchemy). If you want to setup a fresh instance, just
665 follow the instructions in the deployment chapter. If on
666 the other hand you want to continue to use one instance,
667 read on.
668
669 To convert your data from MongoDB to SQL(alchemy), you need
670 to follow these steps:
671
672 1. Make sure your MongoDB is still running and has your
673 data, it's needed for the conversion.
674
675 2. Configure the ``sql_engine`` URI in the config to represent
676 your target database (see: :ref:`deploying-chapter`)
677
678 3. You need an empty database.
679
680 4. Then run the following command::
681
682 bin/gmg [-cf mediagoblin_config.ini] convert_mongo_to_sql
683
684 5. Start your server and investigate.
685
686 6. That's it.