{"action":"created","comment":{"url":"https://api.github.com/repos/divio/django-cms/pulls/comments/26856030","id":26856030,"diff_hunk":"@@ -11,57 +23,140 @@ What's new in 3.1\n Switch from MPTT to MP\n ======================\n \n-Since django CMS 2.0 we relied on MPTT (Modified Preorder Tree Traversal) for efficiently handling tree structures in the DB.\n-Over the years it proved that MPTT was not fast enough for big tree operations (>1000 pages) and regularly\n-the tree got corrupted because of transactional errors.\n+Since django CMS 2.0 we have relied on MPTT (Modified Preorder Tree Traversal) for efficiently\n+handling tree structures in the database.\n+\n+In 3.1, `Django MPTT <https://github.com/django-mptt/django-mptt>`_ has been replaced by\n+`django-treebeard <https://github.com/tabo/django-treebeard>`_, to improve performance and\n+reliability.\n+\n+Over the years MPTT has proved not to be fast enough for big tree operations (>1000 pages); tree\n+corruption, because of transactional errors, has also been a problem.\n+","path":"docs/upgrade/3.1.rst","position":35,"original_position":35,"commit_id":"d75b8599c6a7fa7ec2c6a03e59ed8558f2fd3d05","original_commit_id":"1afbee86650b76f7531aa4f813d63904df862ce1","user":{"login":"mkoistinen","id":615759,"avatar_url":"https://avatars.githubusercontent.com/u/615759?v=3","gravatar_id":"","url":"https://api.github.com/users/mkoistinen","html_url":"https://github.com/mkoistinen","followers_url":"https://api.github.com/users/mkoistinen/followers","following_url":"https://api.github.com/users/mkoistinen/following{/other_user}","gists_url":"https://api.github.com/users/mkoistinen/gists{/gist_id}","starred_url":"https://api.github.com/users/mkoistinen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mkoistinen/subscriptions","organizations_url":"https://api.github.com/users/mkoistinen/orgs","repos_url":"https://api.github.com/users/mkoistinen/repos","events_url":"https://api.github.com/users/mkoistinen/events{/privacy}","received_events_url":"https://api.github.com/users/mkoistinen/received_events","type":"User","site_admin":false},"body":"It is my understanding that MPTT (Modified Preorder Tree Traversal) is a general logical topic and that both django-mptt and django-treebeard implement concrete solutions around this. This above reads like MPTT is a product that we have abandoned in favour of Materialized Path. I don't think this is correct. I think we should replace \"MPTT\" with \"django-mptt\" in the above paragraph, and in the one below.","created_at":"2015-03-20T17:01:07Z","updated_at":"2015-03-20T17:01:07Z","html_url":"https://github.com/divio/django-cms/pull/3963#discussion_r26856030","pull_request_url":"https://api.github.com/repos/divio/django-cms/pulls/3963","_links":{"self":{"href":"https://api.github.com/repos/divio/django-cms/pulls/comments/26856030"},"html":{"href":"https://github.com/divio/django-cms/pull/3963#discussion_r26856030"},"pull_request":{"href":"https://api.github.com/repos/divio/django-cms/pulls/3963"}}},"pull_request":{"url":"https://api.github.com/repos/divio/django-cms/pulls/3963","id":31448988,"html_url":"https://github.com/divio/django-cms/pull/3963","diff_url":"https://github.com/divio/django-cms/pull/3963.diff","patch_url":"https://github.com/divio/django-cms/pull/3963.patch","issue_url":"https://api.github.com/repos/divio/django-cms/issues/3963","number":3963,"state":"open","locked":false,"title":"Work in progress, release notes for 3.1","user":{"login":"evildmp","id":86222,"avatar_url":"https://avatars.githubusercontent.com/u/86222?v=3","gravatar_id":"","url":"https://api.github.com/users/evildmp","html_url":"https://github.com/evildmp","followers_url":"https://api.github.com/users/evildmp/followers","following_url":"https://api.github.com/users/evildmp/following{/other_user}","gists_url":"https://api.github.com/users/evildmp/gists{/gist_id}","starred_url":"https://api.github.com/users/evildmp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/evildmp/subscriptions","organizations_url":"https://api.github.com/users/evildmp/orgs","repos_url":"https://api.github.com/users/evildmp/repos","events_url":"https://api.github.com/users/evildmp/events{/privacy}","received_events_url":"https://api.github.com/users/evildmp/received_events","type":"User","site_admin":false},"body":"**Do not merge**!","created_at":"2015-03-18T16:56:30Z","updated_at":"2015-03-20T17:01:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1e9b7a7939a45ccce08aa664dbca67e8ffec22a4","assignee":null,"milestone":{"url":"https://api.github.com/repos/divio/django-cms/milestones/26","html_url":"https://github.com/divio/django-cms/milestones/3.1","labels_url":"https://api.github.com/repos/divio/django-cms/milestones/26/labels","id":631652,"number":26,"title":"3.1","description":"The next major consolidation release of django CMS\r\n\r\nThis release will:\r\n\r\n* consolidate progress made in 3.0\r\n* establish a safe, solid base for future more ambitious work\r\n* maintain maximum backwards compatibility for third-party applications\r\n* re-engage 2.x users who feel alienated, improve upgrade path from 2.x\r\n* identify and tidy loose ends\r\n* identify and soften pain points\r\n","creator":{"login":"mkoistinen","id":615759,"avatar_url":"https://avatars.githubusercontent.com/u/615759?v=3","gravatar_id":"","url":"https://api.github.com/users/mkoistinen","html_url":"https://github.com/mkoistinen","followers_url":"https://api.github.com/users/mkoistinen/followers","following_url":"https://api.github.com/users/mkoistinen/following{/other_user}","gists_url":"https://api.github.com/users/mkoistinen/gists{/gist_id}","starred_url":"https://api.github.com/users/mkoistinen/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mkoistinen/subscriptions","organizations_url":"https://api.github.com/users/mkoistinen/orgs","repos_url":"https://api.github.com/users/mkoistinen/repos","events_url":"https://api.github.com/users/mkoistinen/events{/privacy}","received_events_url":"https://api.github.com/users/mkoistinen/received_events","type":"User","site_admin":false},"open_issues":69,"closed_issues":97,"state":"open","created_at":"2014-04-16T11:31:06Z","updated_at":"2015-03-19T16:48:38Z","due_on":"2015-03-31T22:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/divio/django-cms/pulls/3963/commits","review_comments_url":"https://api.github.com/repos/divio/django-cms/pulls/3963/comments","review_comment_url":"https://api.github.com/repos/divio/django-cms/pulls/comments{/number}","comments_url":"https://api.github.com/repos/divio/django-cms/issues/3963/comments","statuses_url":"https://api.github.com/repos/divio/django-cms/statuses/d75b8599c6a7fa7ec2c6a03e59ed8558f2fd3d05","head":{"label":"evildmp:release-notes","ref":"release-notes","sha":"d75b8599c6a7fa7ec2c6a03e59ed8558f2fd3d05","user":{"login":"evildmp","id":86222,"avatar_url":"https://avatars.githubusercontent.com/u/86222?v=3","gravatar_id":"","url":"https://api.github.com/users/evildmp","html_url":"https://github.com/evildmp","followers_url":"https://api.github.com/users/evildmp/followers","following_url":"https://api.github.com/users/evildmp/following{/other_user}","gists_url":"https://api.github.com/users/evildmp/gists{/gist_id}","starred_url":"https://api.github.com/users/evildmp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/evildmp/subscriptions","organizations_url":"https://api.github.com/users/evildmp/orgs","repos_url":"https://api.github.com/users/evildmp/repos","events_url":"https://api.github.com/users/evildmp/events{/privacy}","received_events_url":"https://api.github.com/users/evildmp/received_events","type":"User","site_admin":false},"repo":{"id":1870038,"name":"django-cms","full_name":"evildmp/django-cms","owner":{"login":"evildmp","id":86222,"avatar_url":"https://avatars.githubusercontent.com/u/86222?v=3","gravatar_id":"","url":"https://api.github.com/users/evildmp","html_url":"https://github.com/evildmp","followers_url":"https://api.github.com/users/evildmp/followers","following_url":"https://api.github.com/users/evildmp/following{/other_user}","gists_url":"https://api.github.com/users/evildmp/gists{/gist_id}","starred_url":"https://api.github.com/users/evildmp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/evildmp/subscriptions","organizations_url":"https://api.github.com/users/evildmp/orgs","repos_url":"https://api.github.com/users/evildmp/repos","events_url":"https://api.github.com/users/evildmp/events{/privacy}","received_events_url":"https://api.github.com/users/evildmp/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/evildmp/django-cms","description":"An Advanced Django CMS.","fork":true,"url":"https://api.github.com/repos/evildmp/django-cms","forks_url":"https://api.github.com/repos/evildmp/django-cms/forks","keys_url":"https://api.github.com/repos/evildmp/django-cms/keys{/key_id}","collaborators_url":"https://api.github.com/repos/evildmp/django-cms/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/evildmp/django-cms/teams","hooks_url":"https://api.github.com/repos/evildmp/django-cms/hooks","issue_events_url":"https://api.github.com/repos/evildmp/django-cms/issues/events{/number}","events_url":"https://api.github.com/repos/evildmp/django-cms/events","assignees_url":"https://api.github.com/repos/evildmp/django-cms/assignees{/user}","branches_url":"https://api.github.com/repos/evildmp/django-cms/branches{/branch}","tags_url":"https://api.github.com/repos/evildmp/django-cms/tags","blobs_url":"https://api.github.com/repos/evildmp/django-cms/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/evildmp/django-cms/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/evildmp/django-cms/git/refs{/sha}","trees_url":"https://api.github.com/repos/evildmp/django-cms/git/trees{/sha}","statuses_url":"https://api.github.com/repos/evildmp/django-cms/statuses/{sha}","languages_url":"https://api.github.com/repos/evildmp/django-cms/languages","stargazers_url":"https://api.github.com/repos/evildmp/django-cms/stargazers","contributors_url":"https://api.github.com/repos/evildmp/django-cms/contributors","subscribers_url":"https://api.github.com/repos/evildmp/django-cms/subscribers","subscription_url":"https://api.github.com/repos/evildmp/django-cms/subscription","commits_url":"https://api.github.com/repos/evildmp/django-cms/commits{/sha}","git_commits_url":"https://api.github.com/repos/evildmp/django-cms/git/commits{/sha}","comments_url":"https://api.github.com/repos/evildmp/django-cms/comments{/number}","issue_comment_url":"https://api.github.com/repos/evildmp/django-cms/issues/comments{/number}","contents_url":"https://api.github.com/repos/evildmp/django-cms/contents/{+path}","compare_url":"https://api.github.com/repos/evildmp/django-cms/compare/{base}...{head}","merges_url":"https://api.github.com/repos/evildmp/django-cms/merges","archive_url":"https://api.github.com/repos/evildmp/django-cms/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/evildmp/django-cms/downloads","issues_url":"https://api.github.com/repos/evildmp/django-cms/issues{/number}","pulls_url":"https://api.github.com/repos/evildmp/django-cms/pulls{/number}","milestones_url":"https://api.github.com/repos/evildmp/django-cms/milestones{/number}","notifications_url":"https://api.github.com/repos/evildmp/django-cms/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/evildmp/django-cms/labels{/name}","releases_url":"https://api.github.com/repos/evildmp/django-cms/releases{/id}","created_at":"2011-06-09T09:38:44Z","updated_at":"2014-09-06T21:50:51Z","pushed_at":"2015-03-20T16:59:53Z","git_url":"git://github.com/evildmp/django-cms.git","ssh_url":"git@github.com:evildmp/django-cms.git","clone_url":"https://github.com/evildmp/django-cms.git","svn_url":"https://github.com/evildmp/django-cms","homepage":"http://www.django-cms.org","size":41235,"stargazers_count":2,"watchers_count":2,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":2,"default_branch":"master"}},"base":{"label":"divio:develop","ref":"develop","sha":"dca734a084991395ea4a3f1a9a858f8b474bd315","user":{"login":"divio","id":117904,"avatar_url":"https://avatars.githubusercontent.com/u/117904?v=3","gravatar_id":"","url":"https://api.github.com/users/divio","html_url":"https://github.com/divio","followers_url":"https://api.github.com/users/divio/followers","following_url":"https://api.github.com/users/divio/following{/other_user}","gists_url":"https://api.github.com/users/divio/gists{/gist_id}","starred_url":"https://api.github.com/users/divio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/divio/subscriptions","organizations_url":"https://api.github.com/users/divio/orgs","repos_url":"https://api.github.com/users/divio/repos","events_url":"https://api.github.com/users/divio/events{/privacy}","received_events_url":"https://api.github.com/users/divio/received_events","type":"Organization","site_admin":false},"repo":{"id":143580,"name":"django-cms","full_name":"divio/django-cms","owner":{"login":"divio","id":117904,"avatar_url":"https://avatars.githubusercontent.com/u/117904?v=3","gravatar_id":"","url":"https://api.github.com/users/divio","html_url":"https://github.com/divio","followers_url":"https://api.github.com/users/divio/followers","following_url":"https://api.github.com/users/divio/following{/other_user}","gists_url":"https://api.github.com/users/divio/gists{/gist_id}","starred_url":"https://api.github.com/users/divio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/divio/subscriptions","organizations_url":"https://api.github.com/users/divio/orgs","repos_url":"https://api.github.com/users/divio/repos","events_url":"https://api.github.com/users/divio/events{/privacy}","received_events_url":"https://api.github.com/users/divio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/divio/django-cms","description":"The easy-to-use and developer-friendly CMS","fork":false,"url":"https://api.github.com/repos/divio/django-cms","forks_url":"https://api.github.com/repos/divio/django-cms/forks","keys_url":"https://api.github.com/repos/divio/django-cms/keys{/key_id}","collaborators_url":"https://api.github.com/repos/divio/django-cms/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/divio/django-cms/teams","hooks_url":"https://api.github.com/repos/divio/django-cms/hooks","issue_events_url":"https://api.github.com/repos/divio/django-cms/issues/events{/number}","events_url":"https://api.github.com/repos/divio/django-cms/events","assignees_url":"https://api.github.com/repos/divio/django-cms/assignees{/user}","branches_url":"https://api.github.com/repos/divio/django-cms/branches{/branch}","tags_url":"https://api.github.com/repos/divio/django-cms/tags","blobs_url":"https://api.github.com/repos/divio/django-cms/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/divio/django-cms/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/divio/django-cms/git/refs{/sha}","trees_url":"https://api.github.com/repos/divio/django-cms/git/trees{/sha}","statuses_url":"https://api.github.com/repos/divio/django-cms/statuses/{sha}","languages_url":"https://api.github.com/repos/divio/django-cms/languages","stargazers_url":"https://api.github.com/repos/divio/django-cms/stargazers","contributors_url":"https://api.github.com/repos/divio/django-cms/contributors","subscribers_url":"https://api.github.com/repos/divio/django-cms/subscribers","subscription_url":"https://api.github.com/repos/divio/django-cms/subscription","commits_url":"https://api.github.com/repos/divio/django-cms/commits{/sha}","git_commits_url":"https://api.github.com/repos/divio/django-cms/git/commits{/sha}","comments_url":"https://api.github.com/repos/divio/django-cms/comments{/number}","issue_comment_url":"https://api.github.com/repos/divio/django-cms/issues/comments{/number}","contents_url":"https://api.github.com/repos/divio/django-cms/contents/{+path}","compare_url":"https://api.github.com/repos/divio/django-cms/compare/{base}...{head}","merges_url":"https://api.github.com/repos/divio/django-cms/merges","archive_url":"https://api.github.com/repos/divio/django-cms/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/divio/django-cms/downloads","issues_url":"https://api.github.com/repos/divio/django-cms/issues{/number}","pulls_url":"https://api.github.com/repos/divio/django-cms/pulls{/number}","milestones_url":"https://api.github.com/repos/divio/django-cms/milestones{/number}","notifications_url":"https://api.github.com/repos/divio/django-cms/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/divio/django-cms/labels{/name}","releases_url":"https://api.github.com/repos/divio/django-cms/releases{/id}","created_at":"2009-03-05T10:14:18Z","updated_at":"2015-03-20T14:35:30Z","pushed_at":"2015-03-20T16:59:54Z","git_url":"git://github.com/divio/django-cms.git","ssh_url":"git@github.com:divio/django-cms.git","clone_url":"https://github.com/divio/django-cms.git","svn_url":"https://github.com/divio/django-cms","homepage":"http://www.django-cms.org","size":57817,"stargazers_count":3295,"watchers_count":3295,"language":"Gettext Catalog","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1264,"mirror_url":null,"open_issues_count":257,"forks":1264,"open_issues":257,"watchers":3295,"default_branch":"develop"}},"_links":{"self":{"href":"https://api.github.com/repos/divio/django-cms/pulls/3963"},"html":{"href":"https://github.com/divio/django-cms/pull/3963"},"issue":{"href":"https://api.github.com/repos/divio/django-cms/issues/3963"},"comments":{"href":"https://api.github.com/repos/divio/django-cms/issues/3963/comments"},"review_comments":{"href":"https://api.github.com/repos/divio/django-cms/pulls/3963/comments"},"review_comment":{"href":"https://api.github.com/repos/divio/django-cms/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/divio/django-cms/pulls/3963/commits"},"statuses":{"href":"https://api.github.com/repos/divio/django-cms/statuses/d75b8599c6a7fa7ec2c6a03e59ed8558f2fd3d05"}}}}