Skip to content

Commit e4ca7aa

Browse files
authored
Merge pull request #167 from sugarlabs/prepare-release-4.0.0
Prepare Release v4.0.0
2 parents a269bd8 + e7a99d1 commit e4ca7aa

File tree

12 files changed

+231
-235
lines changed

12 files changed

+231
-235
lines changed

.markdownlint.jsonc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@
118118
// MD024/no-duplicate-heading/no-duplicate-header - Multiple headings with the same content
119119
"MD024": {
120120
// Only check sibling headings
121-
"allow_different_nesting": false,
121+
"allow_different_nesting": true,
122122
// Only check sibling headings
123123
"siblings_only": false
124124
},

README.md

Lines changed: 37 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -7,101 +7,72 @@ A complete overhaul of [Music Blocks](https://github.com/sugarlabs/musicblocks).
77
The aim of the new architecture is modularity and extensibility. The idea is to create a core visual
88
programming platform, and extend it with other features.
99

10-
- The source code for the components specific to the application wil reside in this
10+
- The source code for the components specific to the application resides in this
1111
[**musicblocks-v4**](https://github.com/sugarlabs/musicblocks-v4/) repository.
1212

13-
- The source code for the programming framework will reside in the
13+
- The source code for the programming framework resides in the
1414
[**musicblocks-v4-lib**](https://github.com/sugarlabs/musicblocks-v4-lib/) repository.
1515

1616
- **musicblocks-v4-lib** is bundled as an _npm_ package and imported as a dependency in
1717
**musicblocks-v4**.
1818

1919
### Components
2020

21-
![Component Architecture](docs/images/architecture/components.jpg)
21+
![Component Architecture](docs/images/architecture/components.png)
2222

23-
#### Core
23+
**Note:** The greyed out components haven't been built yet.
2424

25-
3 core components: **Interface**, **Syntax**, **Integration**
25+
This is a highly pluggable architecture — except for application level functionality, anything related
26+
to project building and execution are features which shall be dynamically pluggable (they may or may
27+
not be configured to load).
2628

27-
- **Interface** component shall contain the UI components. These are the ones which use _React_ and
28-
follow _Model-View-ViewModel_ (_MVVM_) architecture.
29+
Components can be strictly or partially dependent on other components. In case of strict dependency,
30+
a depending component needs to be loaded for a dependent component to be loaded. In case of partial
31+
dependency, a dependent component adds extra functionality to the depending component if it is loaded.
2932

30-
- **Menu** shall handle top level operations like running projects, managing projects, undo/redo,
31-
application settings.
33+
#### Programming Framework
3234

33-
- **Config** shall be used to configure the feature configurations.
35+
This is reponsible for defining the _syntax constructs_ (_syntax elements_, _syntax tree_) and
36+
utilities (_syntax specification_, _syntax warehouse_), and contains the _execution engine_
37+
(_scheduler_, _interpreter_, _parser_, _symbol table_) for running the program represented by the
38+
_syntax tree_. See
39+
[`musicblocks-v4-lib/README.md`](https://github.com/sugarlabs/musicblocks-v4-lib/blob/develop/README.md)
40+
for details.
3441

35-
- **Status** shall display the application status.
42+
The components in `musicblocks-v4` shall use the constructs exposed by `musicblocks-v4-lib`.
3643

37-
- **Info** shall display logs.
44+
#### View Framework
3845

39-
- **Console** shall provide an interactive tool to run application level commands and
40-
display messages (like a terminal).
46+
This is responsible for creating the skeleton of the UI — components that have a view shall request
47+
component wrappers from the _view framework_ and encapsule their DOM inside the wrappers.
4148

42-
- **Debugger** shall be used to debug Music Blocks programs by monitoring states.
49+
#### Integration
4350

44-
- **Editor** shall be responsible to building Music Blocks programs in text form.
51+
This is responsible for adding general application-wide functionalities like _internationalisation_,
52+
_project management_, and _activity history_.
4553

46-
- **Planet** shall be a repository for openly shared projects.
54+
#### Plugin - UI
4755

48-
- **Syntax** component shall contain the programming framework. These are responsible for internal
49-
representation and execution of Music Blocks programs. This shall come with a factory set of program
50-
building syntax elements.
56+
This contains UI components for application-wide interactive/informative functionality.
5157

52-
- **Elements** shall describe the rudimentary syntax element constructs — **data**, **expressions**,
53-
**statements**, and **blocks**.
58+
#### Plugin - Art
5459

55-
- **Specification** shall describe the ambient configurations (label, selective connectivity, etc.)
56-
for syntax elements.
60+
This is responsible for artwork generation. It shall contain a set of _syntax elements_ of
61+
instructions and arguments related to artwork generation and artboard (artwork canvas) states.
5762

58-
- **Warehouse** shall instantiate and maintain a table of syntax element instances.
63+
#### Plugin - Music
5964

60-
- **Tree** shall respresent the syntax tree by maintaining the interconnections between syntax
61-
elements.
65+
This is responsible for music generation. It shall contain a set of _syntax elements_ of
66+
instructions and arguments related to music generation, composition, and music states.
6267

63-
- **Symbol Table** shall maintain the set of program variables.
68+
#### Plugin - Bricks
6469

65-
- **Parser** shall handle the sequential traversal of syntax elements.
70+
This is responsible for building Music Blocks programs using graphical bricks (blocks).
6671

67-
- **Interpreter** shall orchestrate running Music Blocks programs — exeution of syntax elements.
72+
#### Config
6873

69-
- **Integrations** component shall contain the components responsible for handling application
70-
configurations and other bookkeeping.
71-
72-
- **Config** shall handle application specific configurations and loading of configured plugins.
73-
74-
- **i18n** shall handle internationalisation — managing language strings.
75-
76-
- **Projects** shall handle for creating, loading, merging, and exporting projects.
77-
78-
- **History** shall handle maintaining a log of application-level operations for rollback.
79-
80-
In addition, a **Broker** component shall be responsible for inter-component communication.
81-
82-
#### Plugins
83-
84-
2 kinds of plugins: **Features** and **Syntax Builders**
85-
86-
- **Features** add new functionality to the application. These may add interface components and new
87-
set of syntax elements.
88-
89-
- **Syntax Builders** add interfaces to build Music Blocks programs.
90-
91-
Plugins may be extended themselves to add more optional functionalities.
92-
93-
##### Plugin (Feature) - Painter
94-
95-
This shall add artwork generating functionality, and a set of syntax elements to interact with them.
96-
97-
##### Plugin (Feature) - Singer
98-
99-
This shall add music generating functionality, and a set of syntax elements to interact with them.
100-
This shall be extended to add widgets for generating syntax element stacks.
101-
102-
##### Plugin (Syntax Builder) - Bricks
103-
104-
This shall add the functionality to build Music Blocks programs using visual bricks.
74+
This is responsible for conditionally loading the pluggable components dynamically and sharing instance
75+
references between them.
10576

10677
### Wireframe
10778

docs/artboard.md

Lines changed: 0 additions & 168 deletions
This file was deleted.
-187 KB
Binary file not shown.
213 KB
Loading

src/CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# Changelog
2+
3+
## 4.0.0 [2022-02-13]
4+
5+
- Sets up a _Node.js_ project for _React_ using `create-react-app`.
6+
- Bundles the _Programming Framework_ ([musicblocks-v4-lib](https://github.com/sugarlabs/musicblocks-v4-lib)).
7+
- Adds a basic _View Framework_ that creates a _workspace_ wrapper, and _toolbar_ buttons and wrappers.
8+
- Adds the _Config_ component that creates a dependency tree of components and dynamically loads them.
9+
- Adds the _Painter_ component with a single SVG _sprite_.
10+
- Adds basic _Syntax Elements_ for _Painter_ instructions.
11+
- Adds a basic _Editor_ to author programs using _Painter_ instructions.
12+
- Displays the _Painter_ instructions API in the _Editor_.
13+
- Adds a basic _Menu_ to run and reset programs authored in the _Editor_.
14+
- Adds project documentation.
15+
- Adds `lint` and `CD` workflows.

0 commit comments

Comments
 (0)