Skip to content

Commit ff47044

Browse files
committed
Consistently capitalize 'Aside'
1 parent bc92ec6 commit ff47044

4 files changed

Lines changed: 172 additions & 172 deletions

File tree

source/developers/concepts/about_xblock_asides.rst

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ About XBlock Asides
66

77
.. tags:: developer, concept
88

9-
An XBlock aside is a class that injects content into the rendered views of
9+
An XBlock Aside is a class that injects content into the rendered views of
1010
existing XBlocks without modifying those XBlocks. Asides let you add behavior,
1111
data, and UI elements to many XBlock instances at once, across XBlock types you
1212
do not own, while preserving the host XBlock's code, fields, and Open Learning
@@ -19,15 +19,15 @@ XML (OLX) representation.
1919
What an Aside Is
2020
****************
2121

22-
An aside is a Python class that subclasses :class:`~xblock.core.XBlockAside`,
22+
An Aside is a Python class that subclasses :class:`~xblock.core.XBlockAside`,
2323
declares one or more view-injection methods using the
2424
:func:`~xblock.core.XBlockAside.aside_for` decorator, and is registered with
2525
the platform through a Python entry point in the ``xblock_asides.v1`` group.
2626
When the platform renders an XBlock view, the runtime collects every
27-
applicable aside, invokes its matching aside view, and appends the resulting
27+
applicable Aside, invokes its matching Aside view, and appends the resulting
2828
fragments to the host XBlock's rendered fragment.
2929

30-
An aside is **not** a child XBlock. It does not appear in the course outline,
30+
An Aside is **not** a child XBlock. It does not appear in the course outline,
3131
it does not have its own URL, and it cannot be added to a course like a
3232
regular block. It exists only in relation to a host block, and its lifecycle
3333
is bound to that host block's lifecycle.
@@ -42,7 +42,7 @@ you have three options:
4242

4343
#. Fork the XBlock and modify it directly.
4444
#. Replace the XBlock with a new XBlock that wraps the original.
45-
#. Attach an aside to the existing XBlock.
45+
#. Attach an Aside to the existing XBlock.
4646

4747
The first two options carry significant costs. Forking creates a parallel
4848
codebase that must be maintained against upstream changes. Replacing the
@@ -51,11 +51,11 @@ it does not scale when you want to enhance many different XBlock types in the
5151
same way.
5252

5353
Asides solve this by externalizing the enhancement. The host XBlock is not
54-
modified. The same aside can apply to a Video block, a Problem block, or any
54+
modified. The same Aside can apply to a Video block, a Problem block, or any
5555
other block type, by overriding a single classmethod. Asides can serialize
5656
their own scoped fields during course import and export.
5757

58-
Reach for an aside when all of the following are true:
58+
Reach for an Aside when all of the following are true:
5959

6060
* You want to enhance one or more existing XBlock types without forking them.
6161
* The enhancement is conceptually layered on top of the block, not a
@@ -75,13 +75,13 @@ How an Aside Relates to Its Host Block
7575
**************************************
7676

7777
The runtime maintains a many-to-many relationship between asides and host
78-
blocks at runtime, but each aside instance is bound to exactly one host block
78+
blocks at runtime, but each Aside instance is bound to exactly one host block
7979
during a single render. The relationship is established in three stages.
8080

8181
Per-Block Filtering
8282
===================
8383

84-
For each candidate aside type, the runtime instantiates the aside and asks
84+
For each candidate Aside type, the runtime instantiates the Aside and asks
8585
it whether it should apply to this specific block by calling its
8686
:meth:`~xblock.core.XBlockAside.should_apply_to_block` classmethod. The
8787
default implementation returns ``True``. Real-world asides almost always
@@ -91,13 +91,13 @@ contexts, or feature flags.
9191
Rendering and Layout
9292
====================
9393

94-
For each aside that survives filtering, the runtime invokes the aside method
94+
For each Aside that survives filtering, the runtime invokes the Aside method
9595
that was decorated with ``@XBlockAside.aside_for(view_name)`` for the view
96-
being rendered. The aside method returns a ``Fragment``, the runtime wraps
96+
being rendered. The Aside method returns a ``Fragment``, the runtime wraps
9797
that fragment with identifying markup, and the runtime appends the wrapped
9898
fragment to the host block's rendered output. A runtime can override
9999
:meth:`~xblock.runtime.Runtime.layout_asides` to control where and how the
100-
aside fragments are placed.
100+
Aside fragments are placed.
101101

102102
Why Asides Are Worth the Trouble
103103
********************************
@@ -109,31 +109,31 @@ remain useful, come from the production deployments that depend on them.
109109
Multiple Block Types, One Implementation
110110
========================================
111111

112-
A single aside class can decorate Video blocks, Problem blocks, and any
112+
A single Aside class can decorate Video blocks, Problem blocks, and any
113113
other block type the author chooses, by checking ``block.category`` or
114114
``block.scope_ids.block_type`` inside ``should_apply_to_block``. The MIT
115-
Open Learning chat aside, for example, attaches an "AskTIM" chat button to
115+
Open Learning chat Aside, for example, attaches an "AskTIM" chat button to
116116
both Video and Problem blocks from a single class, with one entry point.
117117
Without asides, the same outcome would require either two parallel forks
118118
or replacement blocks for both types.
119119

120120
Course Author Control
121121
=====================
122122

123-
An aside can declare its own scoped fields, just like an XBlock. By exposing
124-
those fields in an author view, an aside gives course authors a UI to enable
123+
An Aside can declare its own scoped fields, just like an XBlock. By exposing
124+
those fields in an author view, an Aside gives course authors a UI to enable
125125
or disable the enhancement on a per-block basis. The settings are stored
126-
under the aside's own scope, not the host block's, so they are preserved
126+
under the Aside's own scope, not the host block's, so they are preserved
127127
across exports and imports without any change to the host block's data
128128
model.
129129

130130
OLX Export and Import
131131
=====================
132132

133-
When a course is exported to OLX, the platform serializes each aside as an
134-
XML child element under its host block, named after the aside's entry point
133+
When a course is exported to OLX, the platform serializes each Aside as an
134+
XML child element under its host block, named after the Aside's entry point
135135
name. On import, the runtime reconstitutes the asides automatically. This
136-
means an aside-enhanced course is portable, with limitations described below.
136+
means an Aside-enhanced course is portable, with limitations described below.
137137

138138
Real-World Examples
139139
*******************
@@ -144,21 +144,21 @@ do.
144144
Rapid Response XBlock
145145
=====================
146146

147-
The `rapid-response-xblock`_ from MIT Open Learning is a single aside that
147+
The `rapid-response-xblock`_ from MIT Open Learning is a single Aside that
148148
applies to Problem blocks. It overlays an instructor-only control on the
149149
problem in the LMS that lets a live instructor open and close response
150150
windows during a lecture, and it renders a real-time chart of student
151151
responses. Course authors enable it per problem in Studio. The repository
152-
name calls it an "xblock" but the implementation is purely an aside.
152+
name calls it an "xblock" but the implementation is purely an Aside.
153153

154154
Open Learning Chat Aside
155155
========================
156156

157-
The `ol-openedx-chat`_ aside, also from MIT Open Learning, attaches an
157+
The `ol-openedx-chat`_ Aside, also from MIT Open Learning, attaches an
158158
"AskTIM" chat button to Video and Problem blocks. The button opens a
159159
context-aware chat drawer that streams messages to a backend large language
160160
model, passing block-specific context such as a video transcript identifier
161-
or a problem's siblings. A single aside class, registered as one entry
161+
or a problem's siblings. A single Aside class, registered as one entry
162162
point, handles both block types and uses ``should_apply_to_block`` to gate
163163
on a course-level waffle flag and per-course settings.
164164

@@ -169,15 +169,15 @@ Asides are a real, working feature in production deployments, but the
169169
ecosystem around them is incomplete. The list below is drawn from the
170170
state of the codebase as of the Sumac release and from a 2025 Open edX
171171
Conference talk by Peter Pinch of MIT Open Learning. Read it before
172-
committing to an aside-based design.
172+
committing to an Aside-based design.
173173

174174
No Authoring Story in the Course Authoring MFE
175175
==============================================
176176

177-
The Studio author view for an aside is rendered by the legacy course
177+
The Studio author view for an Aside is rendered by the legacy course
178178
authoring frontend. The current Authoring micro-frontend has no
179-
defined location to display aside author UI. If your project depends on the
180-
new MFE for authoring, plan to render the aside's author UI through a
179+
defined location to display Aside author UI. If your project depends on the
180+
new MFE for authoring, plan to render the Aside's author UI through a
181181
different mechanism, or accept that authors will use the legacy Studio for
182182
this part of the workflow.
183183

@@ -186,33 +186,33 @@ Not All XBlocks Round-Trip Through OLX
186186

187187
OLX export and import for asides depends on the host XBlock cooperating
188188
with the export process. Some XBlocks, including ORA2, do not preserve
189-
aside data through their export and import paths. If your aside must
189+
Aside data through their export and import paths. If your Aside must
190190
survive a course export and re-import on a course that uses one of these
191191
blocks, test the round trip end to end before depending on it.
192192

193193
Multiple Asides on a Single Block Are Not Reliable
194194
==================================================
195195

196-
The runtime supports multiple aside types decorating the same block in
196+
The runtime supports multiple Aside types decorating the same block in
197197
principle, but interactions between asides on the same block are not
198198
well-tested. Two asides that both decorate ``student_view`` on the same
199199
block may render correctly in isolation and break when combined. If you
200-
need this, build a single aside that composes both behaviors rather than
200+
need this, build a single Aside that composes both behaviors rather than
201201
relying on two independent asides to coexist.
202202

203203
JavaScript Library Loading Is Limited
204204
=====================================
205205

206206
Asides use the same fragment-based JavaScript loading mechanism as XBlocks,
207-
which assumes a single set of static assets. If your aside needs a JS
207+
which assumes a single set of static assets. If your Aside needs a JS
208208
library that is not already loaded by the host page, you must add it
209209
through the fragment, and you must handle ordering and conflicts yourself.
210-
There is no shared aside-level mechanism for declaring library dependencies.
210+
There is no shared Aside-level mechanism for declaring library dependencies.
211211

212212
Where to Go Next
213213
****************
214214

215-
If you are ready to build an aside, start with
215+
If you are ready to build an Aside, start with
216216
:ref:`XBlock Aside Quickstart`. If you already have a target XBlock in mind
217217
and want a step-by-step recipe, read :ref:`Add an XBlock Aside`. For the
218218
complete list of classes, decorators, methods, and entry points, consult
@@ -228,10 +228,10 @@ complete list of classes, decorators, methods, and entry points, consult
228228
The complete API surface for ``XBlockAside`` and its runtime hooks.
229229

230230
:ref:`Add an XBlock Aside` (how-to)
231-
A step-by-step recipe for adding an aside to existing XBlocks.
231+
A step-by-step recipe for adding an Aside to existing XBlocks.
232232

233233
:ref:`XBlock Aside Quickstart` (quickstart)
234-
A beginner-friendly walkthrough from zero to a running aside.
234+
A beginner-friendly walkthrough from zero to a running Aside.
235235

236236
:ref:`Hooks Extension Framework` (concept)
237237
An alternative extension mechanism for non-view-based behaviors.

0 commit comments

Comments
 (0)