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