https://wiki.mahara.org/api.php?action=feedcontributions&user=Dianne.tennent&feedformat=atomMahara Wiki - User contributions [en-gb]2024-03-28T17:47:16ZUser contributionsMediaWiki 1.35.10https://wiki.mahara.org/index.php?title=Testing_Area/Visual_regression_testing&diff=13336Testing Area/Visual regression testing2022-07-18T21:35:49Z<p>Dianne.tennent: </p>
<hr />
<div>===Visual Regression Testing with BackstopJS===<br />
https://github.com/garris/BackstopJS<br />
<br />
This is some documentation of my investigation into using BackstopJS with Mahara. In the end, the fact that the Mahara UI has so many different states that are behaviour driven, means that it would be incredibly time consuming to set up the conditions for these states in the backstop.json config. '''My conclusion was that, if we are to implement automated visual regression testing for Mahara, that it should be integrated with our current BDD test suite, i.e. Behat.''' <br />
<br />
'''Set up:'''<br />
<br />
*'''Create a new directory''' e.g. backstopjsmahara and cd into it<br />
*'''Run <code>npm i backstopjs</code>'''<br />
*'''Run <code>backstop init</code>'''<br />
*'''Get the list of urls from your local site''' with this formula in the console in devtools: '''<code>n=$$('a');for(u in n)console.log(n[u].href),</code>''' or use a web scraper (I used this tutorial to make a simple webscraper with puppeteer: [https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer)]<br />
*'''Create a file called urls.js with the following contents:'''<br />
<br />
<code>const fs = require('fs-extra'); // writes json files</code><br />
<br />
<code>const urls = [url1, url2, etc ...]; // The list of urls</code><br />
<br />
<code>let scenarios = [];</code><br />
<br />
<code>urls.map(string => {</code><br />
<code>let jsonstring = {<br />
"label": string,<br />
"url": "<your domain>" + string,<br />
}<br />
scenarios.push(jsonstring);</code><br />
<code>})</code><br />
<br />
<code>fs.writeJson('scenarios.json', scenarios, (err) => {</code><br />
<code>if (err) throw err;</code><br />
<code>});</code><br />
<br />
*'''Run this file on cli''' with <code>node urls.js</code><br />
<br />
*'''Copy and paste the json array from the generated scenarios.json file into the backstop.json file''' as the value for '''<code>"scenarios": (json array)</code>'''<br />
*'''Make sure your backstop.json file looks like this:'''<br />
<br />
<code>{</code><br />
<code>"viewports": [ {<br />
"name": "Below-480",<br />
"width": 478,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-768",<br />
"width": 766,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-992",<br />
"width": 990,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1200",<br />
"width": 1198,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1440",<br />
"width": 1438,<br />
"height": 730</code><br />
<code>}],</code><br />
<code>"onReadyScript": "puppet/onReady.js",<br />
"scenarios": [{"label":"/module/multirecipientnotification/inbox.php","url":"http://mahara2/module/multirecipientnotification/inbox.php"},</code><br />
<code>{"label":"/user/view.php?id=1", "url": etc...}],</code><br />
<br />
<code>"paths": {<br />
"bitmaps_reference": "backstop_data/bitmaps_reference",<br />
"bitmaps_test": "backstop_data/bitmaps_test",<br />
"casper_scripts": "backstop_data/casper_scripts",<br />
"html_report": "backstop_data/html_report",<br />
"ci_report": "backstop_data/ci_report"<br />
},<br />
"casperFlags": [],<br />
"engine": "puppet",<br />
"engineOptions": {<br />
"headless": true,<br />
"browser": "chromium"<br />
},<br />
"asyncCaptureLimit": 1,<br />
"debug": true,<br />
"report": ["browser"]</code><br />
<code>}</code><br />
<br />
*'''And make sure your puppet/onReady.js file looks like this:'''<br />
<br />
<code>module.exports = async (page, scenario, vp) => {</code><br />
<code>console.log('SCENARIO > ' + scenario.label);<br />
// await require('./clickAndHoverHelper')(page, scenario);<br />
<br />
// add more ready handlers here...<br />
// check for login element<br />
let loggedin;<br />
await Promise.all([<br />
page.goto(scenario.url),<br />
page.waitForSelector('input[name="login_username"]', {timeout: 3000}),<br />
]).then(() => {<br />
loggedin = false;<br />
}).catch(() => {<br />
loggedin = true;<br />
})<br />
<br />
if (!loggedin) {<br />
await page.type('input[name="login_username"]', '<your username>');<br />
await page.type('input[name="login_password"]', '<your password>');<br />
await Promise.all([<br />
page.waitForNavigation({waitUntil: 'networkidle2'}),<br />
page.click('#login_submit'),<br />
]);<br />
await page.waitForTimeout(1000);<br />
} else {<br />
return;<br />
}</code><br />
<code>};</code><br />
<br />
*'''Start by running <code>backstop reference</code>''' - This will create reference screenshots for you to compare with when you run your test.<br />
<br />
*'''Then''' '''make your changes or checkout your test patch'''<br />
<br />
*'''Then run <code>backstop test</code>''' - this will take screenshots and compare them with your reference screenshots<br />
<br />
For some reason the report tries to open in Matrix... But you can view the report results by opening the generated backstop_data/html_report/index.html in a browser. <br />
<br />
If you're happy with one of the test images, then you can run <code>backstop approve</code> and pass a <code>--filter=<image_filename_regex></code> argument to promote that specific test capture matching your scenario filename. The filenames (which by default include scenario and viewport names) are displayed in the visual report.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area/Visual_regression_testing&diff=13335Testing Area/Visual regression testing2022-07-18T21:31:21Z<p>Dianne.tennent: </p>
<hr />
<div>===Visual Regression Testing with BackstopJS===<br />
https://github.com/garris/BackstopJS<br />
<br />
This is some documentation of my investigation into using BackstopJS with Mahara. In the end, the fact that the Mahara UI has so many different states that are behaviour driven, means that it would be incredibly time consuming to set up the conditions for these states in the backstop.json config. '''My conclusion was that, if we are to implement automated visual regression testing for Mahara, that it should be integrated with our current BDD test suite, i.e. Behat.''' <br />
<br />
'''Set up:'''<br />
<br />
*'''Create a new directory''' e.g. backstopjsmahara and cd into it<br />
*'''Run <code>npm i backstopjs</code>'''<br />
*'''Run <code>backstop init</code>'''<br />
*'''Get the list of urls from your local site''' with this formula in the console in devtools: '''<code>n=$$('a');for(u in n)console.log(n[u].href),</code>''' or use a web scraper (I used this tutorial to make a simple webscraper with puppeteer: [https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer)]<br />
*'''Create a file called urls.js with the following contents:'''<br />
<br />
<code>const fs = require('fs-extra'); // writes json files</code><br />
<br />
<code>const urls = [url1, url2, etc ...]; // The list of urls</code><br />
<br />
<code>let scenarios = [];</code><br />
<br />
<code>urls.map(string => {</code><br />
<code>let jsonstring = {<br />
"label": string,<br />
"url": "<your domain>" + string,<br />
}<br />
scenarios.push(jsonstring);</code><br />
<code>})</code><br />
<br />
<code>fs.writeJson('scenarios.json', scenarios, (err) => {</code><br />
<code>if (err) throw err;</code><br />
<code>});</code><br />
<br />
*'''Run this file on cli''' with <code>node urls.js</code><br />
<br />
*'''Copy and paste the json array from the generated scenarios.json file into the backstop.json file''' as the value for '''<code>"scenarios": (json array)</code>'''<br />
*'''Make sure your backstop.json file looks like this:'''<br />
<br />
<code>{</code><br />
<code>"viewports": [ {<br />
"name": "Below-480",<br />
"width": 478,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-768",<br />
"width": 766,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-992",<br />
"width": 990,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1200",<br />
"width": 1198,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1440",<br />
"width": 1438,<br />
"height": 730</code><br />
<code>}],</code><br />
<code>"onReadyScript": "puppet/onReady.js",<br />
"scenarios": [{"label":"/module/multirecipientnotification/inbox.php","url":"http://mahara2/module/multirecipientnotification/inbox.php"},</code><br />
<code>{"label":"/user/view.php?id=1", "url": etc...}],</code><br />
<br />
<code>"paths": {<br />
"bitmaps_reference": "backstop_data/bitmaps_reference",<br />
"bitmaps_test": "backstop_data/bitmaps_test",<br />
"casper_scripts": "backstop_data/casper_scripts",<br />
"html_report": "backstop_data/html_report",<br />
"ci_report": "backstop_data/ci_report"<br />
},<br />
"casperFlags": [],<br />
"engine": "puppet",<br />
"engineOptions": {<br />
"headless": true,<br />
"browser": "chromium"<br />
},<br />
"asyncCaptureLimit": 1,<br />
"debug": true,<br />
"report": ["browser"]</code><br />
<code>}</code><br />
<br />
*'''And make sure your puppet/onReady.js file looks like this:'''<br />
<br />
<code>module.exports = async (page, scenario, vp) => {</code><br />
<code>console.log('SCENARIO > ' + scenario.label);<br />
// await require('./clickAndHoverHelper')(page, scenario);<br />
<br />
// add more ready handlers here...<br />
// check for login element<br />
let loggedin;<br />
await Promise.all([<br />
page.goto(scenario.url),<br />
page.waitForSelector('input[name="login_username"]', {timeout: 3000}),<br />
]).then(() => {<br />
loggedin = false;<br />
}).catch(() => {<br />
loggedin = true;<br />
})<br />
<br />
if (!loggedin) {<br />
await page.type('input[name="login_username"]', 'admin');<br />
await page.type('input[name="login_password"]', 'a');<br />
// let element = await page.$('#login_submit')<br />
// console.log(element);<br />
await Promise.all([<br />
page.waitForNavigation({waitUntil: 'networkidle2'}),<br />
page.click('#login_submit'),<br />
]);<br />
await page.waitForTimeout(1000);<br />
// await page.goto(scenario.url);<br />
} else {<br />
return;<br />
}</code><br />
<code>};</code><br />
<br />
*'''Start by running <code>backstop reference</code>''' - This will create reference screenshots for you to compare with when you run your test.<br />
<br />
*'''Then''' '''make your changes or checkout your test patch'''<br />
<br />
*'''Then run <code>backstop test</code>''' - this will take screenshots and compare them with your reference screenshots<br />
<br />
For some reason the report tries to open in Matrix... But you can view the report results by opening the generated backstop_data/html_report/index.html in a browser. <br />
<br />
If you're happy with one of the test images, then you can run <code>backstop approve</code> and pass a <code>--filter=<image_filename_regex></code> argument to promote that specific test capture matching your scenario filename. The filenames (which by default include scenario and viewport names) are displayed in the visual report.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area/Visual_regression_testing&diff=13334Testing Area/Visual regression testing2022-07-18T21:28:47Z<p>Dianne.tennent: </p>
<hr />
<div>===Visual Regression Testing with BackstopJS===<br />
https://github.com/garris/BackstopJS<br />
<br />
This is some documentation of my investigation into using BackstopJS with Mahara. In the end, the fact that the Mahara UI has so many different states that are behaviour driven, means that it would be incredibly time consuming to set up the conditions for these states in the backstop.json config. '''My conclusion was that, if we are to implement automated visual regression testing for Mahara, that it should be integrated with our current BDD test suite, i.e. Behat.''' <br />
<br />
'''Set up:'''<br />
<br />
*'''Create a new directory''' e.g. backstopjsmahara and cd into it<br />
*'''Run <code>npm i backstopjs</code>'''<br />
*'''Run <code>backstop init</code>'''<br />
*'''Get the list of urls from your local site''' with this formula in the console in devtools: '''<code>n=$$('a');for(u in n)console.log(n[u].href),</code>''' or use a web scraper (I used this tutorial to make a simple webscraper with puppeteer: [https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer)]<br />
*'''Create a file called urls.js with the following contents:'''<br />
<br />
<code>const fs = require('fs-extra'); // writes json files</code><br />
<br />
<code>const urls = [url1, url2, etc ...]; // The list of urls</code><br />
<br />
<code>let scenarios = [];</code><br />
<br />
<code>urls.map(string => {</code><br />
<code>let jsonstring = {<br />
"label": string,<br />
"url": "<your domain>" + string,<br />
}<br />
scenarios.push(jsonstring);</code><br />
<code>})</code><br />
<br />
<code>fs.writeJson('scenarios.json', scenarios, (err) => {</code><br />
<code>if (err) throw err;</code><br />
<code>});</code><br />
<br />
*'''Run this file on cli''' with <code>node urls.js</code><br />
<br />
*'''Copy and paste the json array from the generated scenarios.json file into the backstop.json file''' as the value for '''<code>"scenarios": (json array)</code>'''<br />
*'''Make sure your backstop.json file looks like this:'''<br />
<br />
<code>{</code><br />
<code>"viewports": [ {<br />
"name": "Below-480",<br />
"width": 478,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-768",<br />
"width": 766,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-992",<br />
"width": 990,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1200",<br />
"width": 1198,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1440",<br />
"width": 1438,<br />
"height": 730</code><br />
<code>}],</code><br />
<code>"onReadyScript": "puppet/onReady.js",<br />
"scenarios": [{"label":"/module/multirecipientnotification/inbox.php",<br />
"url":"http://mahara2/module/multirecipientnotification/inbox.php"},<br />
{"label":"/user/view.php?id=1", "url": etc...}],<br />
"paths": {<br />
"bitmaps_reference": "backstop_data/bitmaps_reference",<br />
"bitmaps_test": "backstop_data/bitmaps_test",<br />
"casper_scripts": "backstop_data/casper_scripts",<br />
"html_report": "backstop_data/html_report",<br />
"ci_report": "backstop_data/ci_report"<br />
},<br />
"casperFlags": [],<br />
"engine": "puppet",<br />
"engineOptions": {<br />
"headless": true,<br />
"browser": "chromium"<br />
},<br />
"asyncCaptureLimit": 1,<br />
"debug": true,<br />
"report": ["browser"]</code><br />
<code>}</code><br />
<br />
*'''And make sure your puppet/onReady.js file looks like this:'''<br />
<br />
<code>module.exports = async (page, scenario, vp) => {</code><br />
<code>console.log('SCENARIO > ' + scenario.label);<br />
// await require('./clickAndHoverHelper')(page, scenario);<br />
<br />
// add more ready handlers here...<br />
// check for login element<br />
let loggedin;<br />
await Promise.all([<br />
page.goto(scenario.url),<br />
page.waitForSelector('input[name="login_username"]', {timeout: 3000}),<br />
]).then(() => {<br />
loggedin = false;<br />
}).catch(() => {<br />
loggedin = true;<br />
})<br />
<br />
if (!loggedin) {<br />
await page.type('input[name="login_username"]', 'admin');<br />
await page.type('input[name="login_password"]', 'a');<br />
// let element = await page.$('#login_submit')<br />
// console.log(element);<br />
await Promise.all([<br />
page.waitForNavigation({waitUntil: 'networkidle2'}),<br />
page.click('#login_submit'),<br />
]);<br />
await page.waitForTimeout(1000);<br />
// await page.goto(scenario.url);<br />
} else {<br />
return;<br />
}</code><br />
<code>};</code><br />
<br />
*'''Start by running <code>backstop reference</code>''' - This will create reference screenshots for you to compare with when you run your test.<br />
<br />
*'''Then''' '''make your changes or checkout your test patch'''<br />
<br />
*'''Then run <code>backstop test</code>''' - this will take screenshots and compare them with your reference screenshots<br />
<br />
For some reason the report tries to open in Matrix... But you can view the report results by opening the generated backstop_data/html_report/index.html in a browser. <br />
<br />
If you're happy with one of the test images, then you can run <code>backstop approve</code> and pass a <code>--filter=<image_filename_regex></code> argument to promote that specific test capture matching your scenario filename. The filenames (which by default include scenario and viewport names) are displayed in the visual report.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area/Visual_regression_testing&diff=13333Testing Area/Visual regression testing2022-07-18T21:27:25Z<p>Dianne.tennent: </p>
<hr />
<div>===Visual Regression Testing with BackstopJS===<br />
https://github.com/garris/BackstopJS<br />
<br />
This is some documentation of my investigation into using BackstopJS with Mahara. In the end, the fact that the Mahara UI has so many different states that are behaviour driven, means that it would be incredibly time consuming to set up the conditions for these states in the backstop.json config. '''My conclusion was that, if we are to implement automated visual regression testing for Mahara, that it should be integrated with our current BDD test suite, i.e. Behat.''' <br />
<br />
'''Set up:'''<br />
<br />
*'''Create a new directory''' e.g. backstopjsmahara and cd into it<br />
*'''Run <code>npm i backstopjs</code>'''<br />
*'''Run <code>backstop init</code>'''<br />
*'''Get the list of urls from your local site''' with this formula in the console in devtools: '''<code>n=$$('a');for(u in n)console.log(n[u].href),</code>''' or use a web scraper (I used this tutorial to make a simple webscraper with puppeteer: [https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer)]<br />
*'''Create a file called urls.js with the following contents:'''<br />
<br />
<code>const fs = require('fs-extra'); // writes json files</code><br />
<br />
<code>const urls = [url1, url2, etc ...]; // The list of urls</code><br />
<br />
<code>let scenarios = [];</code><br />
<br />
<code>urls.map(string => {</code><br />
<code>let jsonstring = {<br />
"label": string,<br />
"url": "<your domain>" + string,<br />
}<br />
scenarios.push(jsonstring);</code><br />
<code>})</code><br />
<br />
<code>fs.writeJson('scenarios.json', scenarios, (err) => {</code><br />
<code>if (err) throw err;</code><br />
<code>});</code><br />
<br />
*'''Run this file on cli''' with <code>node urls.js</code><br />
<br />
*'''Copy and paste the json array from the generated scenarios.json file into the backstop.json file''' as the value for '''<code>"scenarios": (json array)</code>'''<br />
*'''Make sure your backstop.json file looks like this:'''<br />
<br />
<code>{</code><br />
<code>"viewports": [ {<br />
"name": "Below-480",<br />
"width": 478,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-768",<br />
"width": 766,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-992",<br />
"width": 990,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1200",<br />
"width": 1198,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1440",<br />
"width": 1438,<br />
"height": 730</code><br />
<code>}],</code><br />
<code>"onReadyScript": "puppet/onReady.js",<br />
"scenarios": [{"label":"/module/multirecipientnotification/inbox.php","url":"http://mahara2/module/multirecipientnotification/inbox.php"},{"label":"/user/view.php?id=1", etc...],<br />
"paths": {<br />
"bitmaps_reference": "backstop_data/bitmaps_reference",<br />
"bitmaps_test": "backstop_data/bitmaps_test",<br />
"casper_scripts": "backstop_data/casper_scripts",<br />
"html_report": "backstop_data/html_report",<br />
"ci_report": "backstop_data/ci_report"<br />
},<br />
"casperFlags": [],<br />
"engine": "puppet",<br />
"engineOptions": {<br />
"headless": true,<br />
"browser": "chromium"<br />
},<br />
"asyncCaptureLimit": 1,<br />
"debug": true,<br />
"report": ["browser"]</code><br />
<code>}</code><br />
<br />
*'''And make sure your puppet/onReady.js file looks like this:'''<br />
<br />
<code>module.exports = async (page, scenario, vp) => {</code><br />
<code>console.log('SCENARIO > ' + scenario.label);<br />
// await require('./clickAndHoverHelper')(page, scenario);<br />
<br />
// add more ready handlers here...<br />
// check for login element<br />
let loggedin;<br />
await Promise.all([<br />
page.goto(scenario.url),<br />
page.waitForSelector('input[name="login_username"]', {timeout: 3000}),<br />
]).then(() => {<br />
loggedin = false;<br />
}).catch(() => {<br />
loggedin = true;<br />
})<br />
<br />
if (!loggedin) {<br />
await page.type('input[name="login_username"]', 'admin');<br />
await page.type('input[name="login_password"]', 'a');<br />
// let element = await page.$('#login_submit')<br />
// console.log(element);<br />
await Promise.all([<br />
page.waitForNavigation({waitUntil: 'networkidle2'}),<br />
page.click('#login_submit'),<br />
]);<br />
await page.waitForTimeout(1000);<br />
// await page.goto(scenario.url);<br />
} else {<br />
return;<br />
}</code><br />
<code>};</code><br />
<br />
*'''Start by running <code>backstop reference</code>''' - This will create reference screenshots for you to compare with when you run your test.<br />
<br />
*'''Then''' '''make your changes or checkout your test patch'''<br />
<br />
*'''Then run <code>backstop test</code>''' - this will take screenshots and compare them with your reference screenshots<br />
<br />
For some reason the report tries to open in Matrix... But you can view the report results by opening the generated backstop_data/html_report/index.html in a browser. <br />
<br />
If you're happy with one of the test images, then you can run <code>backstop approve</code> and pass a <code>--filter=<image_filename_regex></code> argument to promote that specific test capture matching your scenario filename. The filenames (which by default include scenario and viewport names) are displayed in the visual report.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area/Visual_regression_testing&diff=13332Testing Area/Visual regression testing2022-07-18T21:26:26Z<p>Dianne.tennent: Updated documentation</p>
<hr />
<div>===Visual Regression Testing with BackstopJS===<br />
https://github.com/garris/BackstopJS<br />
<br />
This is some documentation of my investigation into using BackstopJS with Mahara. In the end, the fact that the Mahara UI has so many different states that are behaviour driven, means that it would be incredibly time consuming to set up the conditions for these states in the backstop.json config. '''My conclusion was that, if we are to implement automated visual regression testing for Mahara, that it should be integrated with our current BDD test suite, i.e. Behat.''' <br />
<br />
'''Set up:'''<br />
<br />
*'''Create a new directory''' e.g. backstopjsmahara and cd into it<br />
*'''Run <code>npm i backstopjs</code>'''<br />
*'''Run <code>backstop init</code>'''<br />
*'''Get the list of urls from your local site''' with this formula in the console in devtools: '''<code>n=$$('a');for(u in n)console.log(n[u].href),</code>''' or use a web scraper (I used this tutorial to make a simple webscraper with puppeteer: [https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer https://www.digitalocean.com/community/tutorials/how-to-scrape-a-website-using-node-js-and-puppeteer)]<br />
*'''Create a file called urls.js with the following contents:'''<br />
<br />
<code>const fs = require('fs-extra'); // writes json files</code><br />
<br />
<code>const urls = [url1, url2, etc ...]; // The list of urls</code><br />
<br />
<code>let scenarios = [];</code><br />
<br />
<code>urls.map(string => {</code><br />
<code>let jsonstring = {<br />
"label": string,<br />
"url": "<your domain>" + string,<br />
}<br />
scenarios.push(jsonstring);</code><br />
<code>})</code><br />
<br />
<code>fs.writeJson('scenarios.json', scenarios, (err) => {</code><br />
<code>if (err) throw err;</code><br />
<code>});</code><br />
<br />
* '''Run this file on cli''' with <code>node urls.js</code><br />
<br />
*'''Copy and paste the json array from the generated scenarios.json file into the backstop.json file''' as the value for '''<code>"scenarios": (json array)</code>'''<br />
*'''Make sure your backstop.json file looks like this:'''<br />
<br />
<code>{</code><br />
<code>"viewports": [ {<br />
"name": "Below-480",<br />
"width": 478,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-768",<br />
"width": 766,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-992",<br />
"width": 990,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1200",<br />
"width": 1198,<br />
"height": 730</code><br />
<code>},<br />
{</code><br />
<code>"name": "Below-1440",<br />
"width": 1438,<br />
"height": 730</code><br />
<code>}],</code><br />
<code>"onReadyScript": "puppet/onReady.js",<br />
"scenarios": [{"label":"/module/multirecipientnotification/inbox.php","url":"http://mahara2/module/multirecipientnotification/inbox.php"},{"label":"/user/view.php?id=1", ...],<br />
"paths": {<br />
"bitmaps_reference": "backstop_data/bitmaps_reference",<br />
"bitmaps_test": "backstop_data/bitmaps_test",<br />
"casper_scripts": "backstop_data/casper_scripts",<br />
"html_report": "backstop_data/html_report",<br />
"ci_report": "backstop_data/ci_report"<br />
},<br />
"casperFlags": [],<br />
"engine": "puppet",<br />
"engineOptions": {<br />
"headless": true,<br />
"browser": "chromium"<br />
},<br />
"asyncCaptureLimit": 1,<br />
"debug": true,<br />
"report": ["browser"]</code><br />
<code>}</code><br />
<br />
*'''And make sure your puppet/onReady.js file looks like this:'''<br />
<br />
<code>module.exports = async (page, scenario, vp) => {</code><br />
<code>console.log('SCENARIO > ' + scenario.label);<br />
// await require('./clickAndHoverHelper')(page, scenario);<br />
<br />
// add more ready handlers here...<br />
// check for login element<br />
let loggedin;<br />
await Promise.all([<br />
page.goto(scenario.url),<br />
page.waitForSelector('input[name="login_username"]', {timeout: 3000}),<br />
]).then(() => {<br />
loggedin = false;<br />
}).catch(() => {<br />
loggedin = true;<br />
})<br />
<br />
if (!loggedin) {<br />
await page.type('input[name="login_username"]', 'admin');<br />
await page.type('input[name="login_password"]', 'a');<br />
// let element = await page.$('#login_submit')<br />
// console.log(element);<br />
await Promise.all([<br />
page.waitForNavigation({waitUntil: 'networkidle2'}),<br />
page.click('#login_submit'),<br />
]);<br />
await page.waitForTimeout(1000);<br />
// await page.goto(scenario.url);<br />
} else {<br />
return;<br />
}</code><br />
<code>};</code><br />
<br />
*'''Start by running <code>backstop reference</code>''' - This will create reference screenshots for you to compare with when you run your test.<br />
<br />
* '''Then''' '''make your changes or checkout your test patch''' <br />
<br />
*'''Then run <code>backstop test</code>''' - this will take screenshots and compare them with your reference screenshots<br />
<br />
For some reason the report tries to open in Matrix... But you can view the report results by opening the generated backstop_data/html_report/index.html in a browser. <br />
<br />
If you're happy with one of the test images, then you can run <code>backstop approve</code> and pass a <code>--filter=<image_filename_regex></code> argument to promote that specific test capture matching your scenario filename. The filenames (which by default include scenario and viewport names) are displayed in the visual report.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area/Visual_regression_testing&diff=13317Testing Area/Visual regression testing2022-06-29T21:57:21Z<p>Dianne.tennent: /* Visual Regression Testing with BackstopJS */</p>
<hr />
<div>===Visual Regression Testing with BackstopJS===<br />
Set up:<br />
<br />
#Create a new directory e.g. backstopjsmahara and cd into it<br />
#Run <code>npm i backstopjs</code><br />
#Run <code>backstop init</code><br />
#Get the list of urls from your local site with this formula in the console in devtools: <code>n=$$('a');for(u in n)console.log(n[u].href),</code> or use a web scraper<br />
#Copy and paste and turn these into a JavaScript array of strings as the value of urls in urls.js<br />
#The urls.js file creates a scenarios.json file - run on cli with <code>node urls.js</code><br />
#Copy and paste the json array from the generated file into the backstop.json file as the value for <code>"scenarios": (json array)</code><br />
#INSERT HERE: Final state of backstop.json file and onReady.js script used in this context<br />
<br />
We're going to start by running <code>backstop reference</code> - This will create reference screenshots for you to compare with when you run your test. <br />
<br />
Then you can make your changes or checkout your test patch <br />
<br />
Then you will run <code>backstop test</code> - this will take screenshots and compare them with your reference screenshots <br />
<br />
For some reason the report tries to open in Matrix... But you can view the report results by opening the generated backstop_data/html_report/index.html in a browser. <br />
<br />
Then you can run <code>backstop approve</code> - This will make '''all''' the tests become the reference files. Pass a <code>--filter=<image_filename_regex></code> argument to promote only the test captures matching your scenario filename. The filenames (which by default include scenario and viewport names) are displayed in the visual and cli reports.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area/Visual_regression_testing&diff=13313Testing Area/Visual regression testing2022-06-26T20:56:17Z<p>Dianne.tennent: </p>
<hr />
<div>=== Visual Regression Testing with BackstopJS ===<br />
<br />
#Create a new directory e.g. backstopjsmahara and cd into it<br />
#Run <code>npm i backstopjs</code><br />
#Run <code>backstop init</code><br />
#Get the list of urls from your local site with this formula in the console in devtools: <code>n=$$('a');for(u in n)console.log(n[u].href)</code><br />
#Copy and paste and turn these into a JavaScript array of strings as the value of urls in urls.js<br />
#The urls.js file creates a scenarios.json file - run on cli with <code>node urls.js</code><br />
#Copy and paste the json array from the generated file into the backstop.json file as the value for <code>"scenarios": (json array)</code><br />
<br />
We're going to start by running <code>backstop test</code> - Make sure your site is the state you want to compare it against i.e. the 'correct' state<br />
<br />
When you run <code>backstop test</code> - It will say 'reference url not found' - this is ok because we will use this test to create the references <br />
<br />
For some reason the report tries to open in Matrix... But you can view the report results by opening the generated backstop_data/html_report/index.html in a browser. Check that the test shots are in the state you want them to be in.<br />
<br />
Then you'll run <code>backstop approve</code> - This will make all the tests become the reference files, so next time you run a test, you will have reference files to compare with<br />
<br />
Then you can make your changes or checkout your test patch and run <code>backstop test</code> again and the report will show any visual regressions</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/tabs&diff=13312Developer Area/tabs2022-06-26T20:53:09Z<p>Dianne.tennent: </p>
<hr />
<div><div style="font-size: .2em;">&nbsp;</div><br />
{| style="margin-bottom:0" width="100%"<br />
|- style="text-align:center" valign="top"<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area | Overview]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Finding_Way_Round | Finding your way around]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Developer_Environment | Dev setup]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Developer_Tools | Dev tools]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Contributing | Contributing]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Testing_Area | Testing]]<br />
|-<br />
|}<br />
{| width="100%" cellpadding="15"<br />
|- style="text-align:center" valign="top"<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Discussion | Keep in touch]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/API | API Docs]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Architecture | Architecture]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Release Instructions | Release Instructions]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Plugins | Plugins]]<br />
|-<br />
|<br />
|}<br />
<!-- This page is used to add navigation tabs to the appropriate Mahara Developer Area help pages --><br />
[[Category:Developer Area]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area&diff=13311Testing Area2022-06-26T20:51:27Z<p>Dianne.tennent: </p>
<hr />
<div><br />
Here is a bunch of testing documentation for Mahara. This is for people who want to understand how Mahara is tested, or want to develop new tests (manual or automated) for Mahara.<br />
<br />
==Overview==<br />
<br />
*[https://wiki.mahara.org/wiki/Accessibility Accessibility]<br />
*[https://mahara.org/tracker/ Bug Reports & Feature Requests]<br />
*[[Developer_Area/Bug_Status|Bug status policy]]<br />
*[[Developer_Area/Unit_Testing|Developers - Unit testing]]<br />
*[[Testing_Area/Behat_Testing|Automated functional testing - Behat testing]]<br />
*[[Testing_Area/Manual_item_testing|Manual item testing - bug reports and feature requests]]<br />
*[[Testing_Area/Manual_regression_testing|Manual regression testing]]<br />
*[[Testing Area/Visual regression testing|Visual regression testing]]<br />
<br />
==Manual testing checklists==<br />
<br />
*[[Testing_Area/TestingUpgrade|List 1 - Testing an upgrade]]<br />
*[[Testing_Area/TestingWebservices|List 2 - Testing webservices]]<br />
*[[Testing_Area/TestingLayout|List 3 - Testing design / layout changes]]<br />
*[[Testing_Area/TestingMobile|List 4 - Testing moblie issues]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area&diff=13310Testing Area2022-06-26T20:50:22Z<p>Dianne.tennent: </p>
<hr />
<div><br />
Here is a bunch of testing documentation for Mahara. This is for people who want to understand how Mahara is tested, or want to develop new tests (manual or automated) for Mahara.<br />
<br />
==Overview==<br />
<br />
*[https://wiki.mahara.org/wiki/Accessibility Accessibility]<br />
*[https://mahara.org/tracker/ Bug Reports & Feature Requests]<br />
*[[Developer_Area/Bug_Status|Bug status policy]]<br />
*[[Developer_Area/Unit_Testing|Developers - Unit testing]]<br />
*[[Testing_Area/Behat_Testing|Automated functional testing - Behat testing]]<br />
*[[Testing_Area/Manual_item_testing|Manual item testing - bug reports and feature requests]]<br />
*[[Testing_Area/Manual_regression_testing|Manual regression testing]]<br />
*[[Visual regression testing]]<br />
<br />
==Manual testing checklists==<br />
<br />
*[[Testing_Area/TestingUpgrade|List 1 - Testing an upgrade]]<br />
*[[Testing_Area/TestingWebservices|List 2 - Testing webservices]]<br />
*[[Testing_Area/TestingLayout|List 3 - Testing design / layout changes]]<br />
*[[Testing_Area/TestingMobile|List 4 - Testing moblie issues]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area/&diff=13309Testing Area/2022-06-26T20:49:02Z<p>Dianne.tennent: Dianne.tennent moved page Testing Area/ to Testing Area/Visual regression testing</p>
<hr />
<div>#REDIRECT [[Testing Area/Visual regression testing]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area/Visual_regression_testing&diff=13308Testing Area/Visual regression testing2022-06-26T20:49:02Z<p>Dianne.tennent: Dianne.tennent moved page Testing Area/ to Testing Area/Visual regression testing</p>
<hr />
<div>==== Behat Testing ====<br />
[[Testing Area/Behat Testing/Setup]]<br />
<br /><br />
<br />
==== Visual Regression Testing with BackstopJS for Mahara ====<br />
<br />
# Create a new directory e.g. backstopjsmahara and cd into it<br />
# Run <code>npm i backstopjs</code><br />
# Run <code>backstop init</code><br />
# Get the list of urls from your local site with this formula in the console in devtools: <code>n=$$('a');for(u in n)console.log(n[u].href)</code><br />
# Copy and paste and turn these into a JavaScript array of strings as the value of urls in urls.js<br />
# The urls.js file creates a scenarios.json file - run on cli with <code>node urls.js</code><br />
# Copy and paste the json array from the generated file into the backstop.json file as the value for <code>"scenarios": (json array)</code><br />
<br />
We're going to start by running <code>backstop test</code> - Make sure your site is the state you want to compare it against i.e. the 'correct' state<br />
<br />
When you run <code>backstop test</code> - It will say 'reference url not found' <br />
<br />
For some reason the report tries to open in Matrix... But you can view the report results by opening the generated backstop_data/html_report/index.html in a browser. Check that the test shots are in the state you want them to be in.<br />
<br />
Then you'll run <code>backstop approve</code> - This will make all the tests become the reference files, so next time you run a test, you will have reference files to compare with<br />
<br />
Then you can make your changes or checkout your test patch and run <code>backstop test</code> again and the report will show any visual regressions</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Testing_Area/Visual_regression_testing&diff=13306Testing Area/Visual regression testing2022-06-23T03:55:26Z<p>Dianne.tennent: Created page with "==== Behat Testing ==== Testing Area/Behat Testing/Setup <br /> ==== Visual Regression Testing with BackstopJS for Mahara ==== # Create a new directory e.g. backstopjsma..."</p>
<hr />
<div>==== Behat Testing ====<br />
[[Testing Area/Behat Testing/Setup]]<br />
<br /><br />
<br />
==== Visual Regression Testing with BackstopJS for Mahara ====<br />
<br />
# Create a new directory e.g. backstopjsmahara and cd into it<br />
# Run <code>npm i backstopjs</code><br />
# Run <code>backstop init</code><br />
# Get the list of urls from your local site with this formula in the console in devtools: <code>n=$$('a');for(u in n)console.log(n[u].href)</code><br />
# Copy and paste and turn these into a JavaScript array of strings as the value of urls in urls.js<br />
# The urls.js file creates a scenarios.json file - run on cli with <code>node urls.js</code><br />
# Copy and paste the json array from the generated file into the backstop.json file as the value for <code>"scenarios": (json array)</code><br />
<br />
We're going to start by running <code>backstop test</code> - Make sure your site is the state you want to compare it against i.e. the 'correct' state<br />
<br />
When you run <code>backstop test</code> - It will say 'reference url not found' <br />
<br />
For some reason the report tries to open in Matrix... But you can view the report results by opening the generated backstop_data/html_report/index.html in a browser. Check that the test shots are in the state you want them to be in.<br />
<br />
Then you'll run <code>backstop approve</code> - This will make all the tests become the reference files, so next time you run a test, you will have reference files to compare with<br />
<br />
Then you can make your changes or checkout your test patch and run <code>backstop test</code> again and the report will show any visual regressions</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/90&diff=13305Developer Area/Developer Meetings/902022-06-22T20:23:44Z<p>Dianne.tennent: </p>
<hr />
<div>Agenda for the 90th Mahara developer meeting on '''Tuesday, 12 July 2022 at 22:00:00 UTC''' ([https://www.timeanddate.com/worldclock/fixedtime.html?msg=90th+Mahara+Developer+Meeting&iso=20220713T10&p1=264&ah=1 check your time zone]).<br />
<br />
We will meet online using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our #Mahara channel on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
<br />
*Chair: Dianne Tennent<br />
*Minute taker: Kristina Hoeppner<br />
<br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
<br />
==Agenda==<br />
<br />
===Items from previous meetings:===<br />
<br />
*Robert - Ongoing - Look into improving the <code>get_user</code> function for submissions management, e.g. a bulk version and a bare-bones version<br />
*Kristina - Lang pack manager docs in the Manual<br />
*Kristina - Two webinars - details will be posted to the forums<br />
*Devs - PHP 8 compatibility<br />
*Devs - embedding security awareness into our processes<br />
*Any other business<br />
*Next meeting and chair<br />
<br />
<br />
===The next developer meeting plan===<br />
'''Date''': TBC<br />
<br />
*'''Chair:''' TBC<br />
*'''Minute taker:''' TBC</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/tabs&diff=13304Developer Area/tabs2022-06-22T07:29:24Z<p>Dianne.tennent: </p>
<hr />
<div><div style="font-size: .2em;">&nbsp;</div><br />
{| style="margin-bottom:0" width="100%"<br />
|- style="text-align:center" valign="top"<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area | Overview]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Finding_Way_Round | Finding your way around]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Developer_Environment | Dev setup]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Developer_Tools | Dev tools]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Contributing | Contributing]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Testing_Area | Testing]]<br />
|-<br />
|}<br />
{| width="100%" cellpadding="15"<br />
|- style="text-align:center" valign="top"<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Discussion | Keep in touch]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/API | API Docs]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Architecture | Architecture]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Release Instructions | Release Instructions]]<br />
| style="background-color:#efefef; border: 2px solid white;" |[[Developer_Area/Plugins | Plugins]]<br />
|-<br />
|<br />
|}<br />
<!-- This page is used to add navigation tabs to the appropriate Mahara Developer Area help pages --><br />
[[Category:Developer Area]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/90&diff=13303Developer Area/Developer Meetings/902022-06-22T07:19:56Z<p>Dianne.tennent: </p>
<hr />
<div>Agenda for the 90th Mahara developer meeting on 22 June 2022 at 07:30 UTC ([https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220622T1930&p1=264&ah=1 check your time zone]).<br />
<br />
We will meet using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our #Mahara channel on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
<br />
*Chair: Dianne Tennent<br />
*Minute taker: Kristina Hoeppner<br />
<br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
<br />
==Agenda==<br />
<br />
===Items from previous meetings:===<br />
<br />
*Robert - Ongoing - Look into improving the <code>get_user</code> function for submissions management, e.g. a bulk version and a bare-bones version<br />
*Kristina - Lang pack manager docs in the Manual<br />
*Kristina - Two webinars - details will be posted to the forums<br />
*Devs - PHP 8 compatibility<br />
*Devs - embedding security awareness into our processes<br />
*Any other business<br />
*Next meeting and chair<br />
<br />
<br />
===The next developer meeting plan===<br />
'''Date''': TBC<br />
<br />
*'''Chair:''' TBC<br />
*'''Minute taker:''' TBC</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/90&diff=13290Developer Area/Developer Meetings/902022-06-09T01:06:03Z<p>Dianne.tennent: </p>
<hr />
<div>Agenda for the 90th Mahara developer meeting on 22 June 2022 at 07:30 UTC ([https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220622T1930&p1=264&ah=1 check your time zone]).<br />
<br />
We will meet using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our #Mahara channel on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
<br />
*Chair: Dianne Tennent<br />
*Minute taker: Kristina Hoeppner<br />
<br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
<br />
==Agenda==<br />
<br />
===Items from previous meetings:===<br />
<br />
*Robert - Ongoing - Look into improving the <code>get_user</code> function for submissions management, e.g. a bulk version and a bare-bones version<br />
*Kristina - Lang pack manager docs in the Manual<br />
*Kristina - Two webinars - details will be posted to the forums<br />
*Devs - PHP 8 compatibility<br />
*Any other business<br />
*Next meeting and chair<br />
<br />
<br />
===The next developer meeting plan===<br />
'''Date''': TBC<br />
<br />
*'''Chair:''' TBC<br />
*'''Minute taker:''' TBC</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings/90&diff=13289Developer Area/Developer Meetings/902022-06-09T01:05:05Z<p>Dianne.tennent: </p>
<hr />
<div>Agenda for the 90th Mahara developer meeting on 22 June 2022 at 07:30 UTC ([https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220518T0730&p1=264 check your time zone]).<br />
<br />
We will meet using [https://bigbb.catalyst.net.nz/gl/kri-qrp-eqx Big Blue Button] (A Catalyst staff member will initiate the call).<br />
<br />
Our #Mahara channel on Matrix will be our backup in case there are problems with the web conferencing tool and we'll need to chat to resolve it. You can connect to our Matrix channel also using the #mahara channel on Freenode IRC.<br />
<br />
*Chair: Dianne Tennent<br />
*Minute taker: Kristina Hoeppner<br />
<br />
[[Developer_Area/Developer_Meetings/Chair_Duties|Chair and minute taker duties explained]]<br />
<br />
==Agenda==<br />
<br />
===Items from previous meetings:===<br />
<br />
*Robert - Ongoing - Look into improving the <code>get_user</code> function for submissions management, e.g. a bulk version and a bare-bones version<br />
*Kristina - Lang pack manager docs in the Manual<br />
*Kristina - Two webinars - details will be posted to the forums<br />
*Devs - PHP 8 compatibility<br />
*Any other business<br />
*Next meeting and chair<br />
<br />
<br />
===The next developer meeting plan===<br />
'''Date''': TBC<br />
<br />
*'''Chair:''' TBC<br />
*'''Minute taker:''' TBC</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings&diff=13288Developer Area/Developer Meetings2022-06-09T01:03:51Z<p>Dianne.tennent: Update event time link to display correct time</p>
<hr />
<div>Regular developer meetings are held online. Please see the agenda for the meeting room information.<br />
<br />
For information on chairing a meeting and taking minutes, see [[Developer_Area/Developer_Meetings/Chair_Duties|Chair Duties]].<br />
<br />
Old [https://git.mahara.org/info/mahara-minutes IRC meeting minutes] are archived on git.mahara.org as well. <br />
<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Dev. meeting<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |90<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=90th+Mahara+developer+meeting&iso=20220622T1930&p1=264&ah=1 Wednesday, 22 June 2022 at 07:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/90|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |89<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220413T11&p1=264 Tuesday, 12 April 2022 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/89|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |88<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220302T2030&p1=264& Wednesday, 2 March 2022 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/88|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |87<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220118T1030&p1=264 Tuesday, 18 January 2022 at 10:30 NZDT]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/87|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |86<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20211013T1100&p1=22 Tuesday, 12 October 2021 at 22:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/86|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |85<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210804T1100&p1=22 Tuesday, 3 August 2021 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/85|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |84<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210608T1930&p1=22 Tuesday, 8 June 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/84|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |83<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210216T2030&p1=22 Tuesday, 16 February 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/83|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |82<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20201103T2030&p1=22 Tuesday, 3 November 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/82|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |81<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200908T1930&p1=22 Tuesday, 8 September 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/81|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |80<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200722T0730&p1=%3A Wednesday, 22 July 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/80|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |79<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200603T0730&p1=%3A Wednesday, 3 June 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/79|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |78<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+Developers+Meeting&iso=20200304T0730&p1=1440 Wednesday, 4 March 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/78|Agenda and minutes]]<br />
|-<br />
|-<br />
| style="text-align: center" |77<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200129T0730&p1=%3A Wednesday, 29 January 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/77|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |76<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191209T07&p1=%3A Monday, 9 December 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/76|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |75<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191017T07&p1=%3A Thursday, 17 October 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/75|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |74<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190828T07&p1=1440 Wednesday, 28 August 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/74|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |73 (cancelled)<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190731T07&p1=1440 Wednesday, 31 July 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/73|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |72<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190626T07&p1=1440 Wednesday, 26 June 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/72|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |71<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190502T07&p1=1440 Thursday, 2 May 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/71|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |70<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190319T07&p1=1440 Tuesday, 19 March 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/70|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |69<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190129T07&p1=1440 Tuesday, 29 January 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/69|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |68<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20181106T07&p1=1440 Tuesday, 6 November 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/68|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.log.html IRC log]<br />
|-<br />
| style="text-align: center" |67<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180808T07&p1=1440 Wednesday, 8 August 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/67|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |66<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180613T07&p1=1440 Wednesday, 13 June 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/66|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |65<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180426T07&p1=1440 Thursday, 26 April 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/65|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |64<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180321T07&p1=136 Wednesday, 21 March 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/64|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |63<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180117T07&p1=136 Wednesday, 17 January 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/63|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |62<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20171123T07&p1=136 Thursday, 23 November 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/62|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.log.html IRC log]<br />
|-<br />
| style="text-align: center" |61<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170615T07&p1=1440 Thursday, 15 June 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/61|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |60<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170504T07&p1=1440 Thursday, 4 May 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/60|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |59<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170309T08&p1=1440 Thursday, 9 March 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/59|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.log.html IRC log]<br />
|-<br />
| style="text-align: center" |58<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20170118T08&p1=1440 Wednesday, 18 January 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/58|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |57<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20161109T08&p1=1440 Wednesday, 9 November 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/57|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.log.html IRC log]<br />
|-<br />
| style="text-align: center" |56<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160907T08&p1=1440 Wednesday, 7 September 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/56|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |55<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160803T08 Wednesday, 3 August 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/55|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |54<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160629T08 Wednesday, 29 June 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/54|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |53<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160526T08 Thursday, 26 May 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/53|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |52<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160428T07 Thursday, 28 April 2016, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/52|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |51<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160310T08 Thursday, 10 March 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/51|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |50<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160202T0730 Tuesday, 2 February 2016, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/50|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |49<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151201T08 Tuesday, 1 December 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/49|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |48<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151027T07 Tuesday, 27 October 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/48|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |47<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20150930T07 Wednesday, 30 September 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/47|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |46<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=46th+Mahara+developer+meeting&iso=20150826T08 Wednesday, 26 August 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/46|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |45<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=45th+Mahara+developer+meeting&iso=20150729T09&p1=1440 Wednesday, 29 July 2015, 9:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/45|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |44<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=44th+Mahara+developer+meeting&iso=20150528T08&p1=1440 Thursday, 28 May 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/44|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |43<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=43rd+Mahara+developer+meeting&iso=20150423T08&p1=1440 Thursday, 23 April 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/43|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |42<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=42nd+Mahara+Developer+Meeting&iso=20150326T08 Thursday, 26 March 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/42|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |41<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=41st+Mahara+Developer+Meeting&iso=20150226T08 Thursday, 26 February 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/41|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |40<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=40th+Mahara+Developer+Meeting&iso=20150122T08 Thursday, 22 January 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/40|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |39<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=39th+Mahara+Developer+Meeting&iso=20141218T08 Thursday, 18 December 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/39|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |38<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=38th+Mahara+Developer+Meeting&iso=20141127T08 Thursday, 27 November 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/38|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |37<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+37th+Developer+Meeting&iso=20141023T08 Thursday, 23 October 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/37|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |36<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+36th+Developer+Meeting&iso=20140925T08 Thursday, 25 September 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/36|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |35<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+35th+Developer+Meeting&iso=20140814T08 Thursday, 14 August 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/35|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |34<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+34th+Developer+Meeting&iso=20140710T08 Thursday, 10 July 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/34|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |33<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+33rd+Developer+Meeting&iso=20140605T08 Thursday, 5 June 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/33|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.log.html IRC log]<br />
|-<br />
| style="text-align: center" |32<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=32nd+Mahara+developer+meeting&iso=20140501T08 Thursday, 1 May 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/32|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |31<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140327T08&p1=1440 Thursday, 27 March 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |30<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140123T08&p1=1440 Thursday, 23 January 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/30|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |29<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131205T08&p1=1440 Thursday, 5 December 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |28<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131003T20&p1=1440 Thursday, 3 October 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-10-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |27<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130905T08 Thursday, 5 September 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-09-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |26<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130813T20 Tuesday, 13 August 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-05-28|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |25<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=25th+Mahara+Developer+Meeting&iso=20130416T08 Wednesday, 16 April 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-04-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |24<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=24th+Mahara+Developer+Meeting&iso=20130226T20 Tuesday, 26 February 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-02-26|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |23<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=23rd+Mahara+Developer+Meeting&iso=20130116T08 Wednesday, 16 January 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-01-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |22<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=22nd+Mahara+Developer+Meeting&iso=20121121T20 Wednesday, 21 November 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-11-21|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.log.html IRC log]<br />
|-<br />
| style="text-align: center" |21<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20121017T0730&msg=21st%20Mahara%20Developer%20Meeting Wednesday, 17 October 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-10-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |20<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=20th+Mahara+Developer+Meeting&iso=20120829T20 Wednesday, 29 August 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-08-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.log.html IRC log]<br />
|-<br />
| style="text-align: center" |19<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=19th+Mahara+Developer+Meeting&iso=20120731T0730 Tuesday, 31 July 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-07-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |18<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=18th+Mahara+Developer+Meeting&iso=20120627T2000 Wednesday, 27 June 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-06-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |17<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=17th+Mahara+Developer+Meeting&iso=20120523T0730 Wednesday, 23 May 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-05-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |16<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=16th+Mahara+Developer+Meeting&iso=20120425T20 Wednesday, 25 April 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-04-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |15<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120327T0730 Tuesday, 27 March 2012, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-03-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.log.html IRC log]<br />
|-<br />
| style="text-align: center" |14<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120131T1930 Tuesday, 31 January 2012 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-01-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.log.html IRC log]<br />
|-<br />
| style="text-align: center" |13<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111206T0730 Tuesday, 6 December 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-12-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.log.html IRC log]<br />
|-<br />
| style="text-align: center" |12<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111108T1930 Tuesday, 8 November 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-11-08|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |11<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111005T0730 Wednesday, 5 October 2011 - 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-10-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |10<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110906T1930 Tuesday, 6 September 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-09-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |9<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110803T0730 Wednesday, 3 August 2011 - 07:30:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-08-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |8<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110629T1930 Wednesday 29 June 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-06-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |7<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110525T0730 Wednesday 25 May 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-05-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |6<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=20&month=4&year=2011&hour=19&min=30&sec=0&p1=0 Wednesday 20 April 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-04-20|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.log.html IRC log]<br />
|-<br />
| style="text-align: center" |5<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=23&month=3&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 23 March 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-03-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |4<br />
| style="text-align: left" |[http://bit.ly/e29nNk Thursday, 17 February 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-02-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |3<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=19&month=1&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 19 January 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-01-19|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |2<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/meetingdetails.html?year=2010&month=12&day=14&hour=19&min=30&sec=0&p1=22&p2=189&p3=268&iv=1800 Tuesday 14 December 2010 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-12-14|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |1<br />
| style="text-align: left" |Wednesday 10 November 2010 - 07:30 UTC (following [https://mahara.org/interaction/forum/topic.php?id=2070 a discussion])<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-11-10|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.log.html IRC log]<br />
|}<br />
<br />
===Other meetings===<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Meeting title<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |Theme / plugin repository<br />
| style="text-align: left" |Thursday, 8 March 2012, 18:00-19:30 UTC<br />
| style="text-align: center" |<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.html Minutes]<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.log.html IRC log]<br />
|}</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings&diff=13287Developer Area/Developer Meetings2022-06-09T00:57:15Z<p>Dianne.tennent: </p>
<hr />
<div>Regular developer meetings are held online. Please see the agenda for the meeting room information.<br />
<br />
For information on chairing a meeting and taking minutes, see [[Developer_Area/Developer_Meetings/Chair_Duties|Chair Duties]].<br />
<br />
Old [https://git.mahara.org/info/mahara-minutes IRC meeting minutes] are archived on git.mahara.org as well. <br />
<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Dev. meeting<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |90<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=90th+Mahara+developer+meeting&iso=20220622T0730&p1=264 Wednesday, 22 June 2022 at 07:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/90|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |89<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220413T11&p1=264 Tuesday, 12 April 2022 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/89|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |88<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220302T2030&p1=264& Wednesday, 2 March 2022 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/88|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |87<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220118T1030&p1=264 Tuesday, 18 January 2022 at 10:30 NZDT]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/87|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |86<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20211013T1100&p1=22 Tuesday, 12 October 2021 at 22:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/86|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |85<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210804T1100&p1=22 Tuesday, 3 August 2021 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/85|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |84<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210608T1930&p1=22 Tuesday, 8 June 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/84|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |83<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210216T2030&p1=22 Tuesday, 16 February 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/83|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |82<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20201103T2030&p1=22 Tuesday, 3 November 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/82|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |81<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200908T1930&p1=22 Tuesday, 8 September 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/81|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |80<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200722T0730&p1=%3A Wednesday, 22 July 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/80|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |79<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200603T0730&p1=%3A Wednesday, 3 June 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/79|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |78<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+Developers+Meeting&iso=20200304T0730&p1=1440 Wednesday, 4 March 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/78|Agenda and minutes]]<br />
|-<br />
|-<br />
| style="text-align: center" |77<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200129T0730&p1=%3A Wednesday, 29 January 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/77|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |76<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191209T07&p1=%3A Monday, 9 December 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/76|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |75<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191017T07&p1=%3A Thursday, 17 October 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/75|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |74<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190828T07&p1=1440 Wednesday, 28 August 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/74|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |73 (cancelled)<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190731T07&p1=1440 Wednesday, 31 July 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/73|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |72<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190626T07&p1=1440 Wednesday, 26 June 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/72|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |71<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190502T07&p1=1440 Thursday, 2 May 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/71|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |70<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190319T07&p1=1440 Tuesday, 19 March 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/70|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |69<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190129T07&p1=1440 Tuesday, 29 January 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/69|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |68<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20181106T07&p1=1440 Tuesday, 6 November 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/68|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.log.html IRC log]<br />
|-<br />
| style="text-align: center" |67<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180808T07&p1=1440 Wednesday, 8 August 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/67|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |66<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180613T07&p1=1440 Wednesday, 13 June 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/66|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |65<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180426T07&p1=1440 Thursday, 26 April 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/65|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |64<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180321T07&p1=136 Wednesday, 21 March 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/64|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |63<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180117T07&p1=136 Wednesday, 17 January 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/63|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |62<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20171123T07&p1=136 Thursday, 23 November 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/62|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.log.html IRC log]<br />
|-<br />
| style="text-align: center" |61<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170615T07&p1=1440 Thursday, 15 June 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/61|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |60<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170504T07&p1=1440 Thursday, 4 May 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/60|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |59<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170309T08&p1=1440 Thursday, 9 March 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/59|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.log.html IRC log]<br />
|-<br />
| style="text-align: center" |58<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20170118T08&p1=1440 Wednesday, 18 January 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/58|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |57<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20161109T08&p1=1440 Wednesday, 9 November 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/57|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.log.html IRC log]<br />
|-<br />
| style="text-align: center" |56<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160907T08&p1=1440 Wednesday, 7 September 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/56|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |55<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160803T08 Wednesday, 3 August 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/55|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |54<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160629T08 Wednesday, 29 June 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/54|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |53<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160526T08 Thursday, 26 May 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/53|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |52<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160428T07 Thursday, 28 April 2016, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/52|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |51<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160310T08 Thursday, 10 March 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/51|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |50<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160202T0730 Tuesday, 2 February 2016, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/50|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |49<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151201T08 Tuesday, 1 December 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/49|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |48<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151027T07 Tuesday, 27 October 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/48|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |47<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20150930T07 Wednesday, 30 September 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/47|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |46<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=46th+Mahara+developer+meeting&iso=20150826T08 Wednesday, 26 August 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/46|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |45<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=45th+Mahara+developer+meeting&iso=20150729T09&p1=1440 Wednesday, 29 July 2015, 9:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/45|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |44<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=44th+Mahara+developer+meeting&iso=20150528T08&p1=1440 Thursday, 28 May 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/44|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |43<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=43rd+Mahara+developer+meeting&iso=20150423T08&p1=1440 Thursday, 23 April 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/43|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |42<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=42nd+Mahara+Developer+Meeting&iso=20150326T08 Thursday, 26 March 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/42|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |41<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=41st+Mahara+Developer+Meeting&iso=20150226T08 Thursday, 26 February 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/41|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |40<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=40th+Mahara+Developer+Meeting&iso=20150122T08 Thursday, 22 January 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/40|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |39<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=39th+Mahara+Developer+Meeting&iso=20141218T08 Thursday, 18 December 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/39|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |38<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=38th+Mahara+Developer+Meeting&iso=20141127T08 Thursday, 27 November 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/38|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |37<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+37th+Developer+Meeting&iso=20141023T08 Thursday, 23 October 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/37|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |36<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+36th+Developer+Meeting&iso=20140925T08 Thursday, 25 September 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/36|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |35<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+35th+Developer+Meeting&iso=20140814T08 Thursday, 14 August 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/35|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |34<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+34th+Developer+Meeting&iso=20140710T08 Thursday, 10 July 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/34|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |33<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+33rd+Developer+Meeting&iso=20140605T08 Thursday, 5 June 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/33|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.log.html IRC log]<br />
|-<br />
| style="text-align: center" |32<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=32nd+Mahara+developer+meeting&iso=20140501T08 Thursday, 1 May 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/32|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |31<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140327T08&p1=1440 Thursday, 27 March 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |30<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140123T08&p1=1440 Thursday, 23 January 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/30|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |29<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131205T08&p1=1440 Thursday, 5 December 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |28<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131003T20&p1=1440 Thursday, 3 October 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-10-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |27<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130905T08 Thursday, 5 September 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-09-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |26<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130813T20 Tuesday, 13 August 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-05-28|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |25<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=25th+Mahara+Developer+Meeting&iso=20130416T08 Wednesday, 16 April 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-04-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |24<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=24th+Mahara+Developer+Meeting&iso=20130226T20 Tuesday, 26 February 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-02-26|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |23<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=23rd+Mahara+Developer+Meeting&iso=20130116T08 Wednesday, 16 January 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-01-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |22<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=22nd+Mahara+Developer+Meeting&iso=20121121T20 Wednesday, 21 November 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-11-21|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.log.html IRC log]<br />
|-<br />
| style="text-align: center" |21<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20121017T0730&msg=21st%20Mahara%20Developer%20Meeting Wednesday, 17 October 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-10-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |20<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=20th+Mahara+Developer+Meeting&iso=20120829T20 Wednesday, 29 August 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-08-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.log.html IRC log]<br />
|-<br />
| style="text-align: center" |19<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=19th+Mahara+Developer+Meeting&iso=20120731T0730 Tuesday, 31 July 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-07-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |18<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=18th+Mahara+Developer+Meeting&iso=20120627T2000 Wednesday, 27 June 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-06-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |17<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=17th+Mahara+Developer+Meeting&iso=20120523T0730 Wednesday, 23 May 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-05-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |16<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=16th+Mahara+Developer+Meeting&iso=20120425T20 Wednesday, 25 April 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-04-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |15<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120327T0730 Tuesday, 27 March 2012, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-03-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.log.html IRC log]<br />
|-<br />
| style="text-align: center" |14<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120131T1930 Tuesday, 31 January 2012 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-01-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.log.html IRC log]<br />
|-<br />
| style="text-align: center" |13<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111206T0730 Tuesday, 6 December 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-12-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.log.html IRC log]<br />
|-<br />
| style="text-align: center" |12<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111108T1930 Tuesday, 8 November 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-11-08|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |11<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111005T0730 Wednesday, 5 October 2011 - 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-10-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |10<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110906T1930 Tuesday, 6 September 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-09-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |9<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110803T0730 Wednesday, 3 August 2011 - 07:30:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-08-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |8<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110629T1930 Wednesday 29 June 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-06-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |7<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110525T0730 Wednesday 25 May 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-05-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |6<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=20&month=4&year=2011&hour=19&min=30&sec=0&p1=0 Wednesday 20 April 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-04-20|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.log.html IRC log]<br />
|-<br />
| style="text-align: center" |5<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=23&month=3&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 23 March 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-03-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |4<br />
| style="text-align: left" |[http://bit.ly/e29nNk Thursday, 17 February 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-02-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |3<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=19&month=1&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 19 January 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-01-19|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |2<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/meetingdetails.html?year=2010&month=12&day=14&hour=19&min=30&sec=0&p1=22&p2=189&p3=268&iv=1800 Tuesday 14 December 2010 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-12-14|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |1<br />
| style="text-align: left" |Wednesday 10 November 2010 - 07:30 UTC (following [https://mahara.org/interaction/forum/topic.php?id=2070 a discussion])<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-11-10|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.log.html IRC log]<br />
|}<br />
<br />
===Other meetings===<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Meeting title<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |Theme / plugin repository<br />
| style="text-align: left" |Thursday, 8 March 2012, 18:00-19:30 UTC<br />
| style="text-align: center" |<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.html Minutes]<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.log.html IRC log]<br />
|}</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Developer_Meetings&diff=13286Developer Area/Developer Meetings2022-06-09T00:56:06Z<p>Dianne.tennent: Update date for next meeting</p>
<hr />
<div>Regular developer meetings are held online. Please see the agenda for the meeting room information.<br />
<br />
For information on chairing a meeting and taking minutes, see [[Developer_Area/Developer_Meetings/Chair_Duties|Chair Duties]].<br />
<br />
Old [https://git.mahara.org/info/mahara-minutes IRC meeting minutes] are archived on git.mahara.org as well. <br />
<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Dev. meeting<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |90<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=90th+Mahara+developer+meeting&iso=20220518T0730&p1=264 Wednesday, 22 June 2022 at 07:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/90|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |89<br />
|[https://www.timeanddate.com/worldclock/fixedtime.html?msg=89th+Mahara+developer+meeting&iso=20220413T11&p1=264 Tuesday, 12 April 2022 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/89|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |88<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220302T2030&p1=264& Wednesday, 2 March 2022 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/88|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |87<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20220118T1030&p1=264 Tuesday, 18 January 2022 at 10:30 NZDT]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/87|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |86<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20211013T1100&p1=22 Tuesday, 12 October 2021 at 22:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/86|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |85<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210804T1100&p1=22 Tuesday, 3 August 2021 at 23:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/85|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |84<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210608T1930&p1=22 Tuesday, 8 June 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/84|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |83<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20210216T2030&p1=22 Tuesday, 16 February 2021 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/83|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |82<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20201103T2030&p1=22 Tuesday, 3 November 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/82|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |81<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200908T1930&p1=22 Tuesday, 8 September 2020 at 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/81|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |80<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200722T0730&p1=%3A Wednesday, 22 July 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/80|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |79<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200603T0730&p1=%3A Wednesday, 3 June 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/79|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |78<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+Developers+Meeting&iso=20200304T0730&p1=1440 Wednesday, 4 March 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/78|Agenda and minutes]]<br />
|-<br />
|-<br />
| style="text-align: center" |77<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20200129T0730&p1=%3A Wednesday, 29 January 2020, 7:30 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/77|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |76<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191209T07&p1=%3A Monday, 9 December 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/76|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |75<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20191017T07&p1=%3A Thursday, 17 October 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/75|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |74<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190828T07&p1=1440 Wednesday, 28 August 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/74|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |73 (cancelled)<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190731T07&p1=1440 Wednesday, 31 July 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/73|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |72<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190626T07&p1=1440 Wednesday, 26 June 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/72|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |71<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190502T07&p1=1440 Thursday, 2 May 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/71|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |70<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190319T07&p1=1440 Tuesday, 19 March 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/70|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |69<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20190129T07&p1=1440 Tuesday, 29 January 2019, 7:00 UTC]<br />
| colspan="3" style="text-align: center" |[[Developer Area/Developer Meetings/69|Agenda and minutes]]<br />
|-<br />
| style="text-align: center" |68<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20181106T07&p1=1440 Tuesday, 6 November 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/68|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2019/mahara-dev.2019-01-16-23.27.log.html IRC log]<br />
|-<br />
| style="text-align: center" |67<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180808T07&p1=1440 Wednesday, 8 August 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/67|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-08-08-22.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |66<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180613T07&p1=1440 Wednesday, 13 June 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/66|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-06-13-08.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |65<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180426T07&p1=1440 Thursday, 26 April 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/65|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-04-26-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |64<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180321T07&p1=136 Wednesday, 21 March 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/64|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-03-21-07.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |63<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20180117T07&p1=136 Wednesday, 17 January 2018, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/63|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2018/mahara-dev.2018-01-17-07.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |62<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20171123T07&p1=136 Thursday, 23 November 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/62|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-11-23-06.49.log.html IRC log]<br />
|-<br />
| style="text-align: center" |61<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170615T07&p1=1440 Thursday, 15 June 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/61|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-06-15-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |60<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170504T07&p1=1440 Thursday, 4 May 2017, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/60|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-05-04-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |59<br />
| style="text-align: left" |[https://www.timeanddate.com/worldclock/fixedtime.html?iso=20170309T08&p1=1440 Thursday, 9 March 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/59|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-03-09-21.50.log.html IRC log]<br />
|-<br />
| style="text-align: center" |58<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20170118T08&p1=1440 Wednesday, 18 January 2017, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/58|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2017/mahara-dev.2017-01-18-21.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |57<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20161109T08&p1=1440 Wednesday, 9 November 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/57|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-11-09-07.54.log.html IRC log]<br />
|-<br />
| style="text-align: center" |56<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160907T08&p1=1440 Wednesday, 7 September 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/56|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-09-07-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |55<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160803T08 Wednesday, 3 August 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/55|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-08-03-07.56.log.html IRC log]<br />
|-<br />
| style="text-align: center" |54<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160629T08 Wednesday, 29 June 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/54|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-06-29-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |53<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160526T08 Thursday, 26 May 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/53|Agenda]]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.html Minutes]<br />
| style="text-align: center" |[https://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-05-26-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |52<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160428T07 Thursday, 28 April 2016, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/52|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-04-28-07.16.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |51<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160310T08 Thursday, 10 March 2016, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/51|Agenda]]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.txt Minutes]<br />
| style="text-align: center" |[https://git.mahara.org/info/mahara-minutes/raw/master/public_html/mahara-dev/2016/mahara-dev.2016-03-10-08.02.log.txt IRC log]<br />
|-<br />
| style="text-align: center" |50<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20160202T0730 Tuesday, 2 February 2016, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/50|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2016/mahara-dev.2016-02-02-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |49<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151201T08 Tuesday, 1 December 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/49|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |48<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20151027T07 Tuesday, 27 October 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/48|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-10-27-07.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |47<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20150930T07 Wednesday, 30 September 2015, 7:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/47|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-09-30-07.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |46<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=46th+Mahara+developer+meeting&iso=20150826T08 Wednesday, 26 August 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/46|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-08-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |45<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=45th+Mahara+developer+meeting&iso=20150729T09&p1=1440 Wednesday, 29 July 2015, 9:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/45|Agenda]]<br />
| style="text-align: center" |Minutes<br />
| style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |44<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=44th+Mahara+developer+meeting&iso=20150528T08&p1=1440 Thursday, 28 May 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/44|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-05-28-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |43<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=43rd+Mahara+developer+meeting&iso=20150423T08&p1=1440 Thursday, 23 April 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/43|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-04-23-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |42<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=42nd+Mahara+Developer+Meeting&iso=20150326T08 Thursday, 26 March 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/42|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-03-26-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |41<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=41st+Mahara+Developer+Meeting&iso=20150226T08 Thursday, 26 February 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/41|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-02-26-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |40<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=40th+Mahara+Developer+Meeting&iso=20150122T08 Thursday, 22 January 2015, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/40|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2015/mahara-dev.2015-01-22-08.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |39<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=39th+Mahara+Developer+Meeting&iso=20141218T08 Thursday, 18 December 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/39|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-12-18-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |38<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=38th+Mahara+Developer+Meeting&iso=20141127T08 Thursday, 27 November 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/38|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-11-27-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |37<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+37th+Developer+Meeting&iso=20141023T08 Thursday, 23 October 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/37|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-10-23-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |36<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+36th+Developer+Meeting&iso=20140925T08 Thursday, 25 September 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/36|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-09-25-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |35<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+35th+Developer+Meeting&iso=20140814T08 Thursday, 14 August 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/35|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-08-14-08.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |34<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+34th+Developer+Meeting&iso=20140710T08 Thursday, 10 July 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/34|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-07-10-08.06.log.html IRC log]<br />
|-<br />
| style="text-align: center" |33<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=Mahara+33rd+Developer+Meeting&iso=20140605T08 Thursday, 5 June 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/33|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-06-05-08.15.log.html IRC log]<br />
|-<br />
| style="text-align: center" |32<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=32nd+Mahara+developer+meeting&iso=20140501T08 Thursday, 1 May 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/32|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-05-01-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |31<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140327T08&p1=1440 Thursday, 27 March 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-03-27-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |30<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20140123T08&p1=1440 Thursday, 23 January 2014, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/30|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2014/mahara-dev.2014-01-23-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |29<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131205T08&p1=1440 Thursday, 5 December 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-12-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |28<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20131003T20&p1=1440 Thursday, 3 October 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-10-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-10-03-20.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |27<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130905T08 Thursday, 5 September 2013, 8:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-09-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-09-05-08.01.log.html IRC log]<br />
|-<br />
| style="text-align: center" |26<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20130813T20 Tuesday, 13 August 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-05-28|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-08-13-21.05.log.html IRC log]<br />
|-<br />
| style="text-align: center" |25<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=25th+Mahara+Developer+Meeting&iso=20130416T08 Wednesday, 16 April 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-04-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-04-16-08.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |24<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=24th+Mahara+Developer+Meeting&iso=20130226T20 Tuesday, 26 February 2013, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-02-26|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-02-26-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |23<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=23rd+Mahara+Developer+Meeting&iso=20130116T08 Wednesday, 16 January 2013, 08:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2013-01-16|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2013/mahara-dev.2013-01-16-08.04.log.html IRC log]<br />
|-<br />
| style="text-align: center" |22<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=22nd+Mahara+Developer+Meeting&iso=20121121T20 Wednesday, 21 November 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-11-21|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-11-21-20.07.log.html IRC log]<br />
|-<br />
| style="text-align: center" |21<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20121017T0730&msg=21st%20Mahara%20Developer%20Meeting Wednesday, 17 October 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-10-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-10-17-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |20<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=20th+Mahara+Developer+Meeting&iso=20120829T20 Wednesday, 29 August 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-08-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-08-29-20.10.log.html IRC log]<br />
|-<br />
| style="text-align: center" |19<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=19th+Mahara+Developer+Meeting&iso=20120731T0730 Tuesday, 31 July 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-07-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-07-31-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |18<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=18th+Mahara+Developer+Meeting&iso=20120627T2000 Wednesday, 27 June 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-06-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-06-27-20.03.log.html IRC log]<br />
|-<br />
| style="text-align: center" |17<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=17th+Mahara+Developer+Meeting&iso=20120523T0730 Wednesday, 23 May 2012, 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-05-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-05-23-07.37.log.html IRC log]<br />
|-<br />
| style="text-align: center" |16<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?msg=16th+Mahara+Developer+Meeting&iso=20120425T20 Wednesday, 25 April 2012, 20:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-04-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-04-25-20.02.log.html IRC log]<br />
|-<br />
| style="text-align: center" |15<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120327T0730 Tuesday, 27 March 2012, 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-03-27|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-27-07.41.log.html IRC log]<br />
|-<br />
| style="text-align: center" |14<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20120131T1930 Tuesday, 31 January 2012 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2012-01-31|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-01-31-19.33.log.html IRC log]<br />
|-<br />
| style="text-align: center" |13<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111206T0730 Tuesday, 6 December 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-12-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-12-06-07.32.log.html IRC log]<br />
|-<br />
| style="text-align: center" |12<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111108T1930 Tuesday, 8 November 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-11-08|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-11-08-19.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |11<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20111005T0730 Wednesday, 5 October 2011 - 7:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-10-05|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-10-05-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |10<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110906T1930 Tuesday, 6 September 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-09-06|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-09-06-19.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |9<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110803T0730 Wednesday, 3 August 2011 - 07:30:00 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-08-03|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-08-03-07.34.log.html IRC log]<br />
|-<br />
| style="text-align: center" |8<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110629T1930 Wednesday 29 June 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-06-29|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-06-29-19.35.log.html IRC log]<br />
|-<br />
| style="text-align: center" |7<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?iso=20110525T0730 Wednesday 25 May 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-05-25|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-05-25-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |6<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=20&month=4&year=2011&hour=19&min=30&sec=0&p1=0 Wednesday 20 April 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-04-20|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-04-20-19.40.log.html IRC log]<br />
|-<br />
| style="text-align: center" |5<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=23&month=3&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 23 March 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-03-23|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-03-23-07.31.log.html IRC log]<br />
|-<br />
| style="text-align: center" |4<br />
| style="text-align: left" |[http://bit.ly/e29nNk Thursday, 17 February 2011 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-02-17|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-02-17-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |3<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/fixedtime.html?day=19&month=1&year=2011&hour=7&min=30&sec=0&p1=0 Wednesday, 19 January 2011 - 07:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2011-01-19|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2011/mahara-dev.2011-01-19-07.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |2<br />
| style="text-align: left" |[http://www.timeanddate.com/worldclock/meetingdetails.html?year=2010&month=12&day=14&hour=19&min=30&sec=0&p1=22&p2=189&p3=268&iv=1800 Tuesday 14 December 2010 - 19:30 UTC]<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-12-14|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-12-14-19.30.log.html IRC log]<br />
|-<br />
| style="text-align: center" |1<br />
| style="text-align: left" |Wednesday 10 November 2010 - 07:30 UTC (following [https://mahara.org/interaction/forum/topic.php?id=2070 a discussion])<br />
| style="text-align: center" |[[Developer Area/Developer Meetings/2010-11-10|Agenda]]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.html Minutes]<br />
| style="text-align: center" |[http://meetbot.mahara.org/mahara-dev/2010/mahara-dev.2010-11-10-07.34.log.html IRC log]<br />
|}<br />
<br />
===Other meetings===<br />
<br />
{| summary="Summary including Time, Date, Agenda, Minutes and IRC logs from meetings" style="border-collapse: collapse; border: 1px solid;" width="600" cellpadding="1px" border="1"<br />
! style="text-align: center" |Meeting title<br />
! style="text-align: center" |Date/Time<br />
! style="text-align: center" |Agenda<br />
! style="text-align: center" |Minutes<br />
! style="text-align: center" |IRC log<br />
|-<br />
| style="text-align: center" |Theme / plugin repository<br />
| style="text-align: left" |Thursday, 8 March 2012, 18:00-19:30 UTC<br />
| style="text-align: center" |<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.html Minutes]<br />
| style="text-align: center" |<br />
[http://meetbot.mahara.org/mahara-dev/2012/mahara-dev.2012-03-08-18.21.log.html IRC log]<br />
|}</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Permissions_Framework&diff=13271Developer Area/Permissions Framework2022-05-20T02:42:37Z<p>Dianne.tennent: </p>
<hr />
<div>{| class="wikitable"<br />
|+Mahara Permissions Framework<br />
|-<br />
! !!Site admin!!Site staff!!Account holder!!Institution admin!!Institution staff!!Institution member!!Group admin!!Group tutor!!Group member<br />
|-<br />
|Administer all plugins installed on the site<br />
||✅||❌<br />
|❌||❌||❌||❌||❌||❌||❌<br />
|-<br />
|Force certain settings to be used for all institutions<br />
||✅||❌||❌||❌||❌||❌||❌||❌||❌<br />
|-<br />
|Masquerade as any account holder on the site<br />
||✅||❌||❌||❌||❌||❌||❌||❌||❌<br />
|-<br />
|Change certain institution settings<br />
||✅||❌||❌||✅||❌||❌<br />
|❌||❌||❌<br />
|-<br />
|Create Institution wide content<br />
||✅||❌||❌||✅||❌||❌||❌||❌||❌<br />
|-<br />
|Masquerade as any member of the institution they administer<br />
||✅||❌||❌||✅||❌||❌||❌||❌||❌<br />
|-<br />
|See account holders’ real names<br />
||✅||✅||❌||✅||✅||❌||❌||❌||❌<br />
|-<br />
|Have access to reports<br />
||✅||✅||❌||✅||✅||❌||❌||❌||❌<br />
|-<br />
|Assess SmartEvidence collections<br />
||✅||✅||❌||✅||✅||❌||❌||❌||❌<br />
|-<br />
|'''GROUPS'''<br />
|Site admin<br />
|Site staff<br />
|Account holder<br />
|Institution<br />
|Institution staff<br />
|Institution member<br />
|Group admin<br />
|Group tutor<br />
|Group member<br />
|-<br />
|Create controlled groups<br />
||✅||✅||❌||✅||✅||❌||✅*||❌||❌<br />
|-<br />
|Decide whether submissions are allowed in the group<br />
||✅||✅||❌||✅||✅||❌||✅*||✅**||❌<br />
|-<br />
|Change the settings of a group<br />
||✅||✅||✅***||✅||✅||✅***||✅||✅**||❌<br />
|-<br />
|Create groups<br />
||✅<br />
|✅||✅||✅||✅||✅||✅||✅||✅<br />
|-<br />
|Edit group pages<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|-<br />
|Create template portfolios<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|<br />
|}<br />
<nowiki>*</nowiki> depending on institution or site level permissions<br><br />
<nowiki>**</nowiki> tutor permissions granted by Group admin<br><br />
<nowiki>***</nowiki> only as Group admin<br><br />
<br />
{| class="wikitable"<br />
|+Sharing Permissions<br />
<br />
|-<br />
! !!Peer!!Manager!!Reviewer<br />
|-<br />
|Provide feedback on the ‘Peer Assessment’ block<br />
||Yes||No||No<br />
|-<br />
|Verify a portfolio page on the ‘Sign-off’ block<br />
||No||Yes||No<br />
|-<br />
|Verify a portfolio via the ‘Portfolio completion’ page (if selected by portfolio author)<br />
||No||No||Yes<br />
|}</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions&diff=13201Developer Area/Release Instructions2022-05-06T05:06:04Z<p>Dianne.tennent: /* Overview */</p>
<hr />
<div>Mahara creates 2 major releases per year (April: XX.04.0, and October: XX.10.0). We also create 'minor point' releases when we need to add urgent fixes and security updates (e.g. XX.04.1, XX.04.2 etc). Doing minor point releases is slightly different to doing a major release. On a major release, we apply any security and bug fixes that are included in the release as a minor point ''update'' to other supported versions. Minor point ''releases'' are for security fixes or urgent bug fixes - these happen between major releases.<br />
<br />
==Overview==<br />
{| class="wikitable mw-collapsible"<br />
!'''STAGES'''<br />
!'''Release Candidate'''<br />
!'''Major release''' <br />
'''(XX.XX.0)'''<br />
!'''Minor point release''' <br />
'''(XX.XX.1 etc)'''<br />
|-<br />
|'''1. Release prep'''<br />
|RC Prep<br />
|'''[[Developer_Area/Release_Instructions/Pre-release|Major Prep]]'''<br />
|Minor Prep<br />
|-<br />
|'''2. The Release''' - Outcome: zip file is available on Launchpad<br />
|'''[[Developer_Area/Release_Instructions/Release_Candidate|RC Release]]'''<br />
|'''[[Developer_Area/Release_Instructions/Release_day|Major Release]]'''<br />
|Minor Release<br />
|-<br />
|'''3. Release follow-up admin''' - forums, bug report updating, admin etc<br />
|'''[[Developer_Area/Release_Instructions/Release_Candidate_Follow_Up|RC Follow up]]'''<br />
|✅<br />
|✅<br />
|-<br />
|'''4. Community site upgrades'''<br />
|NA<br />
|✅<br />
|NA<br />
|-<br />
|'''5. Minor point updates''' for all supported versions and clients who have paid for that support package<br />
|NA<br />
|✅<br />
|✅<br />
|-<br />
|'''6. Retro workshop'''<br />
|NA<br />
|✅<br />
|NA<br />
|}<br />
<br />
==Links to documentation==<br />
<br />
#A week before the release: [[Developer Area/Release Instructions/Comms|Comms]]<br />
#[[Developer Area/Release Instructions/Pre-release|Pre-release steps for developers]]<br />
#[[Developer_Area/Release_Instructions/Release_day|Release day steps for developers]]<br />
<br />
====Extra info for devs====<br />
<br />
*[[Developer_Area/Release_Instructions/Creating_a_GPG_key|Creating a GPG key]]<br />
*[[Developer Area/Version Numbering Policy|Version Numbering policy]]<br />
*[[Developer Area/Release Policy|Release Policy]]<br />
<br />
<br />
'''OLD DOCUMENTATION (Beware: only kept for posterity)'''<br />
<br />
*[[Developer Area/Release Instructions/Major Release|Major release]]<br />
*[[Developer Area/Release Instructions/Release Candidate|Release candidate]]<br />
*[[Developer Area/Old release Instructions|Old release instructions]]<br />
*[[Developer_Area/Release_Instructions/Release_script|Release script]]<br />
<br />
[[category:Developer Area]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Release_Candidate_Follow_Up&diff=13200Developer Area/Release Instructions/Release Candidate Follow Up2022-05-06T05:04:33Z<p>Dianne.tennent: Created page with "<br /> == 📣 Announcements == Publish news Developer Area/Release Instructions/Release day#.28Release%20candidate.29%20Announcements|forum posts to get people to test the..."</p>
<hr />
<div><br /><br />
<br />
== 📣 Announcements ==<br />
Publish news [[Developer Area/Release Instructions/Release day#.28Release%20candidate.29%20Announcements|forum posts to get people to test the release]].<br />
<br />
== 📋 Additional tasks ==<br />
<br />
=== (Release candidate) Announcements ===<br />
The main purpose of an RC is to get people to test the release for any major bugs. Therefore, we do not consider the RC as a release and only announce it through: Twitter, IRC, and the mahara.org news forum.<br />
<br />
=== Update master.dev.mahara.org ===<br />
Updating master.dev.mahara.org however is useful for users who do not have somewhere to set up a test instance but would like to check out the changes.<br />
<br />
=== News forum post template for RC1 ===<br />
🟡 Kristina<br />
<br />
Example for 21.10 and 22.04.<br />
<br />
== News forum template for second and/or final RC= ==<br />
🟡 Kristina<br />
<br />
''Note: Outdated - needs updating''<br />
<br />
Subject: Second release candidate for Mahara 1.4 available<br />
<br />
Based on the feedback we have received so far, this will most likely be the last release candidate before the final 1.4 release:<br />
<br />
* <nowiki>https://launchpad.net/mahara/1.4/1.4rc2</nowiki><br />
<br />
New Features for the Release Candidate are listed on Launchpad with the newfeature tag:<br />
<br />
* <nowiki>https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature</nowiki><br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.4 can be found by clicking here.<br />
<br />
* <nowiki>https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606</nowiki><br />
<br />
If you haven't had a chance to test it out yet, please do so now and report any bugs on the tracker:<br />
<br />
* <nowiki>https://bugs.launchpad.net/mahara/+filebug</nowiki><br />
<br />
This is your last chance to make sure your upgrade to 1.4 will be smooth. If nothing major is reported in the next few days, we will be cutting the 1.4.0 release in about a week.<br />
<br />
Cheers,<br />
<br />
The 1.4 Release Managers</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Pre-release&diff=13193Developer Area/Release Instructions/Pre-release2022-05-06T04:45:22Z<p>Dianne.tennent: Remove RC Only sections</p>
<hr />
<div>This document details the steps to follow in preparation of a release.<br />
<br />
'''📣 Please complete these steps a week before the release, [https://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Pre-release_investigation_and_tasks#Let_the_Mahara_Partners_know_1_week_prior_to_the_release especially announcements to Mahara Partners].'''<br />
<br />
Done? [[Developer Area/Release Instructions/Release day|> Go to 'Release day']]<br />
<br />
==📰 Comms==<br />
<br />
===Let Mahara Partners know one week before the release===<br />
<small>🚨 Note: Kristina doe</small>version to <code>XX.XX.0dev</code> (if you just created the <code>XX.XX_DEV</code> <small>s this task as a [https://mahara.org/group/members.php?id=1037 member of the Mahara partners group].</small><br />
<br />
Let Mahara Partners know in the [https://mahara.org/interaction/forum/view.php?id=1136 Partner forum] that a release is upcoming. Details are not shared though as the reports are still embargoed.p<br />
===Draft the Security Announcements forum post===<br />
Get the announcement information from the [https://bugs.launchpad.net/mahara/+bug/1959146/comments/1 Launchpad bug comment/description] and format it for the [https://mahara.org/interaction/forum/topic.php?id=8996 security announcement] into HTML.<br />
===Draft the News forum post for the security releases===<br />
Take the URLs of the newly created security announcement forum posts and insert them into the following template [https://mahara.org/interaction/forum/topic.php?id=8997 to look something like this].<br />
<br />
Note: links to the Security Announcements forum posts will be available once created one the day of the release.<br />
''Title: Mahara security releases <insert milestones part of this release>''<br />
<br />
Kia ora Mahara community,<br />
<br />
We have security updates available for all supported versions of Mahara:<br />
<br />
- [https://launchpad.net/mahara/+milestone/21.10.1 21.10.1]<br />
<br />
- [https://launchpad.net/mahara/+milestone/21.10.1 XX.XX.X]<br />
<br />
- [https://launchpad.net/mahara/+milestone/21.10.1 XX.XX.X]<br /><br />
<br />
These updates include fixes for a number of security vulnerabilities for which you can find more information:<br />
<br />
[https://mahara.org/interaction/forum/topic.php?id=8995 Title of security issue]<br />
<br />
...<br />
<br />
You can [https://mahara.org/download download the latest versions from Launchpad or check out the relevant branch from Git].<br />
We recommend you update your instance of Mahara to the latest minor point release of the series of Mahara you<br />
<br />
are using, or if you are on an unsupported version of Mahara, upgrade to a supported one.<br /><br />
<br />
Thank you,<br />
<br />
<Name of person leading the release><br />
<br />
==🔎 Investigation==<br />
<br />
===Check bug reports and their statuses===<br />
<br />
#Book a meeting with the tech lead, product owner, and those working on the release.<br />
#Get the series number for each supported Mahara version, e.g. 21.10, 21.04, and 20.10.<br />
#Go to Mahara's [https://launchpad.net/mahara Launchpad] to check there is an unreleased milestone for each supported series number. <small>See above for how to create new milestones.</small><br />
#Go through each bug report and check they have allocated milestone(s). If they don't, ask the Tech lead where to allocate them.<br />
<br />
===Track the associated bug reports===<br />
<br />
#Create a spreadsheet to track the bugs. [ethercalc.net/track-bugs Example template]<br />
#Go through each supported milestone's bugs:<br />
##See associated bugs for a milestone by going to 'Series and Milestones' and clicking the first milestone with an empty circle above it.<br />
##Record the progress status of the bug, i.e. if there someone is working on it, and the patch URL in reviews.mahara.org<br />
#Double check that all 'Private security' bug reports with patches that are ready, go into the release.<br />
<br />
===Follow-on tasks===<br />
<br />
#Get bugs code-reviewed, verified, and merged by delegating tasks to team members.<br />
#[https://wiki.wgtn.cat-it.co.nz/wiki/ELearning/Mahara/Team/Documentation/Dealing_with_backporting_and_merging_issues#Single_commit Backport security patches] into supported Mahara versions.<br />
#Update your [https://ethercalc.net/track-bugstracking tracking of bugs] daily<br />
#Share with the team what needs doing to progress and share the tasks<br />
<br />
==📋 Checklist for devs before starting==<br />
🟡 '''Start up'''<br />
<br />
*Confirm who will be the 'Release Manager'<br />
*Confirm what type of release this is, i.e. major or minor point.<br />
*Update your [https://git.mahara.org/scripts/mahara-scripts mahara-scripts] repo so that you have the [http://git.mahara.org/scripts/mahara-scripts/blobs/master/release.php latest release script]. The release script will clone the git.mahara.org repo and generate the zip files that go onto Launchpad.<br />
*Make sure you have a [https://wiki.mahara.org/wiki/Developer_Area/Release_Instructions/Creating_a_GPG_key valid GPG key] added to your Launchpad account. This is required to run the release script, which generates a signed zip file based on this GPG key. See [https://launchpad.net/~username/+editpgpkeys https://launchpad.net/~username/+editpgpkeys.]<br />
<br />
🟡 '''Release Manager tasks''' - '''check permissions'''<br />
<br />
*The Release Manager should make sure devs are part of the [https://launchpad.net/~mahara-security security group] so that they can see security bug reports.<br />
*Give access to those who will be responsible for posting these announcements. After the release has been created, we post information about the release in the [https://mahara.org/interaction/forum/view.php?id=1 News] and [https://mahara.org/interaction/forum/view.php?id=43 Security Announcement] forums.<br />
<br />
==🔒 Apply for CVE numbers for security fixes (release manager)==<br />
Apply for a CVE number as soon as a bug report exists for a security issue. CVE numbers that we receive are embargoed are details are not leaked until we let MITRE know that they can be published. '''Catalyst NZ staff''' also have access to that information on Seafile along with a running record of which bugs have been reported to MITRE (or others if needed).<br />
<br />
While CVE numbers are not a requirement, it is good practice and they are useful for administrators who monitor security announcements. 🛑 Note: This MITRE CVE form can '''ONLY''' be used if the issue hasn't been made public yet.<br />
<br />
#[https://cveform.mitre.org/ Apply for CVE numbers for each non-public security issue with the MITRE request form]<br />
#Add the CVE number to the security bug report using the 'Link to CVE' option on the sidebar. Note: it takes a few days for Launchpad to accept the CVE number.<br />
#Prepare the security announcement post in the Launchpad bug report through comments or updating the description.<br />
<br />
'''Security forum post template'''<br />
'''''Title...''''' '''in Mahara before''' '''''affected versions'''''<br />
Vulnerability type: ''...''<br />
Attack type: ''...''<br />
Impact(if needed): ''...''<br />
Affected components: ''...''<br />
Description: ''Affected Mahara versions'', ''and summary of issue''.<br />
Reported by: ''...''<br />
Bug report: ''Launchpad ID and URL to the bug report)''<br />
==🚧 '''Prep milestones and branches'''==<br />
(This applies to RC, major and minor point releases)<br />
<br />
====Setting up milestones on Launchpad====<br />
Go to <u><nowiki>https://launchpad.net/mahara/+milestone/</nowiki><code>X.Y.Z</code></u> ''OR'' Go to the series page and click 'Create milestone'.<br />
<br />
#Move any bugs that are not going to be part of this release to the next milestone in the series, e.g. if this is <code>X.Y.3</code> then move to <code>X.Y.4</code>. You may need to make the milestone if it doesn't already exist via <code><nowiki>https://launchpad.net/mahara/X.Y</nowiki></code> and using the 'create milestone' link.<br />
#Click on 'Create release' and give it today's date.<br />
#Double check that 'Keep the X.Y.Z milestone active' remains '''unchecked'''.<br />
<br />
===''Major release (M)''===<br />
These are done at the end of April and October.<br />
====(Major only) Update the README====<br />
Review the <code>README.md</code> file and update it to reflect any changes:<br />
<br />
#Check the supported versions of PHP, Postgres, and MySQL / MariaDB.<br />
#Check the minimum browser requirements.<br />
#Update the copyright message so it extends to the current year.<br />
#Update the [[System_Administrator's_Guide/Requirements#Software|Software requirements]] page to match the changes.<br />
<br />
Note: For PHP versions, the minimum '''and''' maximum supported version needs to be listed to avoid confusion as PHP does release versions more frequently.<br />
==🌏 Language packs==<br />
New language packs are prepped for major releases. For all releases, you need to update launchpad translations for the new Bazaar branch. See the separate instructions on [[Developer Area/Language Packs/Launchpad Branching|setting up a new Bazaar translations branch]].<br />
<br />
#<br />
<br />
<br /><br />
✨ You did it!!! Head over to [[Developer Area/Release Instructions/Release day|Release day]] ✨<br />
<br />
==Extra:==<br />
<br />
*[https://go.elearning.catalyst.net.nz/go/pipelines/mhmain-local-merge-upstream/60/runtests/1 main] GoCD pipelines<br />
<br />
<br /></div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Release_Candidate&diff=13190Developer Area/Release Instructions/Release Candidate2022-05-06T04:44:21Z<p>Dianne.tennent: Consolidate new dev branch instructions</p>
<hr />
<div>==Create the new dev branch==<br />
Note: You only need to do this for the '''first''' release candidate. If you need to do another release candidate, put it on the '''same branch.'''<br />
<br />
Create a new <code>_DEV</code> branch based off of main.<br />
<br />
*<code>git checkout main</code><br />
<br />
*<code>git checkout -b 1.10_DEV</code><br />
<br />
*<code>git push gerrit 1.10_DEV</code><br />
<br />
If Gerrit won't let you push your new branch, you can instead create it through Gerrit.<br />
<br />
*Go to [https://reviews.mahara.org/ reviews.mahara.org]<br />
*Click on 'Projects', the 'mahara' project, and then on the 'Branches' subtab.<br />
<br />
Then do the following<br />
<br />
*In the '''<code>Makefile</code>''' of the new '''<code>_DEV</code>''' branch, replace <code>main</code> with the name of the branch. Commit and make push.<br />
*Create an empty 'ChangeLog' file. Commit and <code>make push</code>. Note: the file needs a capital C and L in the name.<br />
*Update the release in <code>htdocs/lib/version.php</code> to be <code>$config->release = 'XX.XXrc1';</code><br />
<br />
==Bump the version on main==<br />
<br />
*Go to the main branch and bump the version (e.g. if you just created the <code>22.04_DEV</code> branch, bump it to <code>22.10.0dev</code> )<br />
*In <code>htdocs/lib/version.php</code> update <code>$config->series</code>, <code>$config->release</code> and <code>$config->version</code> (version should be today's date)<br />
*Update the README.md with information about how to upgrade to this version, e.g. which minimum version they should have etc<br />
*Commit and <code>make push</code><br />
<br />
==Package the release==<br />
<br />
For a Release Candidate, at this point a zip file will be generated with the Release script and made available on Launchpad for the community to test. This includes a selection of bugs that have been targeted to a the 'rc1' milestone. After the first release candidate, an rc2 milestone may be created to track which ones will go onto the final release. '''Once an rc1 or rc2 bug has been committed, its status should change back to its original .0 milestone.'''<br />
<br />
At this point, a Release Candidate has been created and goes through testing.<br />
<br />
(On the new _DEV branch, follow the usual release instructions up to Sign_and_upload_the_tarballs){{Final_Checks}}<br />
<br />
==Skip the changelog and release notes==<br />
Do not populate the changelog. For the release notes put something like ''<nowiki/>'First release candidate for 1.4''<nowiki/>'.<br />
<br />
{{Release_Script}}<br />
<br />
{{Testing}}<br />
<br />
{{Upload_Tarballs}}<br />
<br />
==Creating the new language packs branch==<br />
<br />
You need to set up launchpad translations for the new branch. See the separate instructions on [[Developer_Area/Language_Packs/Launchpad_Branching|setting up a new translations branch]].<br />
<br />
==Changelog and release notes==<br />
<br />
Do not paste the full changelog on Launchpad (that's for the actual release) and only put something like "First release candidate for 1.4" in the bullet point section of the release notes on Launchpad.<br />
<br />
==Update master.dev.mahara.org==<br />
<br />
Updating master.dev.mahara.org however is useful for users who do not have somewhere to set up a test instance but would like to check out the changes.<br />
<br />
==Do not update the bug tracker==<br />
<br />
The bug tracker does not need to be updated because no bugs should ever have an RC release as its milestone.<br />
<br />
Furthermore, these bugs are not fixed until the release has happened, so they should be left as "Fix committed".<br />
<br />
==Do not update the demo site==<br />
<br />
The demo site should always be the last '''stable''' release. The RC is not a release yet.<br />
<br />
==Announcements==<br />
<br />
The main purpose of an RC is to get people to test the release for any major bugs. Therefore, we do not consider the RC as a release and only announce it through:<br />
<br />
*Twitter<br />
*IRC<br />
*The mahara.org news forum<br />
<br />
(Note that Freshmeat is missing.)<br />
<br />
===Sample news forum post for first release candidate===<br />
<br />
Subject: First release candidate for Mahara 1.10 available<br />
<br />
We have just published the first release candidate for Mahara 1.10.<br />
<br />
This is a call for testing. If you want to make sure that Mahar 1.10 works well on your site, please help us out by testing this first release candidate:<br />
<br />
*https://launchpad.net/mahara/+milestone/1.0rc1<br />
<br />
New features for the release candidate are listed on Launchpad with the "nominatedfeature" tag.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.10 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If any of the targeted bugs affect your users, this is an opportunity for you to make sure they are fixed properly.<br />
<br />
If you find any bugs, please report them on Launchpad so they can be fixed before the 1.10.0 release:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
If important bugs are found within the next week we may produce a second release candidate. Otherwise this release candidate will become the final 1.10.0 release.<br />
<br />
Cheers,<br />
<br />
The 1.10 Release Managers<br />
<br />
===Sample forum post for second and/or final release candidate===<br />
<br />
Subject: Second release candidate for Mahara 1.4 available<br />
<br />
Based on the feedback we have received so far, this will most likely be the last release candidate before the final 1.4 release:<br />
<br />
*https://launchpad.net/mahara/1.4/1.4rc2<br />
<br />
New Features for the Release Candidate are listed on Launchpad with the newfeature tag:<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.4 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If you haven't had a chance to test it out yet, please do so now and report any bugs on the tracker:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
This is your last chance to make sure your upgrade to 1.4 will be smooth. If nothing major is reported in the next few days, we will be cutting the 1.4.0 release in about a week.<br />
<br />
Cheers,<br />
<br />
The 1.4 Release Managers</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions&diff=13175Developer Area/Release Instructions2022-05-06T04:21:08Z<p>Dianne.tennent: /* Overview */</p>
<hr />
<div>Mahara creates 2 major releases per year (April: XX.04.0, and October: XX.10.0). We also create 'minor point' releases when we need to add urgent fixes and security updates (e.g. XX.04.1, XX.04.2 etc). Doing minor point releases is slightly different to doing a major release. On a major release, we apply any security and bug fixes that are included in the release as a minor point ''update'' to other supported versions. Minor point ''releases'' are for security fixes or urgent bug fixes - these happen between major releases.<br />
<br />
==Overview==<br />
{| class="wikitable mw-collapsible"<br />
!'''STAGES'''<br />
!'''Release Candidate'''<br />
!'''Major release''' <br />
'''(XX.XX.0)'''<br />
!'''Minor point release''' <br />
'''(XX.XX.1 etc)'''<br />
|-<br />
|'''1. Release prep'''<br />
|RC Prep<br />
|'''[[Developer_Area/Release_Instructions/Pre-release|Major Prep]]'''<br />
|Minor Prep<br />
|-<br />
|'''2. The Release''' - Outcome: zip file is available on Launchpad<br />
|'''[[Developer_Area/Release_Instructions/Release_Candidate|RC Release]]'''<br />
|'''[[Developer_Area/Release_Instructions/Release_day|Major Release]]'''<br />
|Minor Release<br />
|-<br />
|'''3. Release follow-up admin''' - forums, bug report updating, admin etc<br />
|✅<br />
|✅<br />
|✅<br />
|-<br />
|'''4. Community site upgrades'''<br />
|NA<br />
|✅<br />
|NA<br />
|-<br />
|'''5. Minor point updates''' for all supported versions and clients who have paid for that support package<br />
|NA<br />
|✅<br />
|✅<br />
|-<br />
|'''6. Retro workshop'''<br />
|NA<br />
|✅<br />
|NA<br />
|}<br />
<br />
==Links to documentation==<br />
<br />
#A week before the release: [[Developer Area/Release Instructions/Comms|Comms]]<br />
#[[Developer Area/Release Instructions/Pre-release|Pre-release steps for developers]]<br />
#[[Developer_Area/Release_Instructions/Release_day|Release day steps for developers]]<br />
<br />
====Extra info for devs====<br />
<br />
*[[Developer_Area/Release_Instructions/Creating_a_GPG_key|Creating a GPG key]]<br />
*[[Developer Area/Version Numbering Policy|Version Numbering policy]]<br />
*[[Developer Area/Release Policy|Release Policy]]<br />
<br />
<br />
'''OLD DOCUMENTATION (Beware: only kept for posterity)'''<br />
<br />
*[[Developer Area/Release Instructions/Major Release|Major release]]<br />
*[[Developer Area/Release Instructions/Release Candidate|Release candidate]]<br />
*[[Developer Area/Old release Instructions|Old release instructions]]<br />
*[[Developer_Area/Release_Instructions/Release_script|Release script]]<br />
<br />
[[category:Developer Area]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Release_Candidate&diff=13173Developer Area/Release Instructions/Release Candidate2022-05-06T04:16:52Z<p>Dianne.tennent: </p>
<hr />
<div>==Create the new dev branch==<br />
Note: You only need to do this for the '''first' release candidate for each major version. If you need to do subsequent release candidates, put them on the same branch.'''<br />
<br />
Create a new <code>_DEV</code> branch based off of main.<br />
<br />
*<code>git checkout main</code><br />
<br />
*<code>git checkout -b 1.10_DEV</code><br />
<br />
*<code>git push gerrit 1.10_DEV</code><br />
<br />
If Gerrit won't let you push your new branch, you can instead create it through Gerrit.<br />
<br />
*Go to [https://reviews.mahara.org/ reviews.mahara.org]<br />
*Click on 'Projects', the 'mahara' project, and then on the 'Branches' subtab.<br />
<br />
Then do the following<br />
<br />
*In the '''<code>Makefile</code>''' of the new '''<code>_DEV</code>''' branch, replace <code>main</code> with the name of the branch. Commit and make push.<br />
*Create an empty 'ChangeLog' file. Commit and make push. Note: the file needs a capital C and L in the name.<br />
*Update the release in <code>htdocs/lib/version.php</code> to be <code>[whatever]rc1.</code> Commit and make push.<br />
<br />
==Bump the version on main==<br />
<br />
*Go to the main branch and bump the version to <code>1.5.0dev</code> (if you just created the <code>1.4_DEV</code> branch)<br />
*In <code>htdocs/lib/version.php</code> (update series, release and version - version should be today's date)<br />
*README<br />
*Commit and make push<br />
<br />
==Package the release==<br />
<br />
Now, on the new _DEV branch, follow the usual release instructions up to Sign_and_upload_the_tarballs<br />
{{Final_Checks}}<br />
<br />
==Skip the changelog and release notes==<br />
Do not populate the changelog. For the release notes put something like ''<nowiki/>'First release candidate for 1.4''<nowiki/>'.<br />
<br />
{{Release_Script}}<br />
<br />
{{Testing}}<br />
<br />
{{Upload_Tarballs}}<br />
<br />
==Creating the new language packs branch==<br />
<br />
You need to set up launchpad translations for the new branch. See the separate instructions on [[Developer_Area/Language_Packs/Launchpad_Branching|setting up a new translations branch]].<br />
<br />
==Changelog and release notes==<br />
<br />
Do not paste the full changelog on Launchpad (that's for the actual release) and only put something like "First release candidate for 1.4" in the bullet point section of the release notes on Launchpad.<br />
<br />
==Update master.dev.mahara.org==<br />
<br />
Updating master.dev.mahara.org however is useful for users who do not have somewhere to set up a test instance but would like to check out the changes.<br />
<br />
==Do not update the bug tracker==<br />
<br />
The bug tracker does not need to be updated because no bugs should ever have an RC release as its milestone.<br />
<br />
Furthermore, these bugs are not fixed until the release has happened, so they should be left as "Fix committed".<br />
<br />
==Do not update the demo site==<br />
<br />
The demo site should always be the last '''stable''' release. The RC is not a release yet.<br />
<br />
==Announcements==<br />
<br />
The main purpose of an RC is to get people to test the release for any major bugs. Therefore, we do not consider the RC as a release and only announce it through:<br />
<br />
*Twitter<br />
*IRC<br />
*The mahara.org news forum<br />
<br />
(Note that Freshmeat is missing.)<br />
<br />
===Sample news forum post for first release candidate===<br />
<br />
Subject: First release candidate for Mahara 1.10 available<br />
<br />
We have just published the first release candidate for Mahara 1.10.<br />
<br />
This is a call for testing. If you want to make sure that Mahar 1.10 works well on your site, please help us out by testing this first release candidate:<br />
<br />
*https://launchpad.net/mahara/+milestone/1.0rc1<br />
<br />
New features for the release candidate are listed on Launchpad with the "nominatedfeature" tag.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.10 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If any of the targeted bugs affect your users, this is an opportunity for you to make sure they are fixed properly.<br />
<br />
If you find any bugs, please report them on Launchpad so they can be fixed before the 1.10.0 release:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
If important bugs are found within the next week we may produce a second release candidate. Otherwise this release candidate will become the final 1.10.0 release.<br />
<br />
Cheers,<br />
<br />
The 1.10 Release Managers<br />
<br />
===Sample forum post for second and/or final release candidate===<br />
<br />
Subject: Second release candidate for Mahara 1.4 available<br />
<br />
Based on the feedback we have received so far, this will most likely be the last release candidate before the final 1.4 release:<br />
<br />
*https://launchpad.net/mahara/1.4/1.4rc2<br />
<br />
New Features for the Release Candidate are listed on Launchpad with the newfeature tag:<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.4 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If you haven't had a chance to test it out yet, please do so now and report any bugs on the tracker:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
This is your last chance to make sure your upgrade to 1.4 will be smooth. If nothing major is reported in the next few days, we will be cutting the 1.4.0 release in about a week.<br />
<br />
Cheers,<br />
<br />
The 1.4 Release Managers</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Release_Candidate&diff=13172Developer Area/Release Instructions/Release Candidate2022-05-06T04:14:48Z<p>Dianne.tennent: /* Skip the changelog and release notes */</p>
<hr />
<div>=1. Create the new dev branch=<br />
Note: You only need to do this for the '''first' release candidate for each major version. If you need to do subsequent release candidates, put them on the same branch.'''<br />
<br />
Create a new <code>_DEV</code> branch based off of main.<br />
<br />
*<code>git checkout main</code><br />
<br />
*<code>git checkout -b 1.10_DEV</code><br />
<br />
*<code>git push gerrit 1.10_DEV</code><br />
<br />
If Gerrit won't let you push your new branch, you can instead create it through Gerrit.<br />
<br />
*Go to [https://reviews.mahara.org/ reviews.mahara.org]<br />
*Click on 'Projects', the 'mahara' project, and then on the 'Branches' subtab.<br />
<br />
Then do the following<br />
<br />
*In the '''<code>Makefile</code>''' of the new '''<code>_DEV</code>''' branch, replace <code>main</code> with the name of the branch. Commit and make push.<br />
*Create an empty 'ChangeLog' file. Commit and make push. Note: the file needs a capital C and L in the name.<br />
*Update the release in <code>htdocs/lib/version.php</code> to be <code>[whatever]rc1.</code> Commit and make push.<br />
<br />
=2. Bump the version on main=<br />
<br />
*Go to the main branch and bump the version to <code>1.5.0dev</code> (if you just created the <code>1.4_DEV</code> branch)<br />
*In <code>htdocs/lib/version.php</code> (update series, release and version - version should be today's date)<br />
*README<br />
*Commit and make push<br />
<br />
=3. Package the release=<br />
<br />
Now, on the new _DEV branch, follow the usual release instructions up to Sign_and_upload_the_tarballs<br />
{{Final_Checks}}<br />
<br />
==Skip the changelog and release notes==<br />
Do not populate the changelog. For the release notes put something like ''<nowiki/>'First release candidate for 1.4''<nowiki/>'.<br />
<br />
{{Release_Script}}<br />
<br />
{{Testing}}<br />
<br />
{{Upload_Tarballs}}<br />
<br />
=4. Creating the new language packs branch=<br />
<br />
You need to set up launchpad translations for the new branch. See the separate instructions on [[Developer_Area/Language_Packs/Launchpad_Branching|setting up a new translations branch]].<br />
<br />
=5. Changelog and release notes=<br />
<br />
Do not paste the full changelog on Launchpad (that's for the actual release) and only put something like "First release candidate for 1.4" in the bullet point section of the release notes on Launchpad.<br />
<br />
=6. Update master.dev.mahara.org=<br />
<br />
Updating master.dev.mahara.org however is useful for users who do not have somewhere to set up a test instance but would like to check out the changes.<br />
<br />
=7. Do not update the bug tracker=<br />
<br />
The bug tracker does not need to be updated because no bugs should ever have an RC release as its milestone.<br />
<br />
Furthermore, these bugs are not fixed until the release has happened, so they should be left as "Fix committed".<br />
<br />
=8. Do not update the demo site=<br />
<br />
The demo site should always be the last '''stable''' release. The RC is not a release yet.<br />
<br />
=9. Announcements=<br />
<br />
The main purpose of an RC is to get people to test the release for any major bugs. Therefore, we do not consider the RC as a release and only announce it through:<br />
<br />
*Twitter<br />
*IRC<br />
*The mahara.org news forum<br />
<br />
(Note that Freshmeat is missing.)<br />
<br />
===Sample news forum post for first release candidate===<br />
<br />
Subject: First release candidate for Mahara 1.10 available<br />
<br />
We have just published the first release candidate for Mahara 1.10.<br />
<br />
This is a call for testing. If you want to make sure that Mahar 1.10 works well on your site, please help us out by testing this first release candidate:<br />
<br />
*https://launchpad.net/mahara/+milestone/1.0rc1<br />
<br />
New features for the release candidate are listed on Launchpad with the "nominatedfeature" tag.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.10 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If any of the targeted bugs affect your users, this is an opportunity for you to make sure they are fixed properly.<br />
<br />
If you find any bugs, please report them on Launchpad so they can be fixed before the 1.10.0 release:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
If important bugs are found within the next week we may produce a second release candidate. Otherwise this release candidate will become the final 1.10.0 release.<br />
<br />
Cheers,<br />
<br />
The 1.10 Release Managers<br />
<br />
===Sample forum post for second and/or final release candidate===<br />
<br />
Subject: Second release candidate for Mahara 1.4 available<br />
<br />
Based on the feedback we have received so far, this will most likely be the last release candidate before the final 1.4 release:<br />
<br />
*https://launchpad.net/mahara/1.4/1.4rc2<br />
<br />
New Features for the Release Candidate are listed on Launchpad with the newfeature tag:<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.4 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If you haven't had a chance to test it out yet, please do so now and report any bugs on the tracker:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
This is your last chance to make sure your upgrade to 1.4 will be smooth. If nothing major is reported in the next few days, we will be cutting the 1.4.0 release in about a week.<br />
<br />
Cheers,<br />
<br />
The 1.4 Release Managers</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Release_Candidate&diff=13170Developer Area/Release Instructions/Release Candidate2022-05-06T04:14:27Z<p>Dianne.tennent: /* Skip the changelog and release notes */</p>
<hr />
<div>=1. Create the new dev branch=<br />
Note: You only need to do this for the '''first' release candidate for each major version. If you need to do subsequent release candidates, put them on the same branch.'''<br />
<br />
Create a new <code>_DEV</code> branch based off of main.<br />
<br />
*<code>git checkout main</code><br />
<br />
*<code>git checkout -b 1.10_DEV</code><br />
<br />
*<code>git push gerrit 1.10_DEV</code><br />
<br />
If Gerrit won't let you push your new branch, you can instead create it through Gerrit.<br />
<br />
*Go to [https://reviews.mahara.org/ reviews.mahara.org]<br />
*Click on 'Projects', the 'mahara' project, and then on the 'Branches' subtab.<br />
<br />
Then do the following<br />
<br />
*In the '''<code>Makefile</code>''' of the new '''<code>_DEV</code>''' branch, replace <code>main</code> with the name of the branch. Commit and make push.<br />
*Create an empty 'ChangeLog' file. Commit and make push. Note: the file needs a capital C and L in the name.<br />
*Update the release in <code>htdocs/lib/version.php</code> to be <code>[whatever]rc1.</code> Commit and make push.<br />
<br />
=2. Bump the version on main=<br />
<br />
*Go to the main branch and bump the version to <code>1.5.0dev</code> (if you just created the <code>1.4_DEV</code> branch)<br />
*In <code>htdocs/lib/version.php</code> (update series, release and version - version should be today's date)<br />
*README<br />
*Commit and make push<br />
<br />
=3. Package the release=<br />
<br />
Now, on the new _DEV branch, follow the usual release instructions up to Sign_and_upload_the_tarballs<br />
{{Final_Checks}}<br />
<br />
==Skip the changelog and release notes==<br />
Do not populate the changelog. For the release notes put something like ''<nowiki/>'First release candidate for 1.4''<nowiki/>'.{{Release_Script}}<br />
<br />
{{Testing}}<br />
<br />
{{Upload_Tarballs}}<br />
<br />
=4. Creating the new language packs branch=<br />
<br />
You need to set up launchpad translations for the new branch. See the separate instructions on [[Developer_Area/Language_Packs/Launchpad_Branching|setting up a new translations branch]].<br />
<br />
=5. Changelog and release notes=<br />
<br />
Do not paste the full changelog on Launchpad (that's for the actual release) and only put something like "First release candidate for 1.4" in the bullet point section of the release notes on Launchpad.<br />
<br />
=6. Update master.dev.mahara.org=<br />
<br />
Updating master.dev.mahara.org however is useful for users who do not have somewhere to set up a test instance but would like to check out the changes.<br />
<br />
=7. Do not update the bug tracker=<br />
<br />
The bug tracker does not need to be updated because no bugs should ever have an RC release as its milestone.<br />
<br />
Furthermore, these bugs are not fixed until the release has happened, so they should be left as "Fix committed".<br />
<br />
=8. Do not update the demo site=<br />
<br />
The demo site should always be the last '''stable''' release. The RC is not a release yet.<br />
<br />
=9. Announcements=<br />
<br />
The main purpose of an RC is to get people to test the release for any major bugs. Therefore, we do not consider the RC as a release and only announce it through:<br />
<br />
*Twitter<br />
*IRC<br />
*The mahara.org news forum<br />
<br />
(Note that Freshmeat is missing.)<br />
<br />
===Sample news forum post for first release candidate===<br />
<br />
Subject: First release candidate for Mahara 1.10 available<br />
<br />
We have just published the first release candidate for Mahara 1.10.<br />
<br />
This is a call for testing. If you want to make sure that Mahar 1.10 works well on your site, please help us out by testing this first release candidate:<br />
<br />
*https://launchpad.net/mahara/+milestone/1.0rc1<br />
<br />
New features for the release candidate are listed on Launchpad with the "nominatedfeature" tag.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.10 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If any of the targeted bugs affect your users, this is an opportunity for you to make sure they are fixed properly.<br />
<br />
If you find any bugs, please report them on Launchpad so they can be fixed before the 1.10.0 release:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
If important bugs are found within the next week we may produce a second release candidate. Otherwise this release candidate will become the final 1.10.0 release.<br />
<br />
Cheers,<br />
<br />
The 1.10 Release Managers<br />
<br />
===Sample forum post for second and/or final release candidate===<br />
<br />
Subject: Second release candidate for Mahara 1.4 available<br />
<br />
Based on the feedback we have received so far, this will most likely be the last release candidate before the final 1.4 release:<br />
<br />
*https://launchpad.net/mahara/1.4/1.4rc2<br />
<br />
New Features for the Release Candidate are listed on Launchpad with the newfeature tag:<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.4 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If you haven't had a chance to test it out yet, please do so now and report any bugs on the tracker:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
This is your last chance to make sure your upgrade to 1.4 will be smooth. If nothing major is reported in the next few days, we will be cutting the 1.4.0 release in about a week.<br />
<br />
Cheers,<br />
<br />
The 1.4 Release Managers</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Release_Candidate&diff=13168Developer Area/Release Instructions/Release Candidate2022-05-06T04:12:48Z<p>Dianne.tennent: </p>
<hr />
<div>=1. Create the new dev branch=<br />
Note: You only need to do this for the '''first' release candidate for each major version. If you need to do subsequent release candidates, put them on the same branch.'''<br />
<br />
Create a new <code>_DEV</code> branch based off of main.<br />
<br />
*<code>git checkout main</code><br />
<br />
*<code>git checkout -b 1.10_DEV</code><br />
<br />
*<code>git push gerrit 1.10_DEV</code><br />
<br />
If Gerrit won't let you push your new branch, you can instead create it through Gerrit.<br />
<br />
*Go to [https://reviews.mahara.org/ reviews.mahara.org]<br />
*Click on 'Projects', the 'mahara' project, and then on the 'Branches' subtab.<br />
<br />
Then do the following<br />
<br />
*In the '''<code>Makefile</code>''' of the new '''<code>_DEV</code>''' branch, replace <code>main</code> with the name of the branch. Commit and make push.<br />
*Create an empty 'ChangeLog' file. Commit and make push. Note: the file needs a capital C and L in the name.<br />
*Update the release in <code>htdocs/lib/version.php</code> to be <code>[whatever]rc1.</code> Commit and make push.<br />
<br />
=2. Bump the version on main=<br />
<br />
*Go to the main branch and bump the version to <code>1.5.0dev</code> (if you just created the <code>1.4_DEV</code> branch)<br />
*In <code>htdocs/lib/version.php</code> (update series, release and version - version should be today's date)<br />
*README<br />
*Commit and make push<br />
<br />
=3. Package the release=<br />
<br />
Now, on the new _DEV branch, follow the usual release instructions up to Sign_and_upload_the_tarballs<br />
{{Final_Checks}}<br />
<br />
=== Skip the changelog and release notes ===<br />
Do not populate the changelog. For the release notes put something like ''<nowiki/>'First release candidate for 1.4''<nowiki/>'.{{Release_Script}}<br />
<br />
{{Testing}}<br />
<br />
{{Upload_Tarballs}}<br />
<br />
=4. Creating the new language packs branch=<br />
<br />
You need to set up launchpad translations for the new branch. See the separate instructions on [[Developer_Area/Language_Packs/Launchpad_Branching|setting up a new translations branch]].<br />
<br />
=5. Changelog and release notes=<br />
<br />
Do not paste the full changelog on Launchpad (that's for the actual release) and only put something like "First release candidate for 1.4" in the bullet point section of the release notes on Launchpad.<br />
<br />
=6. Update master.dev.mahara.org=<br />
<br />
Updating master.dev.mahara.org however is useful for users who do not have somewhere to set up a test instance but would like to check out the changes.<br />
<br />
=7. Do not update the bug tracker=<br />
<br />
The bug tracker does not need to be updated because no bugs should ever have an RC release as its milestone.<br />
<br />
Furthermore, these bugs are not fixed until the release has happened, so they should be left as "Fix committed".<br />
<br />
=8. Do not update the demo site=<br />
<br />
The demo site should always be the last '''stable''' release. The RC is not a release yet.<br />
<br />
=9. Announcements=<br />
<br />
The main purpose of an RC is to get people to test the release for any major bugs. Therefore, we do not consider the RC as a release and only announce it through:<br />
<br />
*Twitter<br />
*IRC<br />
*The mahara.org news forum<br />
<br />
(Note that Freshmeat is missing.)<br />
<br />
===Sample news forum post for first release candidate===<br />
<br />
Subject: First release candidate for Mahara 1.10 available<br />
<br />
We have just published the first release candidate for Mahara 1.10.<br />
<br />
This is a call for testing. If you want to make sure that Mahar 1.10 works well on your site, please help us out by testing this first release candidate:<br />
<br />
*https://launchpad.net/mahara/+milestone/1.0rc1<br />
<br />
New features for the release candidate are listed on Launchpad with the "nominatedfeature" tag.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.10 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If any of the targeted bugs affect your users, this is an opportunity for you to make sure they are fixed properly.<br />
<br />
If you find any bugs, please report them on Launchpad so they can be fixed before the 1.10.0 release:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
If important bugs are found within the next week we may produce a second release candidate. Otherwise this release candidate will become the final 1.10.0 release.<br />
<br />
Cheers,<br />
<br />
The 1.10 Release Managers<br />
<br />
===Sample forum post for second and/or final release candidate===<br />
<br />
Subject: Second release candidate for Mahara 1.4 available<br />
<br />
Based on the feedback we have received so far, this will most likely be the last release candidate before the final 1.4 release:<br />
<br />
*https://launchpad.net/mahara/1.4/1.4rc2<br />
<br />
New Features for the Release Candidate are listed on Launchpad with the newfeature tag:<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.4 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If you haven't had a chance to test it out yet, please do so now and report any bugs on the tracker:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
This is your last chance to make sure your upgrade to 1.4 will be smooth. If nothing major is reported in the next few days, we will be cutting the 1.4.0 release in about a week.<br />
<br />
Cheers,<br />
<br />
The 1.4 Release Managers</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions&diff=13160Developer Area/Release Instructions2022-05-06T03:46:28Z<p>Dianne.tennent: /* Overview */</p>
<hr />
<div>Mahara creates 2 major releases per year (April: XX.04.0, and October: XX.10.0). We also create 'minor point' releases when we need to add urgent fixes and security updates (e.g. XX.04.1, XX.04.2 etc). Doing minor point releases is slightly different to doing a major release. On a major release, we apply any security and bug fixes that are included in the release as a minor point ''update'' to other supported versions. Minor point ''releases'' are for security fixes or urgent bug fixes - these happen between major releases.<br />
<br />
==Overview==<br />
{| class="wikitable mw-collapsible"<br />
!'''STAGES'''<br />
!'''Release Candidate'''<br />
!'''Major release''' <br />
'''(XX.XX.0)'''<br />
!'''Minor point release''' <br />
'''(XX.XX.1 etc)'''<br />
|-<br />
|'''1. Release prep'''<br />
|RC Prep<br />
|'''[[Developer_Area/Release_Instructions/Pre-release|Major Prep]]'''<br />
|Minor Prep<br />
|-<br />
|'''2. The Release''' - Outcome: zip file is available on Launchpad<br />
|RC Release<br />
|'''[[Developer_Area/Release_Instructions/Release_day|Major Release]]'''<br />
|Minor Release<br />
|-<br />
|'''3. Release follow-up admin''' - forums, bug report updating, admin etc<br />
|✅<br />
|✅<br />
|✅<br />
|-<br />
|'''4. Community site upgrades'''<br />
|NA<br />
|✅<br />
|NA<br />
|-<br />
|'''5. Minor point updates''' for all supported versions and clients who have paid for that support package<br />
|NA<br />
|✅<br />
|✅<br />
|-<br />
|'''6. Retro workshop'''<br />
|NA<br />
|✅<br />
|NA<br />
|}<br />
<br />
==Links to documentation==<br />
<br />
#A week before the release: [[Developer Area/Release Instructions/Comms|Comms]]<br />
#[[Developer Area/Release Instructions/Pre-release|Pre-release steps for developers]]<br />
#[[Developer_Area/Release_Instructions/Release_day|Release day steps for developers]]<br />
<br />
====Extra info for devs====<br />
<br />
*[[Developer_Area/Release_Instructions/Creating_a_GPG_key|Creating a GPG key]]<br />
*[[Developer Area/Version Numbering Policy|Version Numbering policy]]<br />
*[[Developer Area/Release Policy|Release Policy]]<br />
<br />
<br />
'''OLD DOCUMENTATION (Beware: only kept for posterity)'''<br />
<br />
*[[Developer Area/Release Instructions/Major Release|Major release]]<br />
*[[Developer Area/Release Instructions/Release Candidate|Release candidate]]<br />
*[[Developer Area/Old release Instructions|Old release instructions]]<br />
*[[Developer_Area/Release_Instructions/Release_script|Release script]]<br />
<br />
[[category:Developer Area]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions&diff=13158Developer Area/Release Instructions2022-05-06T03:45:43Z<p>Dianne.tennent: /* Overview */</p>
<hr />
<div>Mahara creates 2 major releases per year (April: XX.04.0, and October: XX.10.0). We also create 'minor point' releases when we need to add urgent fixes and security updates (e.g. XX.04.1, XX.04.2 etc). Doing minor point releases is slightly different to doing a major release. On a major release, we apply any security and bug fixes that are included in the release as a minor point ''update'' to other supported versions. Minor point ''releases'' are for security fixes or urgent bug fixes - these happen between major releases.<br />
<br />
==Overview==<br />
{| class="wikitable mw-collapsible"<br />
!'''STAGES'''<br />
!'''Release Candidate'''<br />
!'''Major release''' <br />
'''(XX.XX.0)'''<br />
!'''Minor point release''' <br />
'''(XX.XX.1 etc)'''<br />
|-<br />
|'''3. Release prep'''<br />
|RC Prep<br />
|'''[[Developer_Area/Release_Instructions/Pre-release|Major Prep]]'''<br />
|Minor Prep<br />
|-<br />
|'''4. The Release''' - Outcome: zip file is available on Launchpad<br />
|RC Release<br />
|'''[[Developer_Area/Release_Instructions/Release_day|Major Release]]'''<br />
|Minor Release<br />
|-<br />
|'''5. Release follow-up admin''' - forums, bug report updating, admin etc<br />
|✅<br />
|✅<br />
|✅<br />
|-<br />
|'''6. Community site upgrades'''<br />
|NA<br />
|✅<br />
|NA<br />
|-<br />
|'''7. Minor point updates''' for all supported versions and clients who have paid for that support package<br />
|NA<br />
|✅<br />
|✅<br />
|-<br />
|'''8. Retro workshop'''<br />
|NA<br />
|✅<br />
|NA<br />
|}<br />
<br />
==Links to documentation==<br />
<br />
#A week before the release: [[Developer Area/Release Instructions/Comms|Comms]]<br />
#[[Developer Area/Release Instructions/Pre-release|Pre-release steps for developers]]<br />
#[[Developer_Area/Release_Instructions/Release_day|Release day steps for developers]]<br />
<br />
====Extra info for devs====<br />
<br />
*[[Developer_Area/Release_Instructions/Creating_a_GPG_key|Creating a GPG key]]<br />
*[[Developer Area/Version Numbering Policy|Version Numbering policy]]<br />
*[[Developer Area/Release Policy|Release Policy]]<br />
<br />
<br />
'''OLD DOCUMENTATION (Beware: only kept for posterity)'''<br />
<br />
*[[Developer Area/Release Instructions/Major Release|Major release]]<br />
*[[Developer Area/Release Instructions/Release Candidate|Release candidate]]<br />
*[[Developer Area/Old release Instructions|Old release instructions]]<br />
*[[Developer_Area/Release_Instructions/Release_script|Release script]]<br />
<br />
[[category:Developer Area]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions&diff=13157Developer Area/Release Instructions2022-05-06T03:39:53Z<p>Dianne.tennent: /* Overview */</p>
<hr />
<div>Mahara creates 2 major releases per year (April: XX.04.0, and October: XX.10.0). We also create 'minor point' releases when we need to add urgent fixes and security updates (e.g. XX.04.1, XX.04.2 etc). Doing minor point releases is slightly different to doing a major release. On a major release, we apply any security and bug fixes that are included in the release as a minor point ''update'' to other supported versions. Minor point ''releases'' are for security fixes or urgent bug fixes - these happen between major releases.<br />
<br />
==Overview==<br />
{| class="wikitable mw-collapsible"<br />
!'''STAGES'''<br />
!'''Major release''' <br />
'''(XX.XX.0)'''<br />
!'''Minor point release''' <br />
'''(XX.XX.1 etc)'''<br />
!'''Release Candidate'''<br />
|-<br />
|'''3. [[Developer_Area/Release_Instructions/Pre-release|Release prep]]'''<br />
|MajorPrep<br />
|MinorPrep<br />
|RCPrep<br />
|-<br />
|'''4. The Release''' - Outcome: zip file is available on Launchpad<br />
|'''[[Developer_Area/Release_Instructions/Release_day|Major Release]]''' <br />
|MinorRelease<br />
|RCRelease<br />
|-<br />
|'''5. Release follow-up admin''' - forums, bug report updating, admin etc<br />
|✅<br />
|✅<br />
|<br />
|-<br />
|'''6. Community site upgrades'''<br />
|✅<br />
|❌<br />
|<br />
|-<br />
|'''7. Minor point updates''' for all supported versions and clients who have paid for that support package<br />
|✅<br />
|✅<br />
|<br />
|-<br />
|'''8. Retro workshop'''<br />
|✅<br />
|❌<br />
|<br />
|}<br />
<br />
==Links to documentation==<br />
<br />
#A week before the release: [[Developer Area/Release Instructions/Comms|Comms]]<br />
#[[Developer Area/Release Instructions/Pre-release|Pre-release steps for developers]]<br />
#[[Developer_Area/Release_Instructions/Release_day|Release day steps for developers]]<br />
<br />
====Extra info for devs====<br />
<br />
*[[Developer_Area/Release_Instructions/Creating_a_GPG_key|Creating a GPG key]]<br />
*[[Developer Area/Version Numbering Policy|Version Numbering policy]]<br />
*[[Developer Area/Release Policy|Release Policy]]<br />
<br />
<br />
'''OLD DOCUMENTATION (Beware: only kept for posterity)'''<br />
<br />
*[[Developer Area/Release Instructions/Major Release|Major release]]<br />
*[[Developer Area/Release Instructions/Release Candidate|Release candidate]]<br />
*[[Developer Area/Old release Instructions|Old release instructions]]<br />
*[[Developer_Area/Release_Instructions/Release_script|Release script]]<br />
<br />
[[category:Developer Area]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Template:Upload_Tarballs&diff=13156Template:Upload Tarballs2022-05-06T03:35:36Z<p>Dianne.tennent: /* 🚀 Sign and upload the tarballs */</p>
<hr />
<div><br /><br />
Run <code>./release-X.Y.Z-cleanup.sh</code> to upload the release and clean up any temporary files.<br />
<br />
'''Note I''': If running this file stops before completion for any reason you will need to edit it and comment out the bits that did finish so that you don't run those buts twice then try the script again. For example the script does the bit where it pushes the tag to the git remote and signs the zipped files but doesn't upload them - you would need to comment out the 'git push' lines and the 'gpg --armor' lines.<br />
<br />
'''Note II''': If the zipped files fail to upload to Launchpad via the script then you will need to manually upload the zipped files and their corresponding .asc files. To do this go to the milestone page in Launchpad and click the 'Add download file' link. Set the description to: release tarball and choose the matching zipped and .asc file to upload. You will need to do this for all the three types: <code>.zip, .tar.bz2, .tar.gz</code></div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Template:Testing&diff=13155Template:Testing2022-05-06T03:35:21Z<p>Dianne.tennent: /* ✅ Testing */</p>
<hr />
<div><br /><br />
With continuous Behat testing throughout development, we only need to some basic manual testing.<br />
===Extract the build and prep the database===<br />
Test that we can install Mahara with the pre-built packages.<br />
<br />
#Extract the build (<code>.tar</code> or <code>.zip</code>) of your pre-built Mahara and make sure you can connect to it via web installer.<br />
#Drop the database and create a new blank one.<br />
<br />
===Test case #1: Install the site with the web interface===<br />
<br />
#Go to your Mahara site and click 'Install'.<br />
#Reset your database and repeat with MySQL/PostgreSQL.<br />
<br />
'''Note:''' If we are doing a <code>.0</code> release the install will complain about missing <code>$versions->$currentmajorversion</code>->latest release number but don't panic this is because the local copy of the release has the series version that doesn't exist upstream yet so we can ignore this warning·<br />
===Test case #2: Manual upgrade with the CLI and the web interface===<br />
Web interface<br />
<br />
#Install a fresh site on version <code>X.Y.Z(-1)</code>, i.e. (an earlier version).<br />
#Create a portfolio, a blog with a blogpost, a group with a forum and forum post.<br />
#Switch the code to your current release.<br />
#Check that everything still works.<br />
#Go to the site and click 'Upgrade' to get the site version to <code>X.Y.Z</code> .<br />
#Repeat with PostgreSQL/MySQL.<br />
<br />
CLI<br />
<br />
#Install a fresh site on version <code>X.Y.Z(-1)</code>, i.e. (an earlier version).<br />
#Create a portfolio, a blog with a blogpost, a group with a forum and forum post.<br />
#Switch the code to your current release.<br />
#Upgrade to <code>X.Y.Z</code> with the CLI script <code>htdocs/admin/cli/upgrade.php</code><br />
#Check that everything still works.<br />
#Repeat with PostgreSQL/MySQL.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Template:Release_Script&diff=13154Template:Release Script2022-05-06T03:35:07Z<p>Dianne.tennent: /* ⚡ The release script */</p>
<hr />
<div><br /><br />
*A git repo will be created at <code>/tmp/mahara.####/mahara/</code> cloned from https://git.mahara.org/mahara/mahara .<br />
*It builds Mahara archives based on the given _DEV branch and puts thme into your current folder. ( <code>.zip</code>, <code>.tar.gz.asc</code>, and <code>.tar.bz2.asc</code>)<br />
*You will get a <code>release-X.Y.Z-cleanup.sh</code> script to run later.<br />
*(Major releases .0) A new <code>_STABLE</code> branch is created off the <code>_DEV</code> branch.<br />
<br />
===Run the script===<br />
<br />
#Go into <code>mahara-scripts</code> and <code>git pull</code> the latest version.<br />
#Run <code>./release.php X.Y.Z X.Y_DEV</code>.<br />
#*<code>X.Y.Z</code> is the new branch that will be made. This is also used in the archive file names.<br />
#*<code>X.Y_DEV</code> is the existing branch we will create the new release from.<br />
#*If the <code>Z</code> in <code>X.Y.Z</code> is "0" this will also create a new <code>_STABLE</code> branch.<br />
#When prompted, insert your changelog.<br />
<br />
Any data you enter for the prompts will go into the Launchpad release page. You can enter it here, or leave it empty here and enter it directly into the Launchpad webpage.<br />
<br />
'''Check the terminal output in case there are GPG errors'''<br />
<br />
E.g. <code>Tag new version bump commit as 'X.YRC2_RELEASE' error: gpg failed to sign the data error: unable to sign the tag</code><br />
<br />
So this is what I did to fix it, all commands are on command line:<br />
<br />
#Update the gpg program with: <code> git config --global gpg.program gpg2 </code><br />
#Test if it is working with: <code> echo "test" | gpg2 --clearsign</code><br />
<br />
It wasn't so I had to do: <code> export GPG_TTY=$(tty)</code><br />
<br />
then run again <code> echo "test" | gpg2 --clearsign</code><br />
<br />
Run <code>release.php</code> command again and check if it still gives the error.<br />
<br />
'''Do not reboot your machine''' in the middle of doing a release or you will have to run through the release script again.<br />
<br />
Note: For release candidates the commit message should be empty.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Template:Changelog_And_Release_Notes&diff=13153Template:Changelog And Release Notes2022-05-06T03:34:53Z<p>Dianne.tennent: /* 📓 Changelog and release notes */</p>
<hr />
<div><br /><br />
<br />
Use the templates below to structure your changelog and release notes.<br />
====(Release candidate) Skip the changelog and release notes====<br />
Do not populate the changelog. For the release notes put something like ''<nowiki/>'First release candidate for 1.4''<nowiki/>'. <br />
''<nowiki/>''<nowiki/>''<nowiki/>''<br />
====Changelog template====<br />
Note: You can copy the list of bugs from the milestone page (https://launchpad.net/mahara/+milestone/XX.YY.Z) and re-format the list.<br />
<br />
[[File:Changelog template.png|720x720px|link=]]<br />
====Release notes templates====<br />
See paste: [https://paste.wgtn.cat-it.co.nz/BjqzmddeQ8RLPOhq#HJYM6/6JF46ErvKAHVR0Lw$0 release notes template for major releases].<br />
<br />
[[File:Major release release notes 21.10.png|774x774px|link=]]<br />
<br />
See paste: [https://paste.wgtn.cat-it.co.nz/1Nf6ZBfG7H5azgP6#D668H8zI4mhgupx98Z50iA$0 release notes template for minor point releases].<br />
<br />
[[File:Minor point release release notes.png|484x484px|link=]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Release_day&diff=13152Developer Area/Release Instructions/Release day2022-05-06T03:34:30Z<p>Dianne.tennent: </p>
<hr />
<div>Not ready? [[Developer Area/Release Instructions/Pre-release|> Go to 'Pre-release]]'<br />
==📋 Final Checks==<br />
{{Final_Checks}}<br />
<br />
==📓 Changelog and release notes==<br />
{{Changelog_And_Release_Notes}}<br />
<br />
==⚡ The release script==<br />
{{Release_Script}}<br />
<br />
==✅ Testing==<br />
{{Testing}}<br />
<br />
==🚀 Sign and upload the tarballs==<br />
{{Upload_Tarballs}}<br />
<br />
==🐛 Update bugs statuses==<br />
Go to Launchpad and click on all of the bugs targeted for that milestone and move them from 'Fix committed' to 'Fix released'.<br />
<br />
'''OR''' <br />
<br />
In Firefox, go to the milestone page and open all the bugs in new tabs at once by pasting the following into the browser console.<br />
var result = document.evaluate("//tbody//tr[contains(., 'Committed')]//a[contains(@href, 'bugs')]", document, null, XPathResult.ANY_TYPE,null ); var mycount=0; while(node = result.iterateNext()) { window.open(node.href, '_blank'); mycount++; if (mycount == 50) { break; } }<br />
You will ned to allow popups for the site for this to work and it will open up to 50 bugs where the status is 'Committed'. If you have more than 50 to do - mark the first ones 'released' - refresh the list and do again.<br />
<br />
Now is also a good time to create the next release number in the series. Any remaining bugs that were not fixed for this release may be transferred to the next one, if they're still on the roadmap but were simply delayed.<br />
<br />
==📔 Update your milestone==<br />
<br />
# Paste your release notes into the 'Release notes' area.<br />
# Check that the milestone is inactive now that it has a release.<br />
<br />
[[File:Inactive milestone.png|alt=Screenshot showing the status for a milestone for it is 'inactive'.]]<br /><br />
<br />
==📗 Update wiki.mahara.org releases page==<br />
<br />
#Go to the [[Releases|releases page]]'s section 'Current and upcoming releases.'<br />
#Update the text: ''"The latest '''stable''' version of Mahara is <code>MAJOR_VERSION</code> , released on <code>DATE</code>"''<br />
#Add a new row for the major release. (If you edit the area, there is a template available to copy)<br />
#Add the release date and release notes for the minor point releases.<br />
#Update the major version where 18 months has passed since its release to be 'unsupported'.<br />
<br />
[[File:Updating current and upcoming releases.png|799x799px]]<br />
<br />
==🌏 Update the language packs==<br />
[[Developer Area/Language Packs/Launchpad Branching|Create a new translation branch on launchpad.net and update the language scripts]] for the new release so that they appear on http://langpacks.mahara.org.<br />
<br />
Check that the language packs have updated:<br />
<br />
#Install a site on the released version.<br />
#Install the Japanese language pack (a fully translated lang pack is easier to check with)<br />
<br />
Note: The number of language packs we support can be more than the supported Mahara versions as some people want to update old lang packs.<br />
<br />
==📣 Announcements==<br />
General announcements<br />
<br />
#Publish your prepared [https://mahara.org/interaction/forum/view.php?id=43 security forum] and [https://mahara.org/interaction/forum/view.php?id=1 news forum] posts.<br />
#(RC only) Publish news [[Developer Area/Release Instructions/Release day#.28Release candidate.29 Announcements|forum posts to get people to test the release]].<br />
#(Major release only) Publish news [[Developer Area/Release Instructions/Release day#.28Major release.29 Announcements|forum posts to announce the major release.]]<br />
<br />
==🔒 Update MITRE about release for CVE number publication==<br />
🟡 Kristina<br />
<br />
If the release included security updates for which CVE numbers had been issued, [https://cveform.mitre.org/ request an update to the CVE number] so it can be published.<br />
<br />
==📋 Additional tasks==<br />
Go to [[Developer Area/Release Instructions/Release day#.28Major%20release.29%20Announcements|'Major release' tasks]]<br />
<br />
===(Release candidate) Announcements===<br />
The main purpose of an RC is to get people to test the release for any major bugs. Therefore, we do not consider the RC as a release and only announce it through: [https://twitter.com/maharaproject Twitter], IRC, and the mahara.org news forum.<br />
<br />
===(Release candidate) Update master.dev.mahara.org===<br />
Updating master.dev.mahara.org however is useful for users who do not have somewhere to set up a test instance but would like to check out the changes.<br />
<br />
===(Release candidate) News forum post template for RC1===<br />
🟡 Kristina<br />
<br />
[https://mahara.org/interaction/forum/topic.php?id=8934 Example for 21.10] and [https://mahara.org/interaction/forum/topic.php?id=8934 22.04].<br />
<br />
===(Release candidate) News forum template for second and/or final RC===<br />
🟡 Kristina<br />
<br />
''Note: Outdated - needs updating''<br />
<br />
Subject: Second release candidate for Mahara 1.4 available<br />
<br />
Based on the feedback we have received so far, this will most likely be the last release candidate before the final 1.4 release:<br />
<br />
*https://launchpad.net/mahara/1.4/1.4rc2<br />
<br />
New Features for the Release Candidate are listed on Launchpad with the newfeature tag:<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.4 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If you haven't had a chance to test it out yet, please do so now and report any bugs on the tracker:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
This is your last chance to make sure your upgrade to 1.4 will be smooth. If nothing major is reported in the next few days, we will be cutting the 1.4.0 release in about a week.<br />
<br />
Cheers,<br />
<br />
The 1.4 Release Managers<br />
<br />
===(Major release) Announcements===<br />
🟡 Kristina<br />
<br />
Release notes posted in the [https://mahara.org/interaction/forum/topic.php?id=8955 News forum] (copy the format from the release notes for the previous release).<br />
<br />
#Publish the news forum post to announce the major release (includes [[Developer Area/Release Instructions/Release day#.28Major release.29 Generate the git stats|git stats]]).<br />
#Change the topic of <code>#mahara</code> and include a link to forum topic on <code>#mahara-dev</code><br />
#Make a post in the following socials:<br />
<br />
*[https://twitter.com/maharaproject Twitter]<br />
*[http://freecode.com/projects/mahara freecode]<br />
*[https://www.linkedin.com/groups?home=&gid=2037561 LinkedIn]<br />
*Facebook: [https://www.facebook.com/groups/MaharaDE13/ Mahara DE], [https://www.facebook.com/groups/mahara.users/ Mahara in Japanese], [https://www.facebook.com/groups/moodlemaharameetup/ Moodle-Mahara Meetup], and [https://www.facebook.com/groups/maharausergroup/ MUG]<br />
*Identi.ca post which will also immediately post to Twitter.<br />
*Any other places where you want to announce the release.<br />
<br />
===(Major release) Manage merge conflicts in version.php in backports===<br />
When backporting patches, sometimes the <code>htdocs/lib/version.php</code> will get merge conflicts because of a new DB upgrade step.<br />
<br />
[[File:Example backporting from 22.04 to 21.10.png|654x654px]]<br />
<br />
Solve the conflict:<br />
<br />
#Keep the set of code that matches to the version you're working with, e.g. in this case, the top section.<br />
#Increment the <code>$config->version</code> number by 1.<br />
#Copy the incremented version number and replace the last step in <code>htdocs/lib/db/upgrade.php</code><br />
#Check that the new number is higher than the previous upgrade step.<br />
<br />
In certain situations, $config->version number needs to be incremented and copied over the most latest DB upgrade steps, ensuring that it's later than the other DB upgrade steps.<br />
<br />
===(Major release) Bump the <code>stable_version</code> on mahara.org===<br />
This is done via the <code>htdocs/admin/cli/create_version.php</code> script which is controlled by cron and will update once a day.<br />
<br />
If you can't wait for the cron you can log into the server and run the CLI script manually:<br />
sudo -u www-data php create_version.php<br />
Note: Deploying the change to testing site will not show change - only deploy to production will<br />
<br />
===(Major release) Update community sites install (currently Catalyst hosted)===<br />
Check if any of the merge-branches need attention: https://go.elearning.catalyst.net.nz/go/pipelines#!/<br />
<br />
*[[demo.mahara.org]], including prep site and change the version number and release date on the homepage and dashboard page (via Admin menu -> Configure site -> Static pages)<br />
*[[mahara.org]] (at minimum to latest minor point release of the supported version it runs on)<br />
*[[master.dev.mahara.org]]<br />
<br />
Update the installed language packs on the demo site. As a guideline, language packs that are 90% or more translated should be installed.<br />
<br />
===(Major release) Generate the git stats===<br />
The git contributor stats go in the release announcement on the Mahara News forum.<br />
<br />
#Clone our version of <code>gitdm</code> from the [https://git.mahara.org/scripts/mahara-scripts mahara-scripts repo]: <code>git clone git@git.mahara.org:scripts/mahara-scripts.git</code><br />
#Get the name of the current release branch, e.g. <code>21.10_DEV</code><br />
#Get the previous branch's first release tag, e.g. <code>21.04.0_RELEASE</code><br />
<br />
Generate the stats:<br />
<br />
#<code>cd ~/path/to/mahara.git (your local mahara repo)</code><br />
#<code>git log -p -M --no-merges 21.04.0_RELEASE..21.10_DEV > ~/mahara.log</code><br />
#<code>cd ~/code/mahara-scripts/gitdm/</code><br />
#<code>cat ~/mahara.log | ./gitdm -c mahara.config -u -s -z -o results -h results.html</code><br />
<br />
Check the results file:<br />
<br />
*Ensure that developers are only listed once (otherwise add them to the <code>mahara.aliases</code> file).<br />
*Make sure that there is no "(unknown)" company by making sure that all of the necessary mappings are in <code>mahara.domain-map</code>.<br />
*If there are "(unknown)" company results, look through the generated text file "<code>database.dump</code>" to locate the unmapped individuals/emails.<br />
<br />
===(Major release) Update Launchpad series statuses===<br />
Update the status of our series in Launchpad for both the [https://launchpad.net/mahara Mahara] and [https://launchpad.net/mahara-lang Mahara-Lang] projects:<br />
<br />
*Change <u>Future/trunk series</u> to '''"Active development"''' and its description to '''"Release of Mahara X.Y, scheduled for April/October YYYY"'''<br />
*Change the series <u>just released</u> to '''"Current stable release"'''<br />
*Change the series of all the <u>supported series</u> to '''"Supported"'''<br />
*Change the series that has just fallen <u>out of support</u> to '''"Obsolete"'''<br />
<br />
===(Major release) Update the Mahara manual===<br />
<br />
#Remove the version that is now out of support from the quick links to older manuals.<br />
#Mention on the now unsupported manual that it is unsupported.<br />
#Change the sentence on the index page of the new release to include the release date and add a link to the release announcement.<br />
#Change the redirect in the index.html of the manual-builder package (Catalyst only).</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Template:Final_Checks&diff=13151Template:Final Checks2022-05-06T03:22:38Z<p>Dianne.tennent: </p>
<hr />
<div>🟡 '''Security team''' (if you don't have +2 review status, you won't be able to see these patches)<br />
<br />
🚨 Make sure that any security reviews/patches are merged before proceeding 🚨<br />
<br />
*Merge the 'Private' security patches.<br />
*Update the related Launchpad bugs to 'Public security'.<br />
<br />
🟡 '''Release manager'''<br />
<br />
*CVE #'s - Security issues have an assigned CVE number?<br />
*Backporting - security fixes backported to all supported versions that need them?<br />
*Bugs fixed - all bugs going into his release have their fixes ''merged'' for all supported versions?<br />
*Comms - to Mahara partners + drafted the [[Developer Area/Release Instructions/Pre-release investigation and tasks#.F0.9F.93.B0 Comms|forum posts]]?<br />
<br />
🟡 '''All devs'''<br />
<br />
*Confirm your minor point release number, i.e. check the latest minor point release and add 1, e.g. 21.10.4 -> 21.10.5<br />
*(Security team) Cherry-pick the security bugs with the status ' Confirmed' to your minor point branch. e.g. _DEV<br />
*Create a [[Developer Area/Release Instructions/Pre-release investigation and tasks#Creating a release on Launchpad|release]] on the milestone on Launchpad to receive the release generated tarballs<br />
*<code>git pull [https://git.mahara.org/scripts/mahara-scripts mahara-scripts]</code><br />
*Valid GPG - ensure you have a [https://wiki.mahara.org/wiki/Developer_Area/Release_Instructions/Creating_a_GPG_key valid GPG key] added to your Launchpad account: See https://launchpad.net/~username/+editpgpkeys<br />
*<code>lptools</code> - ensure you have the lp-upload-project installed for uploading the release tars: <code> apt-get install lptools</code></div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Release_day&diff=13150Developer Area/Release Instructions/Release day2022-05-06T03:22:09Z<p>Dianne.tennent: </p>
<hr />
<div>Not ready? [[Developer Area/Release Instructions/Pre-release|> Go to 'Pre-release]]'<br />
==📋 Final Checks==<br />
{{Final_Checks}}<br />
<br />
==📓 Changelog and release notes==<br />
Use the templates below to structure your changelog and release notes.<br />
<br />
====(Release candidate) Skip the changelog and release notes====<br />
Do not populate the changelog. For the release notes put something like ''<nowiki/>'First release candidate for 1.4''<nowiki/>'.<br />
<br />
====Changelog template====<br />
Note: You can copy the list of bugs from the milestone page (https://launchpad.net/mahara/+milestone/XX.YY.Z) and re-format the list. <br />
<br />
[[File:Changelog template.png|720x720px]]<br /><br />
====Release notes templates====<br />
See paste: [https://paste.wgtn.cat-it.co.nz/BjqzmddeQ8RLPOhq#HJYM6/6JF46ErvKAHVR0Lw$0 release notes template for major releases].<br />
<br />
[[File:Major release release notes 21.10.png|774x774px]]<br />
<br />
See paste: [https://paste.wgtn.cat-it.co.nz/1Nf6ZBfG7H5azgP6#D668H8zI4mhgupx98Z50iA$0 release notes template for minor point releases].<br />
<br />
[[File:Minor point release release notes.png|484x484px]]<br />
==⚡ The release script==<br />
<br />
*A git repo will be created at <code>/tmp/mahara.####/mahara/</code> cloned from https://git.mahara.org/mahara/mahara .<br />
*It builds Mahara archives based on the given _DEV branch and puts thme into your current folder. ( <code>.zip</code>, <code>.tar.gz.asc</code>, and <code>.tar.bz2.asc</code>)<br />
*You will get a <code>release-X.Y.Z-cleanup.sh</code> script to run later.<br />
*(Major releases .0) A new <code>_STABLE</code> branch is created off the <code>_DEV</code> branch.<br />
<br />
===Run the script===<br />
<br />
#Go into <code>mahara-scripts</code> and <code>git pull</code> the latest version.<br />
#Run <code>./release.php X.Y.Z X.Y_DEV</code>.<br />
#*<code>X.Y.Z</code> is the new branch that will be made. This is also used in the archive file names.<br />
#*<code>X.Y_DEV</code> is the existing branch we will create the new release from.<br />
#*If the <code>Z</code> in <code>X.Y.Z</code> is "0" this will also create a new <code>_STABLE</code> branch.<br />
#When prompted, insert your changelog.<br />
<br />
Any data you enter for the prompts will go into the Launchpad release page. You can enter it here, or leave it empty here and enter it directly into the Launchpad webpage.<br />
<br />
'''Check the terminal output in case there are GPG errors'''<br />
<br />
E.g. <code>Tag new version bump commit as 'X.YRC2_RELEASE' error: gpg failed to sign the data error: unable to sign the tag</code><br />
<br />
So this is what I did to fix it, all commands are on command line:<br />
<br />
#Update the gpg program with: <code> git config --global gpg.program gpg2 </code><br />
#Test if it is working with: <code> echo "test" | gpg2 --clearsign</code><br />
<br />
It wasn't so I had to do: <code> export GPG_TTY=$(tty)</code><br />
<br />
then run again <code> echo "test" | gpg2 --clearsign</code><br />
<br />
Run <code>release.php</code> command again and check if it still gives the error.<br />
<br />
'''Do not reboot your machine''' in the middle of doing a release or you will have to run through the release script again.<br />
<br />
Note: For release candidates the commit message should be empty.<br />
<br />
==✅ Testing==<br />
With continuous Behat testing throughout development, we only need to some basic manual testing. <br />
<br />
===Extract the build and prep the database===<br />
Test that we can install Mahara with the pre-built packages.<br />
<br />
#Extract the build (<code>.tar</code> or <code>.zip</code>) of your pre-built Mahara and make sure you can connect to it via web installer.<br />
#Drop the database and create a new blank one.<br />
<br />
===Test case #1: Install the site with the web interface===<br />
<br />
#Go to your Mahara site and click 'Install'.<br />
#Reset your database and repeat with MySQL/PostgreSQL.<br />
<br />
'''Note:''' If we are doing a <code>.0</code> release the install will complain about missing <code>$versions->$currentmajorversion</code>->latest release number but don't panic this is because the local copy of the release has the series version that doesn't exist upstream yet so we can ignore this warning·<br />
<br />
===Test case #2: Manual upgrade with the CLI and the web interface===<br />
Web interface<br />
<br />
#Install a fresh site on version <code>X.Y.Z(-1)</code>, i.e. (an earlier version).<br />
#Create a portfolio, a blog with a blogpost, a group with a forum and forum post.<br />
#Switch the code to your current release.<br />
#Check that everything still works.<br />
#Go to the site and click 'Upgrade' to get the site version to <code>X.Y.Z</code> .<br />
#Repeat with PostgreSQL/MySQL.<br />
<br />
CLI <br />
<br />
#Install a fresh site on version <code>X.Y.Z(-1)</code>, i.e. (an earlier version).<br />
#Create a portfolio, a blog with a blogpost, a group with a forum and forum post.<br />
#Switch the code to your current release.<br />
#Upgrade to <code>X.Y.Z</code> with the CLI script <code>htdocs/admin/cli/upgrade.php</code><br />
#Check that everything still works.<br />
#Repeat with PostgreSQL/MySQL.<br />
<br />
==🚀 Sign and upload the tarballs==<br />
Run <code>./release-X.Y.Z-cleanup.sh</code> to upload the release and clean up any temporary files.<br />
<br />
'''Note I''': If running this file stops before completion for any reason you will need to edit it and comment out the bits that did finish so that you don't run those buts twice then try the script again. For example the script does the bit where it pushes the tag to the git remote and signs the zipped files but doesn't upload them - you would need to comment out the 'git push' lines and the 'gpg --armor' lines.<br />
<br />
'''Note II''': If the zipped files fail to upload to Launchpad via the script then you will need to manually upload the zipped files and their corresponding .asc files. To do this go to the milestone page in Launchpad and click the 'Add download file' link. Set the description to: release tarball and choose the matching zipped and .asc file to upload. You will need to do this for all the three types: <code>.zip, .tar.bz2, .tar.gz</code><br />
<br />
==🐛 Update bugs statuses==<br />
Go to Launchpad and click on all of the bugs targeted for that milestone and move them from 'Fix committed' to 'Fix released'.<br />
<br />
'''OR''' <br />
<br />
In Firefox, go to the milestone page and open all the bugs in new tabs at once by pasting the following into the browser console.<br />
var result = document.evaluate("//tbody//tr[contains(., 'Committed')]//a[contains(@href, 'bugs')]", document, null, XPathResult.ANY_TYPE,null ); var mycount=0; while(node = result.iterateNext()) { window.open(node.href, '_blank'); mycount++; if (mycount == 50) { break; } }<br />
You will ned to allow popups for the site for this to work and it will open up to 50 bugs where the status is 'Committed'. If you have more than 50 to do - mark the first ones 'released' - refresh the list and do again.<br />
<br />
Now is also a good time to create the next release number in the series. Any remaining bugs that were not fixed for this release may be transferred to the next one, if they're still on the roadmap but were simply delayed.<br />
<br />
==📔 Update your milestone==<br />
<br />
# Paste your release notes into the 'Release notes' area.<br />
# Check that the milestone is inactive now that it has a release.<br />
<br />
[[File:Inactive milestone.png|alt=Screenshot showing the status for a milestone for it is 'inactive'.]]<br /><br />
<br />
==📗 Update wiki.mahara.org releases page==<br />
<br />
#Go to the [[Releases|releases page]]'s section 'Current and upcoming releases.'<br />
#Update the text: ''"The latest '''stable''' version of Mahara is <code>MAJOR_VERSION</code> , released on <code>DATE</code>"''<br />
#Add a new row for the major release. (If you edit the area, there is a template available to copy)<br />
#Add the release date and release notes for the minor point releases.<br />
#Update the major version where 18 months has passed since its release to be 'unsupported'.<br />
<br />
[[File:Updating current and upcoming releases.png|799x799px]]<br />
<br />
==🌏 Update the language packs==<br />
[[Developer Area/Language Packs/Launchpad Branching|Create a new translation branch on launchpad.net and update the language scripts]] for the new release so that they appear on http://langpacks.mahara.org.<br />
<br />
Check that the language packs have updated:<br />
<br />
#Install a site on the released version.<br />
#Install the Japanese language pack (a fully translated lang pack is easier to check with)<br />
<br />
Note: The number of language packs we support can be more than the supported Mahara versions as some people want to update old lang packs.<br />
<br />
==📣 Announcements==<br />
General announcements<br />
<br />
#Publish your prepared [https://mahara.org/interaction/forum/view.php?id=43 security forum] and [https://mahara.org/interaction/forum/view.php?id=1 news forum] posts.<br />
#(RC only) Publish news [[Developer Area/Release Instructions/Release day#.28Release candidate.29 Announcements|forum posts to get people to test the release]].<br />
#(Major release only) Publish news [[Developer Area/Release Instructions/Release day#.28Major release.29 Announcements|forum posts to announce the major release.]]<br />
<br />
==🔒 Update MITRE about release for CVE number publication==<br />
🟡 Kristina<br />
<br />
If the release included security updates for which CVE numbers had been issued, [https://cveform.mitre.org/ request an update to the CVE number] so it can be published.<br />
<br />
==📋 Additional tasks==<br />
Go to [[Developer Area/Release Instructions/Release day#.28Major%20release.29%20Announcements|'Major release' tasks]]<br />
<br />
===(Release candidate) Announcements===<br />
The main purpose of an RC is to get people to test the release for any major bugs. Therefore, we do not consider the RC as a release and only announce it through: [https://twitter.com/maharaproject Twitter], IRC, and the mahara.org news forum.<br />
<br />
===(Release candidate) Update master.dev.mahara.org===<br />
Updating master.dev.mahara.org however is useful for users who do not have somewhere to set up a test instance but would like to check out the changes.<br />
<br />
===(Release candidate) News forum post template for RC1===<br />
🟡 Kristina<br />
<br />
[https://mahara.org/interaction/forum/topic.php?id=8934 Example for 21.10] and [https://mahara.org/interaction/forum/topic.php?id=8934 22.04].<br />
<br />
===(Release candidate) News forum template for second and/or final RC===<br />
🟡 Kristina<br />
<br />
''Note: Outdated - needs updating''<br />
<br />
Subject: Second release candidate for Mahara 1.4 available<br />
<br />
Based on the feedback we have received so far, this will most likely be the last release candidate before the final 1.4 release:<br />
<br />
*https://launchpad.net/mahara/1.4/1.4rc2<br />
<br />
New Features for the Release Candidate are listed on Launchpad with the newfeature tag:<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.milestone%3Alist=64606&field.tag=nominatedfeature<br />
<br />
We've also done lots of bug fixing is this release cycle. The full list of changes that have been made for 1.4 can be found by clicking here.<br />
<br />
*https://bugs.launchpad.net/mahara/+bugs?field.status%3Alist=FIXCOMMITTED&field.status%3Alist=FIXRELEASED&field.milestone%3Alist=64606<br />
<br />
If you haven't had a chance to test it out yet, please do so now and report any bugs on the tracker:<br />
<br />
*https://bugs.launchpad.net/mahara/+filebug<br />
<br />
This is your last chance to make sure your upgrade to 1.4 will be smooth. If nothing major is reported in the next few days, we will be cutting the 1.4.0 release in about a week.<br />
<br />
Cheers,<br />
<br />
The 1.4 Release Managers<br />
<br />
===(Major release) Announcements===<br />
🟡 Kristina<br />
<br />
Release notes posted in the [https://mahara.org/interaction/forum/topic.php?id=8955 News forum] (copy the format from the release notes for the previous release).<br />
<br />
#Publish the news forum post to announce the major release (includes [[Developer Area/Release Instructions/Release day#.28Major release.29 Generate the git stats|git stats]]).<br />
#Change the topic of <code>#mahara</code> and include a link to forum topic on <code>#mahara-dev</code><br />
#Make a post in the following socials:<br />
<br />
*[https://twitter.com/maharaproject Twitter]<br />
*[http://freecode.com/projects/mahara freecode]<br />
*[https://www.linkedin.com/groups?home=&gid=2037561 LinkedIn]<br />
*Facebook: [https://www.facebook.com/groups/MaharaDE13/ Mahara DE], [https://www.facebook.com/groups/mahara.users/ Mahara in Japanese], [https://www.facebook.com/groups/moodlemaharameetup/ Moodle-Mahara Meetup], and [https://www.facebook.com/groups/maharausergroup/ MUG]<br />
*Identi.ca post which will also immediately post to Twitter.<br />
*Any other places where you want to announce the release.<br />
<br />
===(Major release) Manage merge conflicts in version.php in backports===<br />
When backporting patches, sometimes the <code>htdocs/lib/version.php</code> will get merge conflicts because of a new DB upgrade step.<br />
<br />
[[File:Example backporting from 22.04 to 21.10.png|654x654px]]<br />
<br />
Solve the conflict:<br />
<br />
#Keep the set of code that matches to the version you're working with, e.g. in this case, the top section.<br />
#Increment the <code>$config->version</code> number by 1.<br />
#Copy the incremented version number and replace the last step in <code>htdocs/lib/db/upgrade.php</code><br />
#Check that the new number is higher than the previous upgrade step.<br />
<br />
In certain situations, $config->version number needs to be incremented and copied over the most latest DB upgrade steps, ensuring that it's later than the other DB upgrade steps.<br />
<br />
===(Major release) Bump the <code>stable_version</code> on mahara.org===<br />
This is done via the <code>htdocs/admin/cli/create_version.php</code> script which is controlled by cron and will update once a day.<br />
<br />
If you can't wait for the cron you can log into the server and run the CLI script manually:<br />
sudo -u www-data php create_version.php<br />
Note: Deploying the change to testing site will not show change - only deploy to production will<br />
<br />
===(Major release) Update community sites install (currently Catalyst hosted)===<br />
Check if any of the merge-branches need attention: https://go.elearning.catalyst.net.nz/go/pipelines#!/<br />
<br />
*[[demo.mahara.org]], including prep site and change the version number and release date on the homepage and dashboard page (via Admin menu -> Configure site -> Static pages)<br />
*[[mahara.org]] (at minimum to latest minor point release of the supported version it runs on)<br />
*[[master.dev.mahara.org]]<br />
<br />
Update the installed language packs on the demo site. As a guideline, language packs that are 90% or more translated should be installed.<br />
<br />
===(Major release) Generate the git stats===<br />
The git contributor stats go in the release announcement on the Mahara News forum.<br />
<br />
#Clone our version of <code>gitdm</code> from the [https://git.mahara.org/scripts/mahara-scripts mahara-scripts repo]: <code>git clone git@git.mahara.org:scripts/mahara-scripts.git</code><br />
#Get the name of the current release branch, e.g. <code>21.10_DEV</code><br />
#Get the previous branch's first release tag, e.g. <code>21.04.0_RELEASE</code><br />
<br />
Generate the stats:<br />
<br />
#<code>cd ~/path/to/mahara.git (your local mahara repo)</code><br />
#<code>git log -p -M --no-merges 21.04.0_RELEASE..21.10_DEV > ~/mahara.log</code><br />
#<code>cd ~/code/mahara-scripts/gitdm/</code><br />
#<code>cat ~/mahara.log | ./gitdm -c mahara.config -u -s -z -o results -h results.html</code><br />
<br />
Check the results file:<br />
<br />
*Ensure that developers are only listed once (otherwise add them to the <code>mahara.aliases</code> file).<br />
*Make sure that there is no "(unknown)" company by making sure that all of the necessary mappings are in <code>mahara.domain-map</code>.<br />
*If there are "(unknown)" company results, look through the generated text file "<code>database.dump</code>" to locate the unmapped individuals/emails.<br />
<br />
===(Major release) Update Launchpad series statuses===<br />
Update the status of our series in Launchpad for both the [https://launchpad.net/mahara Mahara] and [https://launchpad.net/mahara-lang Mahara-Lang] projects:<br />
<br />
*Change <u>Future/trunk series</u> to '''"Active development"''' and its description to '''"Release of Mahara X.Y, scheduled for April/October YYYY"'''<br />
*Change the series <u>just released</u> to '''"Current stable release"'''<br />
*Change the series of all the <u>supported series</u> to '''"Supported"'''<br />
*Change the series that has just fallen <u>out of support</u> to '''"Obsolete"'''<br />
<br />
===(Major release) Update the Mahara manual===<br />
<br />
#Remove the version that is now out of support from the quick links to older manuals.<br />
#Mention on the now unsupported manual that it is unsupported.<br />
#Change the sentence on the index page of the new release to include the release date and add a link to the release announcement.<br />
#Change the redirect in the index.html of the manual-builder package (Catalyst only).</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Template:Testing&diff=13149Developer Area/Release Instructions/Template:Testing2022-05-06T03:15:05Z<p>Dianne.tennent: Dianne.tennent moved page Developer Area/Release Instructions/Template:Testing to Template:Testing</p>
<hr />
<div>#REDIRECT [[Template:Testing]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Template:Testing&diff=13148Template:Testing2022-05-06T03:15:05Z<p>Dianne.tennent: Dianne.tennent moved page Developer Area/Release Instructions/Template:Testing to Template:Testing</p>
<hr />
<div><br /><br />
==✅ Testing==<br />
With continuous Behat testing throughout development, we only need to some basic manual testing.<br />
===Extract the build and prep the database===<br />
Test that we can install Mahara with the pre-built packages.<br />
<br />
#Extract the build (<code>.tar</code> or <code>.zip</code>) of your pre-built Mahara and make sure you can connect to it via web installer.<br />
#Drop the database and create a new blank one.<br />
<br />
===Test case #1: Install the site with the web interface===<br />
<br />
#Go to your Mahara site and click 'Install'.<br />
#Reset your database and repeat with MySQL/PostgreSQL.<br />
<br />
'''Note:''' If we are doing a <code>.0</code> release the install will complain about missing <code>$versions->$currentmajorversion</code>->latest release number but don't panic this is because the local copy of the release has the series version that doesn't exist upstream yet so we can ignore this warning·<br />
===Test case #2: Manual upgrade with the CLI and the web interface===<br />
Web interface<br />
<br />
#Install a fresh site on version <code>X.Y.Z(-1)</code>, i.e. (an earlier version).<br />
#Create a portfolio, a blog with a blogpost, a group with a forum and forum post.<br />
#Switch the code to your current release.<br />
#Check that everything still works.<br />
#Go to the site and click 'Upgrade' to get the site version to <code>X.Y.Z</code> .<br />
#Repeat with PostgreSQL/MySQL.<br />
<br />
CLI<br />
<br />
#Install a fresh site on version <code>X.Y.Z(-1)</code>, i.e. (an earlier version).<br />
#Create a portfolio, a blog with a blogpost, a group with a forum and forum post.<br />
#Switch the code to your current release.<br />
#Upgrade to <code>X.Y.Z</code> with the CLI script <code>htdocs/admin/cli/upgrade.php</code><br />
#Check that everything still works.<br />
#Repeat with PostgreSQL/MySQL.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Template:Release_Script&diff=13147Developer Area/Release Instructions/Template:Release Script2022-05-06T03:14:22Z<p>Dianne.tennent: Dianne.tennent moved page Developer Area/Release Instructions/Template:Release Script to Template:Release Script</p>
<hr />
<div>#REDIRECT [[Template:Release Script]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Template:Release_Script&diff=13146Template:Release Script2022-05-06T03:14:22Z<p>Dianne.tennent: Dianne.tennent moved page Developer Area/Release Instructions/Template:Release Script to Template:Release Script</p>
<hr />
<div><br /><br />
==⚡ The release script==<br />
<br />
*A git repo will be created at <code>/tmp/mahara.####/mahara/</code> cloned from https://git.mahara.org/mahara/mahara .<br />
*It builds Mahara archives based on the given _DEV branch and puts thme into your current folder. ( <code>.zip</code>, <code>.tar.gz.asc</code>, and <code>.tar.bz2.asc</code>)<br />
*You will get a <code>release-X.Y.Z-cleanup.sh</code> script to run later.<br />
*(Major releases .0) A new <code>_STABLE</code> branch is created off the <code>_DEV</code> branch.<br />
<br />
===Run the script===<br />
<br />
#Go into <code>mahara-scripts</code> and <code>git pull</code> the latest version.<br />
#Run <code>./release.php X.Y.Z X.Y_DEV</code>.<br />
#*<code>X.Y.Z</code> is the new branch that will be made. This is also used in the archive file names.<br />
#*<code>X.Y_DEV</code> is the existing branch we will create the new release from.<br />
#*If the <code>Z</code> in <code>X.Y.Z</code> is "0" this will also create a new <code>_STABLE</code> branch.<br />
#When prompted, insert your changelog.<br />
<br />
Any data you enter for the prompts will go into the Launchpad release page. You can enter it here, or leave it empty here and enter it directly into the Launchpad webpage.<br />
<br />
'''Check the terminal output in case there are GPG errors'''<br />
<br />
E.g. <code>Tag new version bump commit as 'X.YRC2_RELEASE' error: gpg failed to sign the data error: unable to sign the tag</code><br />
<br />
So this is what I did to fix it, all commands are on command line:<br />
<br />
#Update the gpg program with: <code> git config --global gpg.program gpg2 </code><br />
#Test if it is working with: <code> echo "test" | gpg2 --clearsign</code><br />
<br />
It wasn't so I had to do: <code> export GPG_TTY=$(tty)</code><br />
<br />
then run again <code> echo "test" | gpg2 --clearsign</code><br />
<br />
Run <code>release.php</code> command again and check if it still gives the error.<br />
<br />
'''Do not reboot your machine''' in the middle of doing a release or you will have to run through the release script again.<br />
<br />
Note: For release candidates the commit message should be empty.</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Template:Final_Checks&diff=13139Developer Area/Release Instructions/Template:Final Checks2022-05-06T03:12:48Z<p>Dianne.tennent: Dianne.tennent moved page Developer Area/Release Instructions/Template:Final Checks to Template:Final Checks</p>
<hr />
<div>#REDIRECT [[Template:Final Checks]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Template:Final_Checks&diff=13138Template:Final Checks2022-05-06T03:12:48Z<p>Dianne.tennent: Dianne.tennent moved page Developer Area/Release Instructions/Template:Final Checks to Template:Final Checks</p>
<hr />
<div><br />
<br />
<big>'''📋 Final checks'''</big><br />
<br />
🟡 '''Security team''' (if you don't have +2 review status, you won't be able to see these patches)<br />
<br />
🚨 Make sure that any security reviews/patches are merged before proceeding 🚨<br />
<br />
*Merge the 'Private' security patches.<br />
*Update the related Launchpad bugs to 'Public security'.<br />
<br />
🟡 '''Release manager'''<br />
<br />
*CVE #'s - Security issues have an assigned CVE number?<br />
*Backporting - security fixes backported to all supported versions that need them?<br />
*Bugs fixed - all bugs going into his release have their fixes ''merged'' for all supported versions?<br />
*Comms - to Mahara partners + drafted the [[Developer Area/Release Instructions/Pre-release investigation and tasks#.F0.9F.93.B0 Comms|forum posts]]?<br />
<br />
🟡 '''All devs'''<br />
<br />
*Confirm your minor point release number, i.e. check the latest minor point release and add 1, e.g. 21.10.4 -> 21.10.5<br />
*(Security team) Cherry-pick the security bugs with the status ' Confirmed' to your minor point branch. e.g. _DEV<br />
*Create a [[Developer Area/Release Instructions/Pre-release investigation and tasks#Creating a release on Launchpad|release]] on the milestone on Launchpad to receive the release generated tarballs<br />
*<code>git pull [https://git.mahara.org/scripts/mahara-scripts mahara-scripts]</code><br />
*Valid GPG - ensure you have a [https://wiki.mahara.org/wiki/Developer_Area/Release_Instructions/Creating_a_GPG_key valid GPG key] added to your Launchpad account: See https://launchpad.net/~username/+editpgpkeys<br />
*<code>lptools</code> - ensure you have the lp-upload-project installed for uploading the release tars: <code> apt-get install lptools</code></div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Template:Changelog_And_Release_Notes&diff=13137Developer Area/Release Instructions/Template:Changelog And Release Notes2022-05-06T03:10:56Z<p>Dianne.tennent: Dianne.tennent moved page Developer Area/Release Instructions/Template:Changelog And Release Notes to Template:Changelog And Release Notes</p>
<hr />
<div>#REDIRECT [[Template:Changelog And Release Notes]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Template:Changelog_And_Release_Notes&diff=13136Template:Changelog And Release Notes2022-05-06T03:10:56Z<p>Dianne.tennent: Dianne.tennent moved page Developer Area/Release Instructions/Template:Changelog And Release Notes to Template:Changelog And Release Notes</p>
<hr />
<div><br /><br />
==📓 Changelog and release notes==<br />
Use the templates below to structure your changelog and release notes.<br />
====(Release candidate) Skip the changelog and release notes====<br />
Do not populate the changelog. For the release notes put something like ''<nowiki/>'First release candidate for 1.4''<nowiki/>'. <br />
''<nowiki/>''<nowiki/>''<nowiki/>''<br />
====Changelog template====<br />
Note: You can copy the list of bugs from the milestone page (https://launchpad.net/mahara/+milestone/XX.YY.Z) and re-format the list.<br />
<br />
[[File:Changelog template.png|720x720px|link=]]<br />
====Release notes templates====<br />
See paste: [https://paste.wgtn.cat-it.co.nz/BjqzmddeQ8RLPOhq#HJYM6/6JF46ErvKAHVR0Lw$0 release notes template for major releases].<br />
<br />
[[File:Major release release notes 21.10.png|774x774px|link=]]<br />
<br />
See paste: [https://paste.wgtn.cat-it.co.nz/1Nf6ZBfG7H5azgP6#D668H8zI4mhgupx98Z50iA$0 release notes template for minor point releases].<br />
<br />
[[File:Minor point release release notes.png|484x484px|link=]]</div>Dianne.tennenthttps://wiki.mahara.org/index.php?title=Developer_Area/Release_Instructions/Template:Upload_Tarballs&diff=13133Developer Area/Release Instructions/Template:Upload Tarballs2022-05-06T03:09:51Z<p>Dianne.tennent: Dianne.tennent moved page Developer Area/Release Instructions/Template:Upload Tarballs to Template:Upload Tarballs</p>
<hr />
<div>#REDIRECT [[Template:Upload Tarballs]]</div>Dianne.tennent