• Stars
    star
    445
  • Rank 98,085 (Top 2 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created over 11 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Framework for building custom learning components that run in the Open edX LMS!

XBlock

PyPI CI Codecov Documentation Supported Python versions License Repo is maintained.

Purpose

XBlock is the Open edX component architecture for building courseware.

This repo contains the core code for implementing XBlocks. Open edX courseware is built out of components that are combined hierarchically. These include components like the video player, LON-CAPA problems, as well as compound components like learning sequences. The API for these components is called XBlocks.

How does this differ from existing industry standards like Learning Tools Interoperability (LTI) and SCORM? On a high level, XBlocks is a Python language-level API, and it provides sensible defaults for things like storing data. XBlocks could be wrapped up in LTI, and one could make an LTI XBlock. The core reason to write an XBlock is that it is deployable. You can give us the code to an XBlock, and we can embed it in our courseware. LTI would require you to give us a virtual machine image which ran it.

Getting Started

Developing

One Time Setup

# Clone the repository
git clone [email protected]:openedx/XBlock.git
cd XBlock

# Set up a virtualenv using virtualenvwrapper with the same name as the repo and activate it
mkvirtualenv -p python3.8 XBlock

Every time you develop something in this repo

# Activate the virtualenv
workon XBlock

# Grab the latest code
git checkout main
git pull

# Install/update the dev requirements
make requirements

# Run the tests and quality checks (to verify the status before you make any changes)
make validate

# Make a new branch for your changes
git checkout -b <your_github_username>/<short_description>

# Using your favorite editor, edit the code to make your change.
vim ...

# Run your new tests
pytest ./path/to/new/tests

# Run all the tests and quality checks
make validate

# Commit all your changes
git commit ...
git push

# Open a PR and ask for review.

Deploying

To package a new release:

  1. Describe the release in CHANGELOG.rst

  2. Update the version number in xblock/VERSION.txt.

  3. Tag the commit to be released:

    git tag v1.2.17
    
  4. Push the tag and wait for Github Action to upload to PyPI:

    git push --tags
    

Using the XBlock-SDK

The XBlock-SDK exists in a separate repository. The SDK contains useful tools for developing your own XBlocks, such as a template XBlock generator, sample XBlocks that demonstrate XBlock functionality.

You can find it in its own repository: https://github.com/openedx/xblock-sdk

Getting Help

Documentation

The docs for the XBlock API is on Read The Docs: https://xblock.readthedocs.org .

Reading the code

There are distinct layers to this code. In the docstrings, we've tried to make clear which layer the code lives in, though sometimes the lines are blurred:

  1. XBlock The sample XBlock code. This is the most important, it is the code that most third parties will be writing, and demonstrates the XBlock interfaces.
  2. Runtime The runtime code that we think will be common to all runtimes. This is the behind-the-scenes code edX will write to make XBlocks work. This layer may not be real code here, but we'll need to write real code to perform these functions.

Making your own XBlock

Making an XBlock can be as simple as creating a Python class with a few specific methods.

Instructions for constructing a new XBlock along with examples can be found in the XBlock SDK: https://github.com/openedx/xblock-sdk

More Help

If you're having trouble, we have discussion forums at https://discuss.openedx.org where you can connect with others in the community.

Our real-time conversations are on Slack. You can request a Slack invitation, then join our community Slack workspace.

For anything non-trivial, the best path is to open an issue in this repository with as many details about the issue you are facing as you can provide.

https://github.com/openedx/XBlock/issues

For more information about these options, see the Getting Help page.

License

The code in this repository is licensed the Apache 2.0 license unless otherwise noted.

Please see LICENSE.txt for details.

Contributing

Contributions are very welcome!

Please read How To Contribute for details.

This project is currently accepting all types of contributions, bug fixes, security fixes, maintenance work, or new features. However, please make sure to have a discussion about your new feature idea with the maintainers prior to beginning development to maximize the chances of your change being accepted. You can start a conversation by creating a new issue on this repo summarizing your idea.

The Open edX Code of Conduct

All community members are expected to follow the Open edX Code of Conduct.

People

The assigned maintainers for this component and other project details may be found in Backstage. Backstage pulls this data from the catalog-info.yaml file in this repo.

Reporting Security Issues

Please do not report security issues in public. Please email [email protected]

More Repositories

1

edx-platform

The Open edX LMS & Studio, powering education sites around the world!
Python
6,640
star
2

configuration

A collection of edx configuration scripts and utilities that edx.org uses to deploy openedx.
Jinja
817
star
3

devstack

Get up and running quickly to develop or extend Open edX services
Shell
394
star
4

codejail

Secure code execution
Python
332
star
5

edx-app-android

The Open edX mobile app for Android!
Java
286
star
6

edx-app-ios

The Open edX mobile app for iOS!
Swift
225
star
7

edx-documentation

Makefile
156
star
8

ecommerce

Service for managing edX's product catalog and handling orders for those products
Python
135
star
9

paragon

๐Ÿ’Ž An accessible, theme-ready design system built for learning applications and Open edX.
JavaScript
118
star
10

edx-analytics-pipeline

Python
90
star
11

edx-analytics-dashboard

Dashboard to display course analytics to course teams
Python
72
star
12

bok-choy

UI-level acceptance test framework
Python
67
star
13

xblock-sdk

Workbench and example xblocks
JavaScript
60
star
14

edx-ora2

Open Response Assessment Suite
Python
58
star
15

event-tracking

a system for tracking events
Python
55
star
16

course-discovery

Service providing access to consolidated course and program metadata
Python
53
star
17

edx-lint

Custom tooling for pylint and other repo management tools
Python
48
star
18

edx-proctoring

Python
45
star
19

frontend-app-learning

Front-end for the Open edX course experience, implemented using React and Paragon.
JavaScript
44
star
20

edx-tools

a collection of miscellaneous tools for use with the edX platform
Python
43
star
21

edx-enterprise

Python
41
star
22

cs_comments_service

server side of the comment service
Ruby
37
star
23

openedx-demo-course

A demonstration course that can be imported into an Open edX instance
JavaScript
36
star
24

open-edx-proposals

Proposals for Open edX architecture, best practices and processes
Python
35
star
25

xqueue

XQueue defines an interface for the LMS to communicate with external grader services.
Python
35
star
26

frontend-template-application

A template repository for creating Open edX frontend applications. ๐Ÿ’ฟโžก๏ธ๐Ÿ“€
JavaScript
34
star
27

studio-frontend

๐Ÿ“ React front end for edX Studio
JavaScript
33
star
28

edx-bootstrap

Bootstrap theme for Open edX
JavaScript
33
star
29

frontend-platform

A framework for Open edX micro-frontend applications.
JavaScript
31
star
30

license-manager

Django backend for managing licenses and subscriptions
Python
30
star
31

edx-analytics-data-api

Python
29
star
32

repo-tools

Tools for repo maintenance, etc.
Python
28
star
33

django-user-tasks

A Django application for managing user-triggered asynchronous tasks.
Python
27
star
34

edx-cookiecutters

Open edx public templates for apps, libraries and services.
Python
26
star
35

i18n-tools

Tools to help with internationalization and localization of Open edX projects
Python
25
star
36

edx-django-utils

edX utilities for Django Application development.
Python
25
star
37

xblock-lti-consumer

Python
24
star
38

wg-build-test-release

Open edX Build / Test / Release Working Group
24
star
39

auth-backends

Custom authentication backends and views for edX services
Python
22
star
40

frontend-app-admin-portal

edx-portal is a frontend that provides branded learning experiences.
JavaScript
20
star
41

django-config-models

Configuration models for Django allowing config management with auditing.
Python
20
star
42

xblock-utils

Python
20
star
43

openedx-app-ios

The mobile app for iOS for the Open EdX Platform.
Swift
19
star
44

enterprise-catalog

A Django-based microservice for handling Enterprise catalogs, associating enterprise customers with curated courses from the full course catalog.
Python
18
star
45

credentials

Service hosting course and program certificates
Python
18
star
46

xblock-drag-and-drop-v2

JavaScript
17
star
47

frontend-build

Common build scripts and tooling for Open edX micro-frontends.
JavaScript
17
star
48

frontend-app-account

Open edX micro-frontend application for managing user account information.
JavaScript
17
star
49

edx-rest-api-client

Facilitates interaction with edX REST APIs
Python
17
star
50

xqueue-watcher

Python
16
star
51

edx-ui-toolkit

A JavaScript toolkit for building edX user interfaces.
JavaScript
16
star
52

frontend-app-publisher

Publisher frontend to manage course creation and marketing content curation.
JavaScript
15
star
53

cypress-e2e-tests

Cypress E2E Tests for Open edX applications
JavaScript
15
star
54

openedx-app-android

The mobile app for Android for the Open EdX Platform.
Kotlin
15
star
55

edx-notes-api

edx-notes-api
Python
13
star
56

edx-analytics-data-api-client

Python
13
star
57

edx-drf-extensions

edX extensions for Django REST Framework
Python
12
star
58

registrar

A service to facilitate learner-program enrollments.
Python
12
star
59

frontend-app-course-authoring

The micro-frontend for course authoring in Open edX. Frontend interfaces that currently live in Studio/CMS should eventually live here.
JavaScript
12
star
60

frontend-app-learner-portal-enterprise

Enterprise Learner Portal
JavaScript
12
star
61

sample-themes

HTML
12
star
62

frontend-lib-content-components

A library of high-level components for content handling (viewing, editing, etc. of HTML, video, problems, etc.), to be shared by multiple MFEs.
JavaScript
11
star
63

openedx-events

Open edX events from the Hooks Extensions Framework
Python
11
star
64

frontend-app-profile

Open edX micro-frontend application for managing user profile information.
JavaScript
11
star
65

xblock-google-drive

Python
11
star
66

platform-roadmap

Tracking the maintenance, enhancement, and advancement of the Open edX project.
11
star
67

mdrst

Markdown-to-RST Cheatsheet Maker
Python
11
star
68

edx-enterprise-data

The edX Enterprise Data repo is the home to tools and products related to providing access to Enterprise related data.
Python
11
star
69

edx-ace

edX's Automated Communication Engine
Python
11
star
70

edx-search

Python
11
star
71

frontend-app-gradebook

Instructor grade book tool
JavaScript
10
star
72

openedx-wordpress-ecommerce

You can sell your Open edX courses with WooCommerce using this free and open-source WordPress plugin.
PHP
10
star
73

openedx-k8s-harmony

A Prototype Helm Chart for deploying multiple Open edX instances (via Tutor) onto a cluster.
HCL
10
star
74

tutor-contrib-aspects

The Open Analytics Reference System - Tutor plugin
Python
10
star
75

frontend-app-payment

JavaScript
9
star
76

event-routing-backends

Consume edx tracking events and transform/transmit them to other LRSs.
Python
9
star
77

tubular

A repo for edx pipeline related scripts.
Python
9
star
78

edx-val

Python
9
star
79

edx-submissions

API for creating submissions and scores
Python
9
star
80

openedx-webhooks

Webhooks for the Open edX GitHub and JIRA
Python
9
star
81

edx-organizations

Python
8
star
82

completion

A library for tracking completion of blocks by learners in edX courses.
Python
8
star
83

edx-rbac

Library to help managing role based access controls for django apps
Python
8
star
84

web-fragments

Provides the ability to render fragments of web pages
Python
8
star
85

edx-analytics-configuration

Python
7
star
86

opaque-keys

Python
7
star
87

frontend-component-header

JavaScript
7
star
88

xblock-image-explorer

Python
7
star
89

frontend-app-ecommerce

Open edX micro-frontend application for managing e-commerce information.
JavaScript
7
star
90

frontend-app-authn

Open edX micro-frontend application for new login and registration experience.
JavaScript
7
star
91

cc2olx

A library to convert Common Cartridge Courses to OLX.
Python
7
star
92

openedx-filters

Open edX filters from the Hooks Extensions Framework
Python
7
star
93

edx-repo-health

Python
6
star
94

frontend-enterprise

Frontend utilities for enterprise features.
JavaScript
6
star
95

ecommerce-worker

Python
6
star
96

api-doc-tools

Tools for writing and generating API documentation for edX REST APIs
Python
6
star
97

frontend-app-discussions

A React-based micro frontend for the Open edX discussion forums.
JavaScript
6
star
98

frontend-component-footer

Site footer component for edX frontend apps.
JavaScript
6
star
99

frontend-app-learner-portal-programs

The learner portal allows a customized experience of learner-facing micro-frontend page components.
JavaScript
6
star
100

edx-app-test

Automated testing for edX Android and iOS mobile applications.
Python
6
star