Category Archives: BlogHub

My first pull request

Crazy to think that, even though I have had a GitHub account for 5 years and have poked, played and forked things, I have never made a pull request and contributed something to another project until today.

I attribute that mostly to the fact that I stopped actually developing and writing code right around the same time as I signed up for a GitHub account, and the fact that it took me a long time to grok how GitHub works. Honestly, I am still not totally sure I understand how GitHub works, but after a great session with Paul Hibbitts at the Festival of Learning last week where I had a chance to dig into both Grav and GitHub, I finally feel like I can work around GitHub with some level of confidence. Enough that when I saw an opportunity to contribute to a project earlier today I thought, “I can help!”

The trigger was a tweet from the web annotation project Hypothes.is. I’ve been playing with Hypothes.is since hearing about the project from David Wiley a few years ago. It is maturing into a really great annotation system that has found some use among educators, including Robin DeRosa who is using Hypothes.is as an annotation tool on an open textbook she has published in PressBooks.

The tweet from Hypothes.is pointed me to a small project that Kris Shaffer is working on – a WordPress plugin that will allow you to aggregate your Hypothes.is annotations on a page or post on your WordPress site.

As Kris points out on his blog post about the plugin, there are some compelling use cases

I envision a number of possible uses for Hypothes.is Aggregator. As I write in my post on hypothes.is as a public research notebook, you can use this plugin to make a public research notebook on your WordPress site. Read something interesting, annotate it, and aggregate those annotations ? perhaps organized by topic ? on your domain. They will automatically update. Just set it and leave it alone.

I also see this as a tool for a class. Many instructors already use hypothes.is by assigning a reading that students will annotate together. Hyopthes.is Aggregator makes it easy to assign a topic, rather than a reading, and ask students to find their own readings on the web, annotate them, and tag them with the course tag. Then Hypothes.is Aggregator can collect all the annotations with the class tag in one place, so students and instructors can see and follow-up on each other’s annotations. Similar activities can be done by a collaborative research group or in an unconference session.

I went to his GitHub site, downloaded the plugin and fired it up. It worked (although the Cover theme I am using has done some funky formatting to it, which i need to adjust). But when I took a look at the GitHub site, I noticed that Kris had no README file on the Github site and the actual instructions on how to install and use the plugin were only on his blog post. Aha! A chance for me to actually contribute something to a project! So, I fired up my Atom editor, forked his repo and added a README.md file with instructions that i copied and pasted from his blog post on how to install and use the plugin.

So far so good. Now to figure out how to actually do a pull request. i thought that, before I do this (and not knowing exactly what might happen when I hit the Pull Request button) I should check with Kris. So I fire him off a tweet.

Ok, all good. I used these instructions from GitHub on how to launch a pull request and a few minutes late, my README file was sitting in Kris’s GitHub repo.

I am still not totally sure what I am doing, but having that first pull request under my belt has given me a boost of GitHub confidence.

Image: GitHub (cropped from original) by Ben Nuttall CC-BY-SA GitHub (crop) used here released under same CC-BY-SA license.

Open Case Studies sprint

 

I have been working with a number of people at UBC on open education projects, and we recently held a sprint for one of them: a set of open case studies on sustainability topics.

Background

Last year I worked with Daniel Munro and Jenna Omassi from the AMS (student government at UBC) on numerous open education projects, and Daniel had an idea: in addition to trying to raise awareness and adoption of open educational resources (OER) like open textbooks (and others), why don’t we try to create our own OER at UBC that others could use? Of course, many people here are creating OER (though more resources are just public and free than are open in the sense of having a license that allows reuse and remixing), but we wanted to start a larger project that numerous people could contribute to, including students.

Daniel was inspired by the ChemWiki project, which has now expanded to a bunch of other science wikis, and wondered if we could start creating something somewhat like that–where numerous people contribute to a resource that can be used in on-campus courses as well as beyond. We decided it might be good to create a set of case studies that both instructors and students could author and edit, and that could be used in courses (either with students adding to them, or doing assignments based on them, or writing entirely new case studies). And since we wanted the project to involve people from different disciplines, we thought sustainability and environmental ethics would be a good topic because those are approached from numerous disciplines.

We applied for and received a TLEF grant from UBC to get this project going. It paid for:

  • a 2-day sprint to start writing the case studies, plus a prep workshop beforehand to get people used to writing on the UBC Wiki (where the case studies are hosted)
    • all the support staff to help with these, plus the food! :)
  • graduate research assistants to help instructors design and implement assignments using the case studies for their courses, and to write up a toolkit for teaching with these case studies, so others can benefit from their wisdom!

We found several instructors who were interested in writing case studies and got everything going for the sprint, which happened May 19-20, 2016.

I have to say: this was mostly Daniel’s idea, and he did a great deal of the work for it, so congratulations to him!

The Sprint: May 19-20, 2016

The sprint was in this funny-looking room in the UBC Student Union Building--the Nest

The sprint was in this funny-looking room in the UBC Student Union Building–the Nest

We invited instructors who were able to come these two days to write case studies, as well as students who wanted to help as well. Many of the students worked as partners with the instructors: they were in charge of finding openly licensed images, diagrams, or other resources for the case studies and citing them correctly, as well as helping with formatting on the UBC Wiki. Thus, for part of the sprint we had instructors and students doing different things.

Facilitators for the sprint:

  • Lucas Wright and Cindy Underhill from the Centre for Teaching, Learning and Technology at UBC
    • They were in charge of doing most of the facilitating of the activities during the two days, though Daniel Munro and I did some too
    • They are also really knowledgeable about the UBC Wiki so could help with any questions or issues with the platform

 

  • Erin Fields from the UBC Library
    • Erin worked mostly with the students on finding and citing openly licensed materials for the case studies, but she was also on hand to answer any questions about licensing and copyright for all of us
    • She is also expert at the UBC Wiki!

 

  • Daniel Munro from the AMS (student government) and me
    • We did some facilitation of activities, and then generally helped wherever needed. I did a little help with the answering Wiki questions, and I also spent a good deal of time finding images that might be used for some of the case studies

 

Lucas Wright on Day 1

Lucas Wright on Day 1

Day 1

Introduction

We introduced ourselves and talked about the various roles of the people in the room. We also outlined the sprint process and determined what we wanted to have completed by the end of the two days, and what kind of map we would need to get there (what we’d need to have completed at various checkpoints).

IMG_2025

Finalizing case study principles and template (instructors)

We had tried to get, before the sprint, a finalized list of principles for the case studies (what audience should one write for? what kinds of things should be emphasized in these case studies?) as well as a template (what sections should they have?). We started that process at the prep workshop, but didn’t finish it so we did so during the sprint itself.

First, we asked people to look at the draft list of guiding principles we had created together during the prep workshop–we posted these on large pieces of paper at the front of the room.

IMG_2027

Instructors then worked in groups to see if they still agreed with these and whether they wanted to add anything. What was added were the questions off to the right.

Daniel Munro putting up the template charts

Daniel Munro putting up the template charts

Then we worked with the draft template that Daniel and I had come up with to see if people thought the headings on the template for the various sections would work for their case studies. We posted those headings on pieces of paper on the wall and then asked each person to use sticky notes to brainstorm what they would put under those headings. Through this process we asked them to consider whether anything in the template needed to be changed or added.

Student workshop

While the instructors were working on the principles and template for the case studies, the students were in a workshop in another part of the room, learning about open licenses and how to find and cite openly licensed resources for the case studies. See this student sprint guide for information about what they learned about and what their role was during the two days of the sprint.

Starting writing

Working on the case studies, day 1

Working on the case studies, day 1

Instructors then began writing their case studies, and students worked with them in various ways. Some instructors wanted students to search for openly-licensed visuals or other content for the case study.

The students then started putting those resources on a “resources” page for each case study. Here are a few of the resources pages that students and instructors added materials to:

Students also helped with the wiki; for example, one instructor ran into issues with the UBC Wiki and lost some content, so he wrote his text in Word and then a student transferred that to the UBC Wiki later.

LunchIMG_2043

We gave everyone a full hour break for lunch so they could leave and get some fresh air, take a walk, whatever!

 

Checkpoint: giving feedback

After lunch we stopped to talk about what people had been able to write so far, and what they’d like help with from others. The instructors shared with the group what they had done and whether any questions had come up for them that they wanted to talk about, or whether they wanted any particular sort of feedback from others.

IMG_2032During this time the students were reading over the drafts and putting comments on them on the “talk” section of the wiki pages where the draft case studies were. The idea here was to see if the case studies are understandable from a student perspective. You can see the questions students were addressing on the “talk” pages, in the image to the left.

The discussion amongst the instructors took longer than we had thought it might (though it was a good discussion!), and though we had hoped to have more time for writing at the end of the day, we ended up just wrapping up after this discussion.

We finished by revisiting our roadmap for the sprint, seeing what we had done out of our plan, and saying what we would start the next day with.

IMG_2036

 

Day 2

IMG_2038

We started off day 2 by revisiting some of the feedback from our discussion, and from the talk pages, from day 1. Then a good deal of time was spent working on the drafts of the case studies, with instructors writing and students doing the same sorts of things as the previous day–e.g., helping with finding and citing resources, helping with formatting on the wiki.

Students working with Erin Fields (near blue bottle), Lucas Wright (standing), and Cindy Underhill (blonde hair)

Students working with Erin Fields (near blue bottle), Lucas Wright (standing), and Cindy Underhill (blonde hair)

Fewer people could attend on day 2, so the room was a little emptier, but there was still a great deal of work going on!

IMG_2042

IMG_2041We had some suggestions for day 2 that we put up on a sheet of paper, including reminding people of some feedback we had discussed the day before: it’s helpful to include a specific scenario or example in the case study, and to think about the student perspective when writing the case study.

Lunch

We had another full hour break for lunch…

What would an X do?

After lunch we asked instructors to take a look at two other draft case studies and approach them from their own disciplinary perspective. The questions we asked them to consider are:

  • How would an XX approach responding to the problem outlined in this case study, and what are some responses they might offer?
  • What elements of the case would they be most likely to focus on and why?
  • What kinds of questions would they ask?
  • What kinds of disciplinary approaches or methodology might they use?
  • In answering these questions, draw from existing literature from this discipline where possible, considering especially how similar problems have been approached.

We assigned each instructor to answer these questions for two other draft case studies. They did so on a dedicated section of each case study. For example, see the “What would an X do?” section on the Forestry case study.

Wrap up

I had to leave early on day 2, but I think the group wrapped up by talking about next steps. They asked instructors to finish their draft case studies on their own if they weren’t done already, and talked about how we were going to hire graduate teaching assistants to work with them over the summer to incorporate the case studies into their teaching.

 

Finished products?

I’m not sure how many of the draft case studies are finished yet, as of mid-June 2016, as I’m still checking in with instructors (summer break means not everyone is around!). Here, though, are links to the case studies that were at least partly completed during the sprint:

There are also a few other people who are interested in the project and writing a case study or two, but who couldn’t make it to the sprint. So more will be added later!

Making the case studies look nicer

Having them on the UBC Wiki is great for collaborative authoring, but finding them and displaying them on the wiki isn’t the best. So I’m going to apply for a grant from BCcampus to set up a WordPress site where we can showcase the case studies. They will still be editable from the wiki and then the edits will just automatically show up on the website through the magic of wiki embed (at least, that’s the plan). So stay tuned!

Documents

We have posted many of our process documents on the UBC Wiki, in case they are of use to anyone. They include:

 

 

What would you do with a Creative Commons certificate?

I’ve been following the development of a Creative Commons certificate since last fall. Paul Stacey from Creative Commons paid a visit to the BCcampus office looking for some feedback on a DACUM-inspired curriculum process he was leading, and on the potential value of a CC certificate.

Developing a certificate program that is flexible enough to consider all the potential use cases for Creative Commons is (I think) one of the biggest challenges. While we in higher ed look at CC licenses as a way to enable the development and sharing of curricular resources and open access research, the use cases outside of academia are wide and varied. CC is used by authors, musicians, filmmakers, photographers, and other types of artists. Governments are using Creative Commons licenses, as well as galleries, libraries, archives and museums (GLAM), furniture design3D printing & manufacturing, and even in game design.

Earlier this year, Alan Levine was brought on board to assist with the process, and it’s great to see some progress being made on the development of a Creative Commons certificate. Alan has asked for some help from the community to seed a website with some videos on how a CC certificate could be applied and used.

One of the ways that I could see my organization, BCcampus, using a CC certificate program is to help us vet grant applications. Over the years, BCcampus has supported the development of open educational resources (open courseware with the old OPDF program and the current open textbook project) by coordinating grant program. A number of institutions get together and collaborate to create open courses or open textbooks that can be freely shared with others. As a condition of the grant, those creating the resources have to agree to release their material with a Creative Commons license. Often when people apply for a development grant, they are either not familiar with Creative Commons, or often have a very cursory knowledge of how the licenses work, so BCcampus often takes on the role of providing support and training to the grantees, depending on their level of knowledge of Creative Commons.

Having a certificate program from CC would help with the application vetting process. Additionally, with some CC certified standards to align with, I think the community could develop some fantastic openly licensed learning resources to support the CC approved learning objectives. It could become a model of OER production and sustainability if we all begin to build on each others work.

If you have a use case for a CC certificate, take a minute, record a video and let Alan know. Here is my response.

Follow that open educational resource!

This morning I was taking a look at some of the Piwiks website analytics for the Geography open textbook we created 2 years ago as a textbook sprint project. For me, the really interesting data is always the referring website data as that can give you a glimpse of how the content is being used and by who.

The BC Open Textbook Project tracks adoptions of open textbooks with an eye to reporting back student savings. But there is much more value in open resources than just a displacing adoption where a commercial textbook is replaced by an open one. When you create open resources, you may have one specific group in mind, but you often find there are unexpected audiences using your resources.

This is a big value proposition of open resources. Once you make an open resource, it is available for others to use and refer back to. Each open textbook in the BC open textbook collection contributes to improving the knowledge available on the open web.

This is one of the major reasons I love open resources created by smart people in higher education. Every time an edu contributes resources to the open web, we make the web a better, more informed space for all.

I like to think of it as making the web more educational, less Perez Hilton.

Onto the Geography open textbook.

First, there is a lot of evidence that the book is being used by the intended audience of BC post-secondary institutions as there are referring links back to sections of the book from post-secondary domains at KPU, UVic, Langara, VCC, UBC and VIU. Most of the referring links I follow back take me to a landing page for an LMS at that institution, telling me that the content is being referred to from inside a course. This may not be a full adoption of the resource by the faculty, but it does indicate that the resources are being used by the intended audience.

But use of the resources extends beyond BC higher ed. A large source of referral traffic is from the Oslo International School, which appears to be an International Baccalaureate primary school. Again, when I follow the referring link I am met with an LMS login screen. It’s crazy to think that a regionally specific resource aimed at a first year Geography student in British Columbia is finding use at a primary IB school in Oslo, Norway. You never know where you’ll end up when you go open.

It is not the only K-12 school referring to these resources. Teachers from School District 43 in BC have recommend (Word) the section on Residential Schools to their students as a resource for students doing a research project.  Teachers in School District 63 are using the section of the textbook dedicated to the BC Gold Rush as a learning resource in their classes.

Those two resources have also found use outside of education. The Royal BC Museum Learning Portal has included a link back to the textbook section on the Gold Rush as a resource on their learning website dedicated to the BC Gold Rush, and Vice included a referential link back to the section on Residential Schools in an article it published on the Canadian Truth Commission on Residential School.

The textbook is also showing up on some kid friendly search engines. A referral from a KidRex search on the Hope Slide led me back to the search results page for the search and shows that the Hope Slide case study in the textbook comes up as the second result (behind the Wikipedia entry).

None of these uses save students a penny, but show the value of an open resource beyond the financial. No doubt that the student savings are important as the financial barriers are real. But to me, seeing this kind of usage of OER shows the benefits extend beyond students. These resources make the web better for all. It is higher ed freely contributing knowledge to the world. It is higher ed making the world much less Perez Hilton.

Addendum: Gill Green, one of the original book authors and current Open textbook Faculty Fellow sent me this tweet about a resource we created for the book.

Wikipedia and open learning at the Festival of Learning

The BC Festival of Learning is happening next week in Burnaby. This is an amalgam of a number of different workshops and conferences that have been supported by BCcampus; Educational Technology User Group (ETUG), the Open Textbook Summit, and the Symposium on Scholarly Teaching & Learning.

I’ve got a busy week ahead of me, facilitating or participating in a number of different sessions, including a three hour Wikipedia workshop on day 1 with Judy Chan and Rosie Redfield (UBC) and Jami Mathewson from the Wiki Education Foundation.

I am quite excited about this session as this is something I have wanted to see happen at an ETUG for the past few years. I have written about Wikipedia in the past and have been a semi-regular contributor for many years. I also maintain a curated Scoop.it collection where I stuff articles on how educators are using Wikipedia.

Getting ready for the workshop, I’ve been impressed with how much work has been done by the Wiki Education Foundation to help support educators who want to use Wikipedia in their class. The resources available to instructors – from handouts, how-to’s, lesson plans to real live people who can help support them – have really lowered the bar for educators to begin using Wikipedia. This is not the same unsupported landscape for educators as it was 10 years ago when early adopters like UBC’s Jon Beasley-Murray were trailblazing. Full credit to the foundation for making it easier for educators to engage with Wikipedia.

It’s been interesting to watch perceptions of Wikipedia change in higher ed over the years from the days when nobody knew exactly what Wikipedia was, to the backlash forbidding its use by students, to tacit acceptance that it could have a role to play in higher ed, to today where we are seeing active engagement on Wikipedia by many in the academic community interested in exploring open pedagogy.

I have also been heartened to see academics who treat the platform seriously and realize that the worlds largest repository of open knowledge is being heavily used by people in their daily lives. They understand that, as academics, they have an important role to play in helping to maintain the accuracy, breadth and diversity of Wikipedia. Faculty like Dr. James Heilman and Dr. Amin Azzam who regularly correct misinformation on Wikipedia articles about health.

Heading into the world of Wikipedia is not without its risks, as UofT professor Steve Joordens discovered when he had his (1,900!) students start editing Wikipedia articles, flooding the existing Wikipedia volunteer editors with tons of extra work as they had to filter the contributions. Wikipedia is, first and foremost, a community made up of volunteers, and learning to negotiate and engage with that community is just as important as contributing & fixing content. It’s one of the topics we’ll be discussing at the workshop.

Image: Wikipedia by Giulia Forsythe CC-BY

Working with Sandstorm

I’ve been making an attempt to kick the tires more with Sandstorm in preparation of our upcoming workshop at the Festival of Learning.

MyGrains

Snapshot of my Sandstorm grain dashboard

Small pieces, loosely joined is what Sandstorm is all about. Sandstorm is the stitching that joins the small pieces, providing a common authentication and security framework to a patchwork quilt of open source applications.

So far I’ve tested out about half a dozen of the 50+ applications within the Sandstorm eco-system trying to use them in my day to day work. Etherpad (thecollaborative document editor that is a scaled down version of Google Docs) and Frameadate (a handy meeting scheduler alternative to Doodle) have been the most useful. I’ve also played around with Ethercalc (spreadsheet), Quick Survey (survey tool), Hacker Slides (presentation tool that uses Markdown), OpenNode BB (forums), GitLab (Git repo), Rocket Chat (Slack alternative), and mucked around a bit with the WordPress port in Sandstorm.

My general observation is that the applications that work well within the Sandstorm environment are small, discrete and focused where you can create a single instance of the application (called a grain in the Sandstorm world). Things like a single document or meeting invitation. Tools like Etherpad, Ethercalc, Quick Polls, Hacker Slides and Frameadate are the type of applications that Sandstorm does well in that you create a document, share with others to collaborate and contribute to, and then move on. I tend to think of these tools as being somewhat disposable. Once a discrete task is done, it’s done. The survey is finished, the meeting dates are picked, the document has been edited and completed. Get in, do your work, get out.

As you can see from my screenshot, I’ve got a lot of Etherpad instance on the go, working on collaborative documents with different users. There is no folder scheme in Sandstorm, or way to organize these multiple instances so I can imagine over time as you create more and more documents, the user interface could become quite cluttered. I’m just starting to get to the tipping point where I’d like to be able to put some structure around the different applications I have going. Maybe organizing by project I am working on and grouping all the related apps I am using with a single project in a single folder or some other visual organizational metaphor. But haven’t seen a way to do that yet.

More complicated applications seem to have more limitations. WordPress, for example, is not the full featured version of WordPress that you would get at, say WordPress.com or if you installed it yourself. Installing plugins and themes means uploading a zip file instead of connecting to the remote WordPress plugin repo. Publishing is static, meaning whenever you add new content you have to rebuild the site. Rocket Chat (a nice open source Slack-like application) also has a limitation with the mobile app. Rocket Chat works quite well if you are logged into Sandstorm, but  the mobile application cannot connect through Sandstorm, which limits its usefulness.

These are not dealbreakers, but really just the things you learn while sandboxing and experimenting with new technology – seeing what the tool does well and where the limitations are.

Image: Blue Sky by leg0fenris CC-BY-NC-ND

Survey of BC faculty on OER & open textbooks

While I was one of three Faculty Fellows with the BCcampus Open Textbook program, we conducted a survey of faculty in BC and beyond, focusing on their use of and attitudes towards Open Educational Resources and Open Textbooks. We got over 70 complete responses from faculty at various institutions, most of them from teaching institutions rather than research institutions.

Screen Shot 2016-04-13 at 4.47.23 PMWe published a white paper about the survey, which was released in January of 2016. You can read a brief summary of the report here.

Here is a link to the PDF of the full report.

 

 

We also presented the results of this survey at two conferences before the white paper was finished:

The BCcampus Open Textbook Summit, May 2015, Vancouver, BC. Here are the slides from that presentation.

 

The 2015 Open Education Conference, November 2015, Vancouver, BC. Here are the slides from that presentation.

Open Education Week 2016 panel at UBC

I like to keep track of various things I’ve participated in, such as giving talks, facilitating workshops, etc., and this post is part of doing that.

On March 10, 2016, I was part of an amazing panel of people talking about “Engaging Students in Open Education,” as part of Open Education Week at UBC.

Here is the description and panelists:


Open education is a hot topic on post secondary campuses these days. This year UBC saw the #textbookbroke campaign led by the Alma Mater society – advocating for the use of open textbooks and open practices in the classroom to reduce costs for students; the adoption of open textbooks and resources in large multi section physics and math courses; and the continuing development of open teaching practices with Wikipedia projects and student produced, openly published content.

How do we engage students with open educational practices that go beyond making their work public to making it re-usable or available for others to build on? Why is open education important to students and to what extent can it enrich the teaching and learning environment?

Lighting Talks: Each speaker will present for 8 minutes and respond to questions for 5 minutes. This will be followed by a broad panel discussion about open practice.

Panelists:

Christina Hendricks: Senior Instructor Philosophy
Jenna Omassi: VP Academic & University Affairs
Arthur Gill Green Postdoctoral Teaching Fellow, Geography, BC Campus Faculty Fellow
Rajiv Jhangiani, Psychology Instructor, Kwantlen Polytechnic University
Leah Keshet, Mathematics Professor
Eric Cytrynbaum, Associate Professor Department of Mathematics
Stefan Reinsberg, Physics instructor


 

This even was live-streamed and recorded, and I’ve been waiting for the recording to show up on YouTube. But I decided to just post the link to where it is now, in case I forget:

Link to the recording on the Ike Barber Learning Commons website.

 

I love doing these sorts of things because I get to learn about what interesting things others are doing on our campus and beyond!

A series of workshops on open education

One of the challenges in our "Open for Learning" challenge bank

One of the challenges in our “Open for Learning” challenge bank

I have been one of a team of facilitators for a series of workshops on open education that we’ve run at UBC from December 2015 to May 2016 (we haven’t done the last one yet!). The idea behind having this series is that we might be able to go into more depth into various topics than we could cover in a single workshop on the broad topic of open education. It has worked well for that, though of course the people that come to the later ones are not always the same as those who came to the earlier ones, so we still always have to do some intro work at the beginning. Still, I think this model works pretty well.

One thing I really like about what we’re doing is that we have used the model of the “assignment bank” from #ds106 and the challenge bank from #udgagora to create challenges that participants can do during the workshop. We were able to do this because Alan Levine kindly put some code up on Github to set one of these banks up as a WordPress theme. Now, I didn’t use that code to set up our challenge site (I only wish I could do that), but Lucas Wright of the Centre for Teaching, Learning and Technology at UBC did.

Here’s the challenge bank we’ve been using for our workshops–super cool!

We will keep this challenge bank and have people add their answers as we do this series again in the future (and we have one more workshop to go!).

Here is a PDF with the descriptions of our workshop series for 2015-2016: Open for Learning Workshop Final Descriptions

And I wanted to embed our slides, too. Here are the slides for the first three workshops (I’ll add the fourth when it’s done, if I remember).

 

Workshop 1: Open for Learning: Exploring the Possibilities for your Classroom

This was an introductory, overview workshop covering a number of things in open ed.

 

Workshop 2: Using and Remixing Open Resources in Your Courses

 

Workshop 3: Teaching in the Open

Docker Cloud BYON & Docker Compose

GIF: http://giphy.com/gifs/ship-canal-container-9h92ggQve1Wxy

Late last year, Docker snapped up cross-cloud container management service Tutum, but it wasn’t clear how the acquired company’s handiwork would manifest under the Docker brand. Tutum was built from the ground up as a Docker tool. It gives visibility into containers, and enables a team to create, start, terminate or redeploy as needed. It also provides a dashboard view of all of the containers under team management.  Tutum is now Docker Cloud. Docker Cloud is a new service by Docker that implements all features previously offered by Tutum plus integration with Docker Hub Registry.

A group of us in BC are looking for ways we can provide a more sustainable opened tech infrastructure  to BC higher education.  We have begun looking for approaches to shared WordPress hosting.  I have been playing with Stackfiles and Docker Compose for the last few weeks and starting to get a clearer picture of how we might sustainably provide hosting for both dev and production WordPress hosting for BC open education initiatives.

As well as deploying and managing hosts on the supported cloud providers (EC2, Azure, etc), Docker Cloud can use any Linux host as a node to deploy containers to. For this, you install an agent which will allow you to connect the Docker Cloud dashboard to your infrastructure. I went ahead and connected our new EduCloud node to Docker Cloud last week and started experimenting with how services are managed.  Services/sites can be setup directly quickly using the Docker Cloud web interface.  Services/sites are managed via ‘stacks’ which are defined using Docker Compose.  Compose is a tool for defining and running multi-container Docker applications.  This ‘stackfile’ contains the instructions required to pull from required repositories (eg: Docker Hub, Github, etc) and configure your application’s services. Then, using a single command, you can create and start all the services.

Once a stackfile is defined, it can be used to deploy and/or redeploy as many copies of an application as you need.  I found a ‘ready to deploy’ WordPress stackfile at this registry:

wordpress:
image: tutum/wordpress-stackable:latest
links:
– db
ports:
– “80:80”
environment:
DB_NAME: wordpress
DB_USER: admin
DB_PASS: “**ChangeMe**”
db:
image: tutum/mysql:5.5
environment:
MYSQL_PASS: “**ChangeMe**”

To test out Docker Cloud/Compose on EduCloud I decided to reserve the domain opened.ca, create 2 subdomains, and map a separate WordPress installation to each subdomain.  I made 2 DNS entries and pointed them all to our EduCloud host.

Without going too far down the Docker technical docs in this post, it is important to know that traffic between containers & external networks runs on Ports.  No 2 containers be exposed on the same public port for HTTP traffic (Port 80/443) without a proxy out in front to handle traffic.  To accomplish this I decided to use nginx-proxy, a container running nginx and docker-gen. docker-gen generates reverse proxy configs for nginx and reloads nginx when containers are started and stopped thereby automating all that port mapping between containers and the public IP/Ports.  All that is needed to unsure the reverse proxy works properly is to start your WordPress Docker container passing the VIRTUAL_HOST variable.

That means adding 1 line to my Stackfile cribbed from Stackfile.io above and tweaking another:

wordpress:
image: tutum/wordpress-stackable:latest
links: 
- db
ports:
- "5000:80"
environment: 
VIRTUAL_HOST=tannismorgan.opened.ca
DB_NAME: wordpress
DB_USER: admin
DB_PASS: ----------
db:
image: tutum/mysql:5.5
environment:
MYSQL_PASS: -----------

As I will have 2 stacks, I will need 2 internal ports.  For the purposes of this test I am using 5000 and 5001.  All of these map to Port 80/443 facing the web.   nginx-proxy also needs to know what domains to listen for along with their associated internal port so I added the VIRTUAL_HOST variable and indicated the internal port for the tannismorgan.opened.ca test Wordpress container (5000) to ensure sure the incoming request is routed correctly.

I updated the 2 stackfiles and clicked ‘Create & Deploy’.  From start to finish, provisioning these WordPress sites took minutes.

dockcloud-screenshot

If you geolocate any of these subdomains, you will see that they all indicate they are hosted in Kamloops, BC (when, in fact, they are hosted on EduCloud using clever networking arrangement from TRU-IT folks.)

Docker Cloud could be a dream for multi-tenant WordPress updates/customizations. Simply make an exact copy of an existing WordPress stack, map your new development domain, and deploy your development spaces.  When your development is ready for production, change the VIRTUAL_HOST variable on the container to update your domain. Done.

This is a simple example of a multiple MySQL+Wordpress Docker container stack running on EduCloud. There are hundreds of applications available at the Docker Hub. Looking forward to playing more and learning more with Docker Cloud and Docker Compose this week as well as exploring how Docker Cloud might be used for our inter-institutional devops.