<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.mipt.ru/index.php?action=history&amp;feed=atom&amp;title=Development%3ABackup_2.0_overview</id>
	<title>Development:Backup 2.0 overview - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.mipt.ru/index.php?action=history&amp;feed=atom&amp;title=Development%3ABackup_2.0_overview"/>
	<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:Backup_2.0_overview&amp;action=history"/>
	<updated>2026-05-07T14:21:26Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>http://wiki.mipt.ru/index.php?title=Development:Backup_2.0_overview&amp;diff=10842&amp;oldid=prev</id>
		<title>Олег Давидович: 1 версия импортирована</title>
		<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:Backup_2.0_overview&amp;diff=10842&amp;oldid=prev"/>
		<updated>2024-10-21T08:51:01Z</updated>

		<summary type="html">&lt;p&gt;1 версия импортирована&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 08:51, 21 октября 2024&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Олег Давидович</name></author>
	</entry>
	<entry>
		<id>http://wiki.mipt.ru/index.php?title=Development:Backup_2.0_overview&amp;diff=10841&amp;oldid=prev</id>
		<title>1&gt;Stronk7: New page: {{Template:Development:Backup 2.0}}{{Moodle_2.0}}__NOTOC__{{Work in progress}}  == Non-functional requirements ==  * Change format dramatically, splitting current monolithic moodle.xml int...</title>
		<link rel="alternate" type="text/html" href="http://wiki.mipt.ru/index.php?title=Development:Backup_2.0_overview&amp;diff=10841&amp;oldid=prev"/>
		<updated>2010-04-25T10:07:44Z</updated>

		<summary type="html">&lt;p&gt;New page: {{Template:Development:Backup 2.0}}{{Moodle_2.0}}__NOTOC__{{Work in progress}}  == Non-functional requirements ==  * Change format dramatically, splitting current monolithic moodle.xml int...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Template:Development:Backup 2.0}}{{Moodle_2.0}}__NOTOC__{{Work in progress}}&lt;br /&gt;
&lt;br /&gt;
== Non-functional requirements ==&lt;br /&gt;
&lt;br /&gt;
* Change format dramatically, splitting current monolithic moodle.xml into smaller pieces (1xplugin, 1xusers, 1xroles, 1x...). Working in experimental way since 1.9, proved to be great for speed (saves ~20 repeated parsings of the whole file). No dependencies from previous stuff at all.&lt;br /&gt;
* Change the current &amp;quot;xmlize&amp;quot; approach when restoring files to one new progressive_parser instead. Each part of restore will decide how it wants to receive the information and who is in charge of processing it. Great for memory.&lt;br /&gt;
* Allow 1-activity, 1-section and 1-course backup. Use different shells/envelopes for any type of backup, keeping the &amp;quot;content&amp;quot; the same.&lt;br /&gt;
* Unify all multiple backup variations (course backup, course export, silent backup, scheduled backup) into a single codebase. Same for multiple restore.&lt;br /&gt;
* Backup and restore execution function (only ONE function, the executor!!) will be &amp;quot;blind&amp;quot;: They won&amp;#039;t perform decisions based on (changing) roles/capabilities/configuration settings any more. One master &amp;quot;backup_director&amp;quot; object will direct them once the object has performed all validations and ensured the process is executable. That director will handle/decide/instruct the executor about output/logging and everything else.&lt;br /&gt;
* Store complete information about any backup/restore performed in the site. This will include all the information for the the director (array-serialised) and the results of the executor. And obviously all the logged info cached when running.&lt;br /&gt;
* Important UI changes:&lt;br /&gt;
** UI won&amp;#039;t make any processes! (like pre-calculating, or post-checks and friends). It will be completely separate from the &amp;quot;director&amp;quot; and the &amp;quot;executor&amp;quot;.&lt;br /&gt;
** Complete site/user defaults&lt;br /&gt;
** View the backup/restore form in &amp;quot;course&amp;quot; organisation (inline? nah for 2.0 IMO) instead of grouped by activity mode. Surely over multiple configuration &amp;quot;steps&amp;quot;.&lt;br /&gt;
** Bunch of new detail-options (restore section descriptions, overwrite course settings..., usually requested).&lt;br /&gt;
* Reuse code like crazy. Some things like the &amp;quot;id-remapping&amp;quot; on restore, the logs output, the &amp;quot;flush&amp;quot; output and so on will be central and any point of restore will be able to request that &amp;quot;services&amp;quot; or &amp;quot;utilities&amp;quot; when desired in a easy way (mini PHP-API to define things in a declarative way VS one/multiple helpful backup/restore &amp;quot;utilities&amp;quot; classes).&lt;br /&gt;
&lt;br /&gt;
== Preliminary notes ==&lt;br /&gt;
&lt;br /&gt;
=== Splitting information ===&lt;br /&gt;
&lt;br /&gt;
* All the existing/required caps define behaviour for each one.&lt;br /&gt;
* All the zones and splitter.&lt;br /&gt;
* Files backup/ restore.&lt;br /&gt;
* 1.9 =&amp;gt; 2.0 transformations.&lt;br /&gt;
* Shells, separate structure and activities/blocks.&lt;br /&gt;
* Backup by &amp;quot;context&amp;quot;. Each &amp;quot;context&amp;quot;(or inner items) will have:&lt;br /&gt;
** users&lt;br /&gt;
** groups&lt;br /&gt;
** files&lt;br /&gt;
** logs&lt;br /&gt;
** blocks&lt;br /&gt;
** role definitions&lt;br /&gt;
** role assignments&lt;br /&gt;
** role overrides&lt;br /&gt;
** completion info&lt;br /&gt;
** conditional info&lt;br /&gt;
** comments&lt;br /&gt;
** tags&lt;br /&gt;
** questions and categories&lt;br /&gt;
** gradebook: scales/outcomes and &amp;quot;activity grade items&amp;quot;.&lt;br /&gt;
** gradebook: agregations/calculations and categories.&lt;br /&gt;
** filters&lt;br /&gt;
** metadata&lt;br /&gt;
** messages&lt;br /&gt;
** events&lt;br /&gt;
** blogs&lt;br /&gt;
(alternatively, all these parts can be found at the end of the backup file, globally for all contexts)&lt;br /&gt;
&lt;br /&gt;
=== CZ Hackfest thoughts ===&lt;br /&gt;
&lt;br /&gt;
* Need stamps for users (perhaps not because of MDL-16658) and roles (like question/categories ones) to guarantee uniqueness.&lt;br /&gt;
* Need to decide about backup file names (moving from .zip to .xxx). Multiple extensions or prefixed info to &amp;quot;tell more&amp;quot; about the backup type.&lt;br /&gt;
* 1.9 =&amp;gt; 2.0 restore:&lt;br /&gt;
** Really complex, needs to mimic all current logic in upgrade.php scripts:&lt;br /&gt;
*** xml transformations --&amp;gt; relatively easy&lt;br /&gt;
*** files migration (course and moddata)&lt;br /&gt;
*** wiki, resources, workshop transformations (complex)&lt;br /&gt;
*** incoming question bank changes.&lt;br /&gt;
*** surely other stuff (comments, messages, blogs)&lt;br /&gt;
** Possible solutions:&lt;br /&gt;
*** How:&lt;br /&gt;
**** Reuse as much as possible code from upgrade scripts. Not everything is re-usable (bulk changes).&lt;br /&gt;
**** Re-implement all the logic in restore.&lt;br /&gt;
**** Forgetting about it&lt;br /&gt;
*** When:&lt;br /&gt;
**** In one step, so Moodle 2.0 will natively-on-the-fly be able to process 1.9 files. Impossible!&lt;br /&gt;
**** Keep it within Moodle, so conversion will be executed transparently immediately before restore (in the original plan at [[Development:Backup 2.0 multiple formats]]. &lt;br /&gt;
**** Completely separate utility, so files need to be transformed before being accepted by restore.&lt;br /&gt;
**** Never&lt;br /&gt;
*** Where:&lt;br /&gt;
**** Restore everything into some duplicate tables in order to do the conversion there.&lt;br /&gt;
**** Do that into memory/some specialised tables not duplicating anything.&lt;br /&gt;
**** Nowhere&lt;br /&gt;
* Scheduled backups (it&amp;#039;s just a &amp;quot;timed&amp;quot; backup iterator). Do we want it to continue being part of Moodle or have a separate utility. Using moodle cron or its own one?&lt;br /&gt;
* Incremental backup/restore. Is also a external thing. We provide constant &amp;quot;content&amp;quot; by separating envelopes and content, but all the &amp;quot;diff&amp;quot;, &amp;quot;patch&amp;quot; stuff is no related with Moodle at all.&lt;br /&gt;
* Structures over course level. They are a pain. Can lead to non-restorable courses or differently-behaviour courses.&lt;br /&gt;
* ... more ideas/things..&lt;/div&gt;</summary>
		<author><name>1&gt;Stronk7</name></author>
	</entry>
</feed>