aboutsummaryrefslogtreecommitdiffstats
path: root/docs/source/siteadmin/relnotes.rst
blob: 78342d99a7f8277d628c89e6ebc12b37c0cfa878 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
.. MediaGoblin Documentation

   Written in 2012 by MediaGoblin contributors

   To the extent possible under law, the author(s) have dedicated all
   copyright and related and neighboring rights to this software to
   the public domain worldwide. This software is distributed without
   any warranty.

   You should have received a copy of the CC0 Public Domain
   Dedication along with this software. If not, see
   <http://creativecommons.org/publicdomain/zero/1.0/>.

.. _release-notes:

=============
Release Notes
=============

This chapter has important information about our current and previous releases.


0.12.0 (work in progress)
=========================

**To do:**
- add TLS to deploying documentation

**Improvements:**

- Switch Atom feeds from deprecated werkzeug.contrib.atom to feedgenerator,
  upgrade werkzeug (Ben Sturmfels)
- Document that `gmg dbupdate` is required after some config changes (Rodrigo
  Martins)
- Add Docker and CI builds for Debian 11/Bullseye (Ben Sturmfels)
- Fix/document Guix setup for 100% passing test suite (Ben Sturmfels)
- Convert `setup.py` to `setup.cfg` (Ben Sturmfels)
- Document re-installation of plugins during upgrade [#5611] (Ben Sturmfels)
- Improve usability of report handling page (Rodrigo Martins)
- Remove unused `extlib/flask-wtf` code (Ben Sturmfels)
- Remove unused `translitcodec` dependency (Ben Sturmfels)
- Remove references to previous `tinymce` JS dependency (Ben Sturmfels)
- Remove plugin for decommissioned Mozilla Persona (Jgart)
- Remove Debian 10 development Dockerfile (BenSturmfels)
- Document running multiple MediaGoblin instances on one server (Ben Sturmfels)
- Begin conversion from jQuery to vanilla JS (Ben Sturmfels)

**Bug fixes:**

- Fix test suite on Debian 11 (Ben Sturmfels)
- Remove reference to jsonschema.compat no longer available upstream (Marco Pessotto)
- Fix images being marked as failed after Celery restart [#5608] (Ben Sturmfels)
- Fix app logging calls not showing in Celery logs (Ben Sturmfels)


0.11.0
======

Following our final Python 2-compatible release of 0.10.0, this release drops
support for Python 2 and removes all Python 2 compatibility code.

This release also reinstates audio spectrograms with a completely rewritten
Python 3 replacement for the previous Python 2-only audio feature by Fernando
Gutierrez.

**Upgrading:**

For detailed instructions on installing or upgrading, see ":doc:`deploying`" and
":doc:`upgrading`".

If you have any problems, please drop in to the `#mediagoblin IRC chat
<https://webchat.freenode.net/#mediagoblin>`_, report an issue on our `issue
tracker <https://issues.mediagoblin.org/>`_ or drop us an email to
`mediagoblin-devel@gnu.org <mailto:mediagoblin-devel@gnu.org>`_.

**Improvements:**

- Run test for LDAP, OpenID and PDF plugins in development Dockerfiles (Ben Sturmfels)
- Add Debian and Fedora CI builds for sourcehut (Jesús E, Ben Sturmfels)
- Extend Fedora install docs and development Dockerfile to support audio/video (Ben Sturmfels)
- Remove Python 2 installation and compatibility code (Ben Sturmfels)
- Reinstate Python 3 audio spectrograms [#5610] (Fernando Gutierrez)

**Bug fixes:**

- Fix missing download link for videos uploaded after 0.10.0 [#5620] (Ben Sturmfels)
- Fix raw image plugin installation instruction [#5523] (Ben Sturmfels)
- Pin sqlalchemy to fix due to changed internals [#5624] (Charlotte Koch)
- Fix test suite to pass 100% (Ben Sturmfels)
- Make LDAP plugin Python 3 compatible [#5607] (Olivier Mehani)
- Support blank titles in Atom feed [#1018] (Ben Sturmfels)
- Avoid Celery/RabbitMQ "connection reset" errors [#5609] (Fernando Gutierrez)
- Fix Mac dev setup issues [#5442] (Jeremy Bowman)
- Pin a compatible version of WTForms (milquetoast)


0.10.0
======

This release includes video subtitles and multiple video qualities and a swathe
of smaller improvements and bug-fixes listed below.

Python 3 is now the default when you install MediaGoblin and is strongly
recommended. Python 2 installation is still supported in this release with
`./configure --without-python3`, but support will likely be removed in the next
release.

FastCGI support has now been deprecated and removed from the documentation as
our dependency `flup` does not support Python 3.

**Upgrading:**

For detailed instructions on installing or upgrading, see ":doc:`deploying`" and
":doc:`upgrading`".

If you have any problems, please drop in to the `#mediagoblin IRC chat
<https://webchat.freenode.net/#mediagoblin>`_, report an issue on our `issue
tracker <https://issues.mediagoblin.org/>`_ or drop us an email to
`mediagoblin-devel@gnu.org <mailto:mediagoblin-devel@gnu.org>`_.

**Highlights:**

- New video subtitles plugin (Saksham Agrawal) see [mailing list post](https://lists.gnu.org/archive/html/mediagoblin-devel/2016-08/msg00002.html)
- Multiple video qualities (Vijeth Aradhya), see [blog post](https://vijetharadhya.wordpress.com/2017/08/24/gsoc-17-wrap-up-gnu-mediagoblin/)
   
**Smaller improvements:**

- Make the user panel default to open and remember preference in local storage (Matt Deal)
- Use OSM tiles in Geolocation plugin (Olivier Mehani)
- Add thumbnail image to Atom feed (Ben Sturmfels)
- Add links in site-admin documentation foreword (Alexandre Franke)
- Add media_titleinfo template hook (Andrew Browning)
- Add video icon to collection thumbnail (Andrew Browning)
- Use AJAX for posting comments (Vijeth Aradhya)
- Show transcoding progress (Vijeth Aradhya)
- Add collection option to 'addmedia' cli uploading (Stéphane Péchard)
- Add creator to filter collections (Stéphane Péchard)
- Add ARIA attributes to audio player (Boris Bobrov)
- Remove tinymce from dependencies (Boris Bobrov)
- Add register_captcha template hook (Andrew Browning)
- Switch to rabbitmq by default and in docs (Boris Bobrov)
- Log IP address for failed login (Andrew Browning)
- Handle collection in batchaddmedia command (Simen Heggestøyl)
- Allow API upload filename to be provided using custom header (Romain Porte)
- Add tags in API (view them and edit them) (Romain Porte)
- Remove use of mediagoblin_local.ini (Boris Bobrov)
- EXIF rotation to make the image portrait on demand (chrysn)
- Add moderation panel thumbnail header [#5563] (Andrew Browning)
- Add Creative Commons 4.0 licenses [#955] (Dpg)
- Add Python 2 & 3 Docker files for MediaGoblin hacking (Ben Sturmfels)
- Add Python 3 docker-compose recipe for MediaGoblin hacking (Ben Sturmfels)
- Add basic duplicate detection/prevention for batchaddmedia (Ben Sturmfels)
- Add datetime_format config option (Olivier Mehani)
- Extend install instructions for raven plugin (Ben Sturmfels)
- Add visual feedback on link hover (Muto)
- Document SSL/TLS SMTP options (Ben Sturmfels)
- Remove flup and fastcgi from documentation  (Michael Lynch)
- Switch to Python 3 by default (Ben Sturmfels)
- Add Python 2 deprecation warning [#5598] (Ben Sturmfels)
- Review and update the deploment docs for Debian 10 and CentOS 8 [#5593] (Ben Sturmfels)

**Bug fixes:**

- Pass test paths to py.test via tox (Boris Bobrov)
- Length check for login form (Jonathan Sandoval)
- Add padding around form field labels (Josh Crompton)
- Fix unhelpful SMTP error (Johnathan Sandoval)
- Fix the blog_delete page for admins (宋文武)
- Fix add_message inconsistencies [#5451] (Andrew Browning)
- Handle no mail server configured (Jonathan Sandoval)
- Fixed 'older' and 'newer' arrows for rtl locales (Leah Velleman)
- Prevent erroring out in some cases of checking video metadata (Christopher Allan Webber)
- Cleanup to avoid duplicated get_upload_file_limits [#928] (Loic Dachary)
- Attempt to change email without login [#5462] (Andrew Browning)
- Fix text wrapping on thumbnail (Matt Deal)
- Modify setup.py version syntax to address #5464 (Andrew Browning)
- Fix Python 3 support in pagination (Ben Sturmfels)
- Fix typo in user processing panel (Andrew Browning)
- Fix text overflow in media headings [#664] (Andrew Browning)
- Removed line breaks around the verifier code (vijeth-aradhya)
- Fix UnicodeEncodeError in atom feed [#5500] (Andrew Browning)
- Commit session after alembic updates have finished (Boris Bobrov)
- Add cascade to blog mediatype [#5308] (Robert Smith)
- Remove mongodb-related stuff (Boris Bobrov)
- Remove exif from blog posts [#830] (Andrew Browning)
- Can't delete blog post drafts [#5513] (ayleph)
- Fix add to Collection causes server error [#5514] (ayleph)
- Fix zero division error in exif.py [#5524] (Andrew Browning)
- Support Unicode characters in configuration values (Simen Heggestøyl)
- Make admin panel headers readable in Airy theme (Simen Heggestøyl)
- Port batchaddmedia command to Python 3 (Simen Heggestøyl)
- Fix location of host-meta.xml file [#5543] (Andrew Browning)
- Replaced /bin/celeryd by /bin/celery in lazycelery (Romain Porte)
- Prevent video plugin from processing svg [#934] (Andrew Browning)
- Process videos with incorrect date tags [#5409] (Andrew Browning)
- Fix 2 errors in editor views (ĎÚβĨŐÚŚ Dod)
- Fix server crash on blog about page [#5572] (Andrew Browning)
- Fix default gmg help message (Boris Bobrov)
- Remove requirement for the file to be with single dot in name (Boris Bobrov)
- Fix auth error and simplify url and email checks (Boris Bobrov)
- Finally fix url validator (Boris Bobrov)
- Always guess the same filetype (Boris Bobrov)
- Fix bulkupload documentation example (Ben Sturmfels)
- Fix URL-based importing with batchaddmedia command (Ben Sturmfels)
- Update metadata_display plugin for Python 3 (Ben Sturmfels)
- Various Guix-related installation fixes/updates (Ben Sturmfels)
- Even up top/bottom margins around header dropdown button (Ben Sturmfels)
- Prevent warning when importing GstPbutils (Ben Sturmfels)
- Pin werkzeug < 1.0.0, handle moved SharedDataMiddleware in werkzeug >= 0.15.0 (Ben Sturmfels)
- Remove audio spectrograms due to instability and lack of Python 3 support (Ben Sturmfels)
- Decode request.query_string before use (Ben Sturmfels)
- Pin jinja2<3.0.0 due to use of f-strings (Ben Sturmfels)
- Fix "KeyError: 'No such transport: sqlite.  Did you mean sqla?'" in tests (Ben Sturmfels)
- Unmute videos by default (Ben Sturmfels)
- Properly quote --without-python3 in docs (#5596) (Ben Sturmfels)
- Pin all Python 2 dependencies allowing patch version upgrades [#5595] (Ben Sturmfels)

   

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 https://git.savannah.gnu.org/git/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 https://git.savannah.gnu.org/git/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 https://git.savannah.gnu.org/git/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 documentation 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 migration 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
PostgreSQL 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 PostgreSQL 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 existent!) 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
transition 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**

* As mentioned above, we now have a plugable Authentication system. You can
  use any combination of the multiple authentication systems 
  (:ref:`basic_auth-chapter`, Persona, :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 configure 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 redundant 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 requiring the "webob" package anymore.

* And many small fixes/improvements, too numerous to list!


0.3.2
=====

This will be the last release that is capable of converting from an earlier
MongoDB-based MediaGoblin instance to the newer SQL-based system.

**Do this to upgrade**

    # 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**

* **3d model support!**

  You can now upload STL and OBJ files and display them in
  MediaGoblin.  Requires a recent Blender; for details see:
  :ref:`deploying-chapter`

* **trim_whitespace**

  We bundle the optional plugin trim_whitespace which reduces the size
  of the delivered HTML output by reducing redundant whitespace.

  See :ref:`core-plugin-section` for plugin documentation

* **A new API!**

  It isn't well documented yet but we do have an API.  There is an
  `android application in progress <https://gitorious.org/mediagoblin/mediagoblin-android>`_
  which makes use of it, and there are some demo applications between
  `automgtic <https://github.com/jwandborg/automgtic>`_, an
  automatic media uploader for your desktop
  and `OMGMG <https://github.com/jwandborg/omgmg>`_, an example of
  a web application hooking up to the API.

  This is a plugin, so you have to enable it in your MediaGoblin
  config file by adding a section under [plugins] like::

    [plugins]
    [[mediagoblin.plugins.api]]

  Note that the API works but is not nailed down... the way it is
  called may change in future releases.

* **OAuth login support**

  For applications that use OAuth to connect to the API.

  This is a plugin, so you have to enable it in your MediaGoblin
  config file by adding a section under [plugins] like::

    [plugins]
    [[mediagoblin.plugins.oauth]]

* **Collections**

  We now have user-curated collections support.  These are arbitrary
  galleries that are customizable by users.  You can add media to
  these by clicking on the paperclip icon when logged in and looking
  at a media entry.

* **OpenStreetMap licensing display improvements**

  More accurate display of OSM licensing, and less disruptive: you
  click to "expand" the display of said licensing.

  Geolocation is also now on by default.

* **Miscellaneous visual improvements**

  We've made a number of small visual improvements including newer and
  nicer looking thumbnails and improved checkbox placement.



0.3.1
=====

**Do this to upgrade**

1. Make sure to run ``bin/gmg dbuptdate`` after upgrading.

2. If you set up your server config with an older version of
   MediaGoblin and the MediaGoblin docs, it's possible you don't
   have the "theme static files" alias, so double check to make
   sure that section is there if you are having problems.



**New features**

* **theming support**

  MediaGoblin now also includes theming support, which you can
  read about in the section :ref:`theming-chapter`.

* **flatpages**

  MediaGoblin has a flatpages plugin allowing you to add pages that
  are aren't media-related like "About this site...", "Terms of
  service...", etc.

  See :ref:`core-plugin-section` for plugin documentation


0.3.0
=====

This release has one important change. You need to act when
upgrading from a previous version!

This release changes the database system from MongoDB to
SQL(alchemy). If you want to setup a fresh instance, just
follow the instructions in the deployment chapter. If on
the other hand you want to continue to use one instance,
read on.

To convert your data from MongoDB to SQL(alchemy), you need
to follow these steps:

1. Make sure your MongoDB is still running and has your
   data, it's needed for the conversion.

2. Configure the ``sql_engine`` URI in the config to represent
   your target database (see: :ref:`deploying-chapter`)

3. You need an empty database.

4. Then run the following command::

       bin/gmg [-cf mediagoblin_config.ini] convert_mongo_to_sql

5. Start your server and investigate.

6. That's it.