One project I’m working on this Summer is moving a WordPress multsite install (with about 300 sites) to new hardware. I didn’t find much in the way of documentation or guides on this, especially anything specific to a multisite install. So, to prep for this project, I created a new WP multisite with a few test sites, plugins and posts on an AWS server and practiced migrating it to a new virtual machine. Here are the steps I took and what I discovered. This was using Ubuntu 18.04 and a MySQL 5.6 database.
First, make sure to get a copy of your WordPress code and database. Just zip the entire web root directory of the site:
tar -cvfz wp-code.backup.tar.gz html/
Backup the database with mysqldump. Here my database is named wordpress, I can log in as root without a password, and I am creating a backup file wpdb-backup.sql.
Next, we need to transfer the backup files to the new server. If the servers can talk to each other over SSH, use rsync. Before you can use rsync, create a keypair with no password on the origin server.
If you don’t have an existing key on the server, you can just type
… and hit enter when asked for a password to skip using a passphrase and accept the defaults. If you already have an SSH key, instead of accepting the default name (which would overwrite your key) type in a new name like rsync_rsa_id.
Once your key is created, you now need to copy the contents of the public key you just created. If you used the default settings can see the public key with:
Next SSH in to the destination server. Copy the public key info to the .ssh/authorized keys file in your home directory.
Sudo nano ~./ssh/authorized_keys
Now you are ready to transfer files. Go back to the origin server and run rsync:
Make sure to create a blank database for wordpress, using the same username and password as on your origin server.
Once the database is set-up it’s time to put your WordPress files in their new homes.
Move to the root directory and extract the tarball we created of the WordPress code directory:
sudo tar -xvzf wp-code.tar.gz
Then extract the database tarball using the same command: sudo tar -xvzf mydbbackup.sql, but instead of moving it to a directory, restore it to the wordpress database you created.
sudo mysql wordpress < wpdb-backup.sql
Unless your server has a different IP address or hostname, in which case….
If the new server is not the same IP address/hostname as the old one, or if you are using a different database name, username or password, you’ll need to make some quick edits to the wp-config.php file.
Note: Before editing it, ALWAYS BACKUP wp-config.php. Trust me 🙂
cp wp-config.php wp-config-bak1.php
Then Modify wp-config.
Update the line to your current IP or hostname by editing this line:
(If you need to, change the relevant lines for the database as well)
Almost done! For a multisite install going to a host with a different name, you need to make an update directly to the database on the destination server. You can use PHPMyAdmin if you have access to that. Or just use the MySQL command line again:
Access the wordpress table:
Update the wp_blogs table with your new address:
UPDATE wp_blogs SET domain = 'newHostName';
Whooo! After all that, you should have an identical functioning copy of your multisite blog network on your new host!
My institution uses CentOS for all of our Linux servers, and I understand why. It’s super stable. But! The default software repository also tends to use really, really old packages. Which means I was running a WordPress server that I discovered was using PHP 5.5. No good in general since PHP 7 is much faster and secure, and untenable since the minimum version of PHP has been raised to PHP 5.6 in newer versions of WordPress.
Anyway, it’s easy to use an additional package manager and switch to a newer version of PHP. Here’s how I updated to PHP 7.2 (and by the way, made the WordPress site about twice as fast instantly).
Today I want to call out a couple of Mac apps that I personally have found to be a great help to me as a systems admin and builder. These are all simple things that help me get work done.
Part of the reason I switched from Windows to Mac when I took my job was to have easier access to a bash terminal. But after a few weeks, I found that using the built in Mac Terminal app wasn’t very efficient for me. I had something like a dozen production and development servers to access on a regular basis, plus a growing amount of resources in AWS, and manually typing in hostnames, users, passwords, and tracking keys seemed unnecessarily burdensome. Before long I found Termius, which is a great SSH manager. Now I add my host information into Termius and can login into whatever server I need in seconds.
It can be used on a laptop for free but my boss was kind enough to purchase a license for me so I have extra features and can sync my credentials to multiple devices. That’s cool because Termius works just about anywhere, including my iPad and iPhone. The Mac app looks great, performs well, and also includes an SFTP client and the ability to save “snippets” so you can save and re-use tricky or frequent commands.
Cost: Freemium (60 USD per year)
Pro tip: Organize hosts into Groups and set a default color scheme. I use the classic black and green for my dev servers and a light color scheme on production so I can tell at a glance what environment I’m in.
Let’s face it, passwords suck. But until biometrics or physical tokens or something else totally take over we’re stuck with them. I had been using this app for awhile personally and my team invested in LastPass about 6 months ago. It has made sharing credentials to access some of our tools much easier (and safer).
Most people probably use LastPass exclusively as a browser plugin that can auto-fill passwords. But it also comes with a pretty nice Mac app if you want to get a bit more in-depth. Beyond username/passwords, there are templates to store lots of useful things: server login info, private SSH keys, account numbers, credit card numbers, and so on.
Cost: Freemium (2 USD per user per month)
Pro tip: When the Mac app is running, you can invoke a quick search of your vault with CMD-Shift-L . From the search results there are buttons to quickly copy usernames or passwords to your clipboard.
The life of systems administration sometimes involves a lot of waiting around waiting for a process to finish. Sometimes, you need your laptop to stay awake even if you’d rather step away. Amphetamine is an app that does just that. Just turn it on and your Mac will stay awake without needing to futz with power saving settings.
Pro tip: You can choose criteria to keep your Mac awake: while a certain app is running, for a certain amount of time, or indefinitely. Keep this app on, then lock your screen (CTRL-SHIFT-Power button) to let a process run while you go take a coffee break//walk/nap.
One area I’ve learned a lot in is using Git submodules to administer plugin-heavy applications like Moodle or WordPress. I made a short video walking through the process of adding a Moodle plugin to a repository as a submodule. Enjoy!
I haven’t written in a while and wanted to get something up so I’m allowing myself an extremely indulgent “what’s in my bag” post.
I switched a while ago from a shoulder bag to a small backpack, the North St. Meeting Bag. Going team tiny-backpack has done wonders for my back. It’s super light and balanced and fits my laptop, tablet, and other tech essentials (with my headphones attached via carabiner on the back).
I had been using a loaded 13” Surface Book 2 in my previous role, but when I took the sys-admin job I switched back to my older Mac laptop. The Surface Book was really nice but I went Mac for the integrated terminal, better portability and a general slight preference for the OS (at least in my work environment where Windows is heavily managed/limited by IT). So my current work rig is a 13” MacBook Pro (2015 model, core i5/8GB RAM/256GB SSD). It’s not the fanciest or fastest these days but it more than gets the job done. I take it into work and plug into a dock with wireless mouse and keyboard and two 27” 1440p Dell monitors. Also making the switch with me is a 10.5” iPad Pro I have from my work with the untethered teaching initiative at my institution. I do the vast majority of my work on the laptop but the iPad gets used for light work on the go (email from the coffee shop, digital white-boarding, notes at meetings, watching training videos, etc). Since I use Termius I can even SSH in to servers on the iPad if I need to.
Aside from my devices, I carry a Moleskine notebook, an Anker external battery pack, various power cables and A/V dongles, a few pens and Apple pencils, a back-up pair of earbuds (with the stupid iPhone lightning dongle) a spare power brick for the Mac, and a slide advancer for presentations.
When I started working in sysadmin/ops land, I knew that version control would be important, and knew a little bit about it. I had used Git in a very basic way while playing around with some amateur coding projects. I knew how to initialize a repo, see which files were tracked, and stage and commit changes. But I didn’t quite appreciate how crucial a thorough understanding of Git would be to really be effective in maintaining and deploying code in a systems context – with thousands of users depending on availability of a server that needs to be patched, updated, etc safely, securely, and on-schedule. It didn’t take long before I was dedicating as much time as possible to mastering Git. I even created a “Git” section on my OneNote notebook, which is a big deal if you know me.
I knew I needed to learn a lot in a hurry. Thankfully, not only is Git Open Source software with thorough documentation – there is a real open community around git. A great example of this is the Pro Git textbook. This is a fantastic OER (open education resource). The book can be viewed online or downloaded in an ebook format for free. In my case, I downloaded the .mobi Kindle format and used the “Send to Kindle” option to add the ebook to my Kindle library. This allowed me to read the book with variable fonts and text sizes, and to highlight and make notes. There are also tons of good forum spaces for discussing git and asking questions (or more likely finding an answer that has already been given), from Stack Overflow forums specifically for GitHub.
Another virtue of git is that by its nature, it allows you to experiment and play. I cloned a repo of my institution’s production Moodle code into my own safe practice space, knowing that I could try things out and was perfectly safe as long as I didn’t push any commits back. And even if I did somehow end up with bad code, you can always reset back to a working commit. This allowed me to work on git skills and have a Moodle directory to explore and mess-up in a consequence free environment.
The git skills I’ve built have already paid off – aside from being crucial to any sane workflow for updating Moodle or WordPress sites, git has already saved me from crashing a site at least once. I got a bit sloppy on a dev WordPress site and did something to the wp-config PHP file that crashed the site. Yikes! It could have been anything from a missing semi-colon to a misspelled word. Hard to say, but the site was totally dead. Instead of spending a lot of valuable time poring over the file to find the typo, I executed a simple command:
sudo git checkout wp-config.php
The one area of consternation I’ve had with Git has been with submodules. The previous Moodle admin at my school set-up a submodule system to manage all of the various plugins we run (50 or so at last count). In theory this should make managing a suite of plugins easier, but in practice I’ve struggled with submodules, at least in terms of using them at all efficiently, as they make the git process a bit more complicated conceptually. However I am starting to get the hang of submodules now and and getting clarity on how they function in relation to the “superproject” in which they reside. This article from Catalyst, The Git submodule: misunderstood beast or remorseless slavering monster? was especially helpful for me.
This is going to sound stupid, but…One thing I didn’t really think about enough prior to starting my current job is just how much working with data is involved. Yes, I know. Information systems. It’s kind of all about data. But when I imagined what this job would entail, I thought a lot about building things, about creating systems that support and spark teaching and learning. The reams and reams of data that go along for the – names, email addresses, course CRNs, logs, files, etc – just didn’t seem that sexy to me.
But after a few months of being a sysadmin, I’m thinking about data more and more. There are the obvious things: am I doing enough to keep data safe in the age of constant breaches? Are we thinking about giving users control of their data in any meaningful way in light of evolving views about digital privacy? These are big questions. But in the day to day, I’m just working with like, rows and rows and rows.
It turns out, people have questions they want answered about the digital systems that play such an important role in our schools. These are all questions I’ve answered in the last month:
Which instructors used the accessible Moodle theme we provided in their courses?
I accidentally deleted a quiz, is there any way to get the grades each student in my class got on it?
Can you tell me who at the University has not yet completed this mandatory training?
How many people logged into Moodle on the first day of classes?
Here is the CRN numbers of 50 courses – can you get me the course full name, id number, and the instructor of record?
So what have I learned?
Sometimes this data is readily available within an application itself. For example in the recent versions of Moodle each course has a very powerful completion tracking and activity tracking report built-in. It is also be possible to extend this functionality with plugins.
Reports or logs can also generally be exported into a .csv or spreadsheet format. I was already pretty proficient with Excel but I’ve upped my game in the last few months just due to the amount of time I’ve spent in spreadsheets. (I don’t think I’ve opened PowerPoint in that time, I’ve kind of flip-flopped in that regard. Less presenting polished data and more churning through raw data).
In addition to a sheets tool, a good plain-text editor is your friend when data needs to be manipulated to be useful. I’ve been using VS Code and find it really useful for manipulating text, especially the ability to find and replace with a regex expression. This is incredibly handy when you have a comma separated list but it just has to have each item on a new-line to import wherever it is you need it to go.
If built-in reports or exported info isn’t cutting it, I’ve been going straight to the source itself: typically the Moodle database accessed by PHPMyAdmin. This lets me run SQL queries in a pretty friendly GUI environment and export the results. I’ve found that simple SQL itself is relatively easy to write – it’s understanding the complex structure of a huge relational database, how the tables need to be joined, and thinking through the links between tables that takes a bit of time. But, I am getting faster at this process – I find sketching the query out and making kind of a map of the relevant tables and fields helpful – and this is what has allowed me to do things like recover the grades of a deleted quiz or return a list of instructors who have used a certain theme.
I’ve been kicking a few ideas around, thinking about what topics or experiences I wanted to write about to chronicle my journey into systems administration/architecture. This week I had the fortunate misfortune to to come across the perfect situation for the first entry in this blog series when I received an email from one of the math professors at UP about our WeBWork server.
A bit of background on WebWork: it’s an open source program for delivering math homework via the web. We’ve run it at UP for a number of years, and recently migrated to AWS , using a single instance running Ubuntu.
Back to our emailing professor. She had been using the system over the holiday break and noticed intermittent lock-ups. She could use the site normally for about half an hour before things went sideways and it became unresponsive; if she waited a few hours and came back it would be working again, but only for about 30 minutes at a time.
After getting the email I checked the server and yeah, it was totally unresponsive via the web and SSH. Time for a hard reboot via the AWS console. After rebooting everything seemed fine but before long the prof let me know she was still experiencing the same issues. This time I was able to SSH in before things went totally haywire – but trying to execute any commands returned an error:
-bash: fork: Cannot allocate memory
Aha! A clue. I rebooted again and downloaded htop:
sudo apt-get install htop
htop is a CLI program for monitoring system usage – including memory. I hadn’t used it before, so I took advantage of the Lynda.com account I have through work and watched a good htop tutorial video to get a feel for it. When WebWork was in use, I could see via htop that there were some processes owned by the Apache server (www-data) that were eating up all of the available memory, of which we only had a paltry 4GB (I suspect that the original sysadmin who built the server intended to use an auto-scaling group that would spin-up additional resources on-demand, but was never able to get this working correctly).
A bit of research turned up lots of forum posts that discussed WebWork’s nasty habit of eating up system memory and failing to give it back, which over time can use up all the available RAM and result in crashes – some useful threads:
Through these posts, I learned about the Apache Max RequestWorkers and MaxConnectionsPerChild parameters. These control how many processes the server can spawn before shutting the oldest/most bloated ones down and can be tweaked to keep WebWork from running too many memory-obliterating tasks at once. It’s a balancing act, though: allow too few simultaneous requests, and unnecessary lag is introduced as Apache is forced to create new processes constantly while memory sits unutilized. A quick visit to the appropriate Apache config file at /etc/apache2/mods-available/mpm_prefork.conf confirmed that the server was still at the default setting of 150 Request Workers and unlimited child connections per requests (0 = unlimited in this case).
This gave me the formula to determine optimal Apache settings but I wanted to increase the system RAM as 4GB still seemed likely to be insufficient for any heavy use. This was easy to do in AWS as the WebWork instance was a simple single Elastic Block Store (EBS) backed EC2 Amazon Machine Image (AMI).
This was followed with a quick restart of Apache to apply the changes:
sudo apachectl restart
I headed to the site and logged onto a test course, trying out some searches in the Library Browser and found that things were improved: I could still see in htop that processes were eating up memory, but they would quickly be killed off and the memory returned to the system. I may have to tweak things when students start logging in and hitting the server with a lot of simultaneous, small requests, but for now so far so good.
2018 was a wild year for me. I had a kid, moved into a new, more technical role at work, and while I haven’t quite yet finished grad school, I’m now close enough that I feel the senioritis kicking in! All that is to say I’m looking forward to what I can achieve in 2019 as I finish school and continue my journey into dad-hood, but it’s the still-new job – Technology Solutions Architect at the University of Portland – that’s the subject of this post.
Moving from the world of edtech, which involved supporting, training, and consulting with faculty on technology tools, to now building, deploying, and administering those tools has been a major transition. As I think about what I know, and what I don’t know, I’ve been reflecting on what helped me to be successful in previous roles and what I can bring to my new one. Something that has stuck out is that I’ve made a habit of teaching, tutoring, writing and making video content that engages with my field. This serves multiple purposes:
I firmly believe that teaching something, whether that’s by presenting on a topic or creating a how-to guide is one of the best ways to build and retain a deep understanding.
It helps me to show what I know and documents my growth in my new field.
Hopefully my content can help others who are in or aspire to learn more about the type of work I’m doing. I’m still in Higher Ed, after all!
So, enter this blog. I’m calling the WordPress category for these posts “Patch Notes” – it’s my way to reflect on and document my professional growth. Possible topics include:
Moodle, WordPress, Linux, databases, cloud computing, open source, education technology, higher ed, Office 365, and more.
Discussion forums are a mainstay of online and blended classes. Any learning technology that becomes ubiquitous is a fair target for critical interrogation (Death by PowerPoint comes to mind); discussion boards, too, have their fair share of detractors. A common criticism is that forums lead to rote, dull, perfunctory work from students and instructors. Jesse Stommel and Sean Michael Morris of Hybrid Pedagogy write:
Instead of providing fertile ground for brilliant and lively conversation, discussion forums are allowed to go to seed. They become over-cultivated factory farms, in which nothing unexpected or original is permitted to flourish. Students post because they have to, not because they enjoy doing so. And teachers respond (if they respond at all) because they too have become complacent to the bizarre rules that govern the forum.
Even for those optimistic about the use of forums for real learning, the tools can be confusing to configure properly and are often an unwieldy chore for faculty to manage and assess. Indeed, the term “Death by Discussion Forum” would be an appropriate way to describe some online courses. Done well, however, online discussion forums can be an instrumental tool to build community, foster student engagement in the knowledge-building process and enrich learning via the reflective and socially rich exchange of written dialogue.
Therefore, while it is important that forward-thinking and innovative instructors experiment with new ways to supplement and build on established digital teaching and learning practices, it is also vital for instructors who are using discussion forums to work at their practice in the here and now. Instructional and pedagogical goals must be carefully aligned with the real-life use of forum activities in Moodle. Effectively facilitating a space for “brilliant and lively conversation” requires a deep understanding of the ways that adjusting various Moodle Forum activity settings impact the learner’s experience as they embark on writing and engaging with their peers.
Aligning Your Pedagogy with Forum Activities
Many critics of “bad PowerPoint” note that tools can be used well or poorly. An excellent slide deck isn’t the presentation; it supports the presentation. The most effective use of technology happens when our tools fade into the background. The irony, of course, is that creating the conditions in which technology disappears requires careful forethought and a relatively sophisticated understanding of said technology’s capabilities to support one’s work. So, before assigning a discussion forum for its own sake, or out of habit, take a step back and consider the instructional goals you wish to achieve. Do you want students to reflect on a specific aspect of coursework, to research and answer a specific question, or to share progress and critique their peers’ work? Is a forum the best tool to support this goal? If so, there are several different flavors of forums available that can help address your specific teaching needs, important settings that can be tweaked to expedite a suitable learning environment, and some best practices to consider as a facilitator.
Forum types in Moodle
The Standard Forum for General Use is the most versatile and is a good fit for most discussion activities. It allows students to start their own discussion threads and reply to others, which is appropriate for forum activity structures in which students are asked to add their post as well as reply to peers. It provides the greatest potential for learner agency; students have space to “own” the threads that they start. They can express themselves via the choices they make when titling their threads and structuring their prose. Further, they can choose to participate in and reply to threads from others that they find the most interesting or stimulating. Instructors can also easily add topics or reply directly to student threads in this format.
For a conversation that is more tightly focused on a single topic, consider the Single Simple Discussion format. Here, students and faculty are all locked into one thread together, which narrows the scope of conversation and is best when the entire class needs to attend closely to each student’s post. This format emphasizes the communal and deemphasizes the individual.
Because it hides all other posts from students until they make their own initial post, the Q&A Forum is popular with instructors who want to ensure that students are uninfluenced by reading the work of peers who happen to post earlier in the discussion cycle. It can be effective, but it also tends to shut down conversation and inhibit elaboration or further exploration of a topic. If both originality and in-depth discussion are desired, it is recommended to collect original work via an Assignment Activity first, and then follow up with another type of forum for sharing and peer response.
In any class, but particularly online, setting expectations and establishing clear lines of communication are important. Face-to-face, you might have an opportunity to set guidelines for your in-class discussions early on. In an online environment, you need to be proactive. You should clearly communicate details and expectations about writing voice, citation requirements, and timeliness expectations. Will you require an initial post to be submitted early in the week, or can all posts be made last minute? Write up (or record and post an audio or video message) detailing what you expect from students and “pin” it to the top of the first discussion forum.
Further, consider using the discussion board itself as a tool to streamline communication — set up a dedicated, ungraded forum for students to ask questions relating to the course information or content. Just like in a live class, shyer students may benefit from the questions that bolder students ask, and some may be able to answer each other’s questions.
How often should you jump in?
You should consider early on how often and how heavily you plan on participating in the forum discussions. To some extent, this is up to faculty preference. Some instructors like to give specific feedback early and often or prompt for additional thinking, while others prefer to observe, letting the conversation develop naturally, and jump in only if the conversation needs to be steered back on track. There is some research-based evidence that supports the latter approach. One study found that “the more the instructors posted, the less frequently students posted and the shorter were the discussion threads”(Mazzolini & Maddison, 2007). That said, more is not the same as better; the authors caution us not to conflate volume with quality. Students in courses in which instructors were more active on the forums rated those faculty as more enthusiastic and displaying higher levels of subject-matter expertise on subsequent course evaluations. A second qualitative study notes that “students place a high value on individual responses from the instructor and a summary at the conclusion of the discussion topic” and that student engagement in online courses dropped when instructors did not post enough. (Reonieri, 2006) Clearly, there is value in faculty participation in discussion boards.
A happy medium may to be to employ a “light touch” during the active forum period — interjecting only to answer particularly difficult questions, to address misconceptions that have not been otherwise challenged, or to steer a discussion back on topic, and then provide individual feedback or summarize discussions at the end of the active discussion period. (Mazzolini & Maddison, 2007)
Keeping Up With Assessment
If forums are going to be an important part of your course and require a high degree of student engagement and work to be worthwhile, you probably agree that they should be graded. This raises both pedagogical and practical concerns. Are you going to treat forums as “participation” by giving full points for meeting basic requirements, or are you going to critically assess student work? Will students have a chance to revise and improve their work? Will you use a rubric? These are questions you should be comfortable answering. In any case, your feedback is critical for students to understand whether or not they are contributing to the course discussions satisfactorily.
However you decide to proceed, if you are going to assign grades, it is recommended that you use Forum Ratings to mark student posts. Ratings can drastically reduce the administrative overhead of assessing forum posts. They allow you to grade work directly in the context of the forum with a dropdown menu underneath each student post where a score can be recorded. This score automatically transfers to the Moodle gradebook, so you don’t need to track or transfer grades manually. Further, ratings support a variety of aggregation methods. For example, it’s easy to use ratings to automatically tally the point values of marks or the total number of posts a student makes. If you are going to be reading and assessing dozens or even hundreds of posts per week, it’s vital that your capacity goes towards meaningful feedback, rather than ledger-keeping or copy/pasting.
Consider discussion board size
What is too small or too large for a productive online discussion? Reonieri (2006) identifies a number of issues that can impede effective online discussion forums when class sizes are too small (too few perspectives, not enough interaction) or too big (too overwhelming, shallow and repeated comments, off-topic tangents, heavy instructor workload) and posits the optimum discussion group size to be a “medium” class of 10–15 students.
In situations with larger class sizes, splitting the board into smaller groups is highly recommended, and it is better to err on the side of smaller groups than larger groups. Moodle includes a robust Groups feature to accommodate this need. Students can be placed into randomized or instructor-defined groups. Additionally, forums can be configured with either Separate Groups (students can only see posts from and interact with their group forum) or Visible Groups (students can only interact with their group forum but may optionally visit and view, but not contribute to, the other group spaces).
Moodle forums can send email notifications to any forums or discussions you or your students subscribe to. If you take the time to understand and set up these notifications, they can be incredibly helpful. When ill-understood or untamed, however, email notifications can be equally burdensome. Fewer things are more irritating than realizing you missed out on an important conversation because you simply didn’t know it has happened. At the same time, a deluge of email notifications is entirely overwhelming for today’s over-stimulated students (and, let’s be honest, instructors).
You can view your default forum settings by clicking on your user profile picture in Moodle and choosing Preferences, then Forums. You can make critical choices that affect your day-to-day experience in interacting with your students. You may choose to receive an individual email for each new post or a daily digest summary, whether to automatically subscribe to threads when you make a comment, and enable tracking to flag unread posts. These seem like small decisions, but when you are involved in several courses with dozens of forum posts per day, they can make all the difference. Taking some time to review and understand these options can go a long way toward minimizing frustrations, missed information, and wasted time in your use of Moodle forums. Further, you can share your learnings and recommendations with students — it will be more appreciated than you might think!
Wrapping Up Part One
In Part One of this post, I detailed how instructors can employ strategies to avoid issues that can derail successful forums:
Choosing the wrong type of forum for the job
Failing to communicate expectations
Posting too little, or too much
Difficulty in keeping up with assessments
Class sizes that are too large for meaningful discussions
See our Guide articles for help in understanding how to set up forums:
Mazzolini, M., & Maddison, S. (2007). When to jump in: The role of the instructor in online discussion forums. Computers and Education, 49(2), 193–213. https://doi.org/10.1016/j.compedu.2005.06.011
Reonieri, D. (2006). Optimizing the number of students for an effective online discussion board learning experience (thesis). Retrieved from ERIC: Institute of Education Sciences
Morris, Sean Michael, and Jesse Stommel. “The Discussion Forum Is Dead; Long Live the Discussion Forum.” Hybrid Pedagogy, 8 May 2013, hybridpedagogy.org/the-discussion-forum-is-dead-long-live-the-discussion-forum/.