IT/Software/Populi
Populi is a paid LMS on https://populiweb.com.
Importing questions into Populi
Populi currently has two methods of adding questions: manually and from a Common Cartridge file.
Enter questions manually
The expected way to enter questions and tests into Populi is through the user interface.
You can create standalone questions by (see the figure):
- Go to the course "Tests" page
- Choose the "Questions" tab.
- Click "Add a Question" and fill in the appropriate info.
To create questions inside a test, or add existing questions to a test:
- Go to the course "Assignments" page
- Create or choose an existing test
- To create a test:
- Choose "Add assignments" -> "Add an assignment"
- Set the type to "Test" and fill in the other relevant information
- To create a test:
- Select the test
- Click the test you want to modify in the list
- On the right side of the screen, click the test name again
- Use the ellipsis menu to add questions.
- Fill in the appropriate info, or search for existing questions.
A bot is currently in progress to automate this process from questions generated from other question banks.
Import .qti Common Cartridge file
Note: Please call this the "queue-tee" (cutie) format. Thank you.
For simple multiple choice and fill-in-the-blank (short answer) questions, Populi can import .qti files which are Common Cartridge files. (Also .imscc files). Here is the specification for the CC files, although Populi largely ignores the standard and pulls some things but not others. For more complex questions manual entry or a bot is necessary.
History of attempted methods
In order to enter questions into Populi from the many years of Moodle and ExamView question banks we have, we have attempted a whole list of things.
Moodle exports the following test formats:
- GIFT
- Aiken
- Moodle XML
- XHTML
Of these formats, Moodle XML is the most complete. It is the only format that includes images from the test.
- Using online services to convert into QTI
- Very few services convert directly from any of the Moodle formats into QTI, and of the ones that do, many produce QTI files that Populi does not read.
- List of online services (Wikipedia page on QTI includes a list of many software options):
- gift2qti
- Supports multiple choice, true/false, and essay questions.
- Uses PHP
- Demo site is unavailable, so needs to be installed locally and run with php.
- Untested
- https://getmarked.ai/
- Paid tool
- Converts Moodle XML to QTI (and apparently many other things as well)
- Also untested
- ...
- gift2qti
- Writing our own converter
- A good tool for conversion could be written (and essentially has been) that produces perfect QTI files from Moodle XML files, but it is doubtful it will ever be useful to the Populi importer
- Populi importer allows uploading files and uploading questions, but not linking files to questions
- One possible workaround is to host images on a separate server and link to them with <img> tags
- Another possible workaround is to encode images as base64 and embed them in the <img> tags
- Populi importer only supports multiple choice and short answer. All other question types are either impossible or must be formatted as multiple choice or short answer
- Essay questions -> short answer
- True/False -> Multiple choice
- Matching -> A bunch of multiple choice questions
- etc
- No workaround for this
- Populi importer allows uploading files and uploading questions, but not linking files to questions
- Populi staff responses
- Adam: "We are working on adding question importing via the GIFT and AIKEN formats. It's going through QA." [9/19/23 on Discord] (GIFT and AIKEN do not support images either)
- Matt: "I'm sorry you've had trouble with the common cartridge and QTI files. They are incredibly diverse. Despite the "common" language and long standards documents, every LMS out there has implemented them differently and handling every possible format has proven really challenging. We have had people successfully import a lot of materials from D2L, Moodle, and Canvas, and QTIs from some testbook publishers, but mileage can vary a LOT. What LMS are you trying to import from? If you send a specific file to customer support we can try to crack it open and possibly improve our importer to handle it. (No guarantees). But we do make pretty regular improvements to the CC/QTI importer." [9/19/23 on Discord]
- A good tool for conversion could be written (and essentially has been) that produces perfect QTI files from Moodle XML files, but it is doubtful it will ever be useful to the Populi importer
- Using LTI (specification) to link to Moodle to take tests
- LTI (Learning Tools Interoperability) is a specification for LMS systems to interact with each other.
- A "Learning Platform" or "LTI Consumer" (in our case, Populi) interacts with a "Learning Tool" (Moodle).
- LTI has essentially two major versions:
- v1.1 and v1.2 (also related to v2.0) are the deprecated legacy system of LTI. They allow two-way communication between the platform and the tool. Populi supports this by default, and Moodle supports it after changing some settings.
- To setup on Moodle note that you must follow the instructions near the bottom of the page under the heading "Legacy Resources" to setup this deprecated feature.
- Moodle will create a new user account for every separate Populi user that links into Moodle. This user will be reused for the same user on Populi. Any grades that user account gets on Moodle will be transferred into the Populi gradebook automatically.
- There are two ways this system can be setup
- Link a course
- TODO
- Link an assignment
- TODO
- Link a course
- v1.3 or LTI Advantage is the current standard of LTI, and is based on OAuth2 and JWT.
- This system is still in beta on Populi, and disabled by default. To enable it a support request must be created asking for it to be enabled.
- This system can theoretically be linked once, site-to-site, and teachers can use the system to add any assignment they wish from Moodle into the Populi lesson.
- Because this feature is not available by default on Populi, we have not yet tested it.
- v1.1 and v1.2 (also related to v2.0) are the deprecated legacy system of LTI. They allow two-way communication between the platform and the tool. Populi supports this by default, and Moodle supports it after changing some settings.
- Using the Populi API
- The Populi API has two versions. One (api is at https://msg.populiweb.com/api and docs are here) is deprecated but still functional. The second (api is at https://msg.populiweb.com/api2 and docs are here) is under active development and can do the same things the deprecated one can as far as I (Micah) can tell.
- The legacy API uses username and password authentication to get an access token, which is used to make requests. The current API uses an API key generated by an Account Admin on the Populi site under Profile -> "Account & Settings." If you see "Settings" but not "Account & Settings", then your account is not an Account Admin. At time of writing, the account admins are
- joanna.schiestl
- admin.msgeducation
- admin.msgcnx
- The API can do a lot of things, but unfortunately creating questions or adding questions to tests is not a possibility.
- Populi staff responses
- Matt: "For the API, we are focussing on regular recurring tasks. Setting up a course and importing questions for a specific assignment is more of a one-time setup thing. So for that, we are trying to improve our import options in the GUI, as Adam said just now." [9/19/23 on Discord]
- Populi staff responses
- Use a bot to make user actions on the Populi webpage
- Stupid terrible solution. Very much a last resort.
- No guarantees about backwards compatibility. Populi may change the way their requests work and render this bot useless
- Far too much overhead (partially due to SSR (server-side rendering)). For example, instead of fetching a test question list as an array from the API, the whole test html document must be fetched and scraped for question data.
- Time consuming. Instead of doing one conversion, the bot must go though request after request, many of which depend on each other and cannot be parallelized.
- Involves most likely
- Create a bot user account with admin permissions
- Reverse engineer the requests sent to login, save the PHPSESSID cookie and use as authentication
- Send requests to fetch courses, fetch assignments, create an assignment, fetch that assignment, then for each question
- Create a question with all the appropriate information
- Parse the response
- This solution definitely requires running a service on a server to host an interactive page for teachers to upload to and convert from Moodle or other formats into Populi.
- Stupid terrible solution. Very much a last resort.