Skip to content

Commit

Permalink
Resolve merge conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
SimonRothUCF committed Sep 17, 2024
2 parents 19542e1 + 85dd532 commit 02d6cfe
Show file tree
Hide file tree
Showing 92 changed files with 2,677 additions and 1,649 deletions.
76 changes: 76 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
# Contributing to Materia

Materia is an open-source project created and maintained by the [University of Central Florida's Center for Distributed Learning](https://cdl.ucf.edu/) and its [Techrangers](https://techrangers.cdl.ucf.edu/) team. We appreciate your interest in contributing: Materia would be nothing without the passion, dedication, and vision of its many contributors over the years. Below are guidelines we expect prospective contributors to abide by.

## Issues, Bug Reports, and Feature Requests

Be sure to peruse the list of [open issues](https://github.com/ucfopen/Materia/issues) and [pull requests](https://github.com/ucfopen/Materia/pulls) before submitting a bug report or feedback, to ensure the bug or issue you identified has not already been reported by someone else, or already addressed in a PR.

Please keep in mind that feedback or feature requests submitted as issues are not guaranteed to be worked on. The Materia team has the ultimate authority to determine what will or will not make it in to the codebase.

#### Issues Related to Widgets

Please bear in mind that the Materia repository represents the codebase for the Materia _platform_, but does not contain any of the widgets installed to the system. Most first-party widgets are open source as well, and issues (as well as feedback and feature requests) should be submitted in the repository for the widget itself. Visit the [UCFOpen](https://github.com/ucfopen) GitHub page and search for the widget(s) in question to find them. If you cannot find the repository for a specific widget, we recommend visiting the [UCFOpen Slack Discussion](https://dl.ucf.edu/join-ucfopen/) and bringing up your question in the `#materia` channel.

## How to Contribute

Before making any code commits to Materia, you should [fork the repository](https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project) on GitHub and push changes to your fork. External contributors cannot push code changes directly to the UCFOpen repository or any of its branches. Generally, we advise the following workflow for code contributions to Materia or any of its widget repositories:

1. Choose an issue to work on, or submit a new one.
2. Fork the Materia (or widget) repository.
3. Create an issue branch. We prefer the following branch naming convention: `<issue_number>/stub-describing-the-issue`. For example, `1234/add-wobble-mode`.
4. Make the code changes necessary to resolve the issue.
5. Test the code in your own environment and ensure it passes the test suites.
6. Commit and push the code to your fork.
7. Create a pull request back to the `ucfopen/Materia` (or widget) repository.
8. Write a description of what you did in the description field.
9. Link the pull request to the issue.
10. Pay attention to the pull request and respond to any questions others have about it. It may take a few back-and-forth communications and changes for your pull request to be approved and merged.

Keep in mind that code submitted as a pull request is not guaranteed to be merged. Producing quality code that addresses a clear bug, deficit, or issue, and communicating effectively over the course of the PR's review process will give your work the best chance of approval.

## Branching and Versioning

Generally, we maintain branches as follows:

### Master

The master branch represents the most up-to-date, stable version of Materia. We do not at present maintain specific `stable` branches, but rather, commits on `master` will be tagged for release using [Semantic Versioning](https://semver.org/). A commit tagged with a version represents a production-ready release. Releases are also published on our [Releases Page](https://github.com/ucfopen/Materia/releases) as well as the [GitHub package registry](https://github.com/ucfopen/Materia/pkgs/container/materia).

### Dev Branches

Dev branches represent working branches for specific upcoming releases. Generally, these are are `MAJOR` or `MINOR` version releases, with `PATCH` versions reserved for hotfixes. As soon as a dev branch is merged into `master` and tagged for release, a new dev branch is spun up for the next expected version release. For example, `dev/10.0.0` was the dev branch associated with the `v10.0.0` version of Materia released in October 2023. Following that, `dev/10.1.0` became the next dev branch, then `dev/10.2.0`, etc.

### Issue, Feature, and Hotfix Branches

As mentioned under the How to Contribute section, we generally prefer issue branches are formatted as follows: `<issue_number>/stub-describing-the-issue`. For example, `1234/add-wobble-mode`.

Some major additions may not have a specific issue they fall under. These can be prepended by `feature`, such as `feature/add-wobble-mode`. Similarly, hotfixes are often named with the `hotfix/` prefix, such as `hotfix/wobble-mode-too-wobbly`.

### Alpha and RC Releases

As a dev branch matures towards release, commits will be tagged as `alpha` or `rc` (Release Candidate) versions. Alpha tags should be considered semi-stable and are not suitable for production use. Release candidate builds are expected to be stable or mostly stable, but have not yet been upgraded to full releases. Alpha and RC tags should conform to semver: `v1.1.0-alpha.1` or `v1.1.2-rc.1`, etc. Note that not every dev branch will have alpha or release candidate versions. Tags should always be signed (`git tag -s ...`) to ensure trust.

## License

Materia is published under the [AGPL-3.0](https://github.com/ucfopen/Materia?tab=AGPL-3.0-1-ov-file#readme) license, and code contributions, forks, and derivatives are expected to conform to the spirit and letter of the license. Contributors to AGPL-3.0 projects should be aware of the following:

#### Contribution Licensing:

Contributors who submit modifications or additions to the software must do so under the AGPL-3.0, ensuring that all contributions remain free and open.

#### Distribution of Modified Versions:

When distributing modified versions, contributors must provide access to the source code of their modifications. This can be done by providing a written offer or a direct link to the source code.

#### Interaction Over a Network:

If contributors use the software to provide a service over a network (e.g., a web application), they must ensure that users can access the source code of the service, including any modifications.

#### Patent Provisions:

Contributors grant a patent license to users, protecting them from patent claims related to the use of the software. This encourages a collaborative environment without the threat of patent litigation.

#### License Compatibility and Mixing Code:

Contributors can mix AGPL-3.0 licensed code with GPL-3.0 licensed code, allowing for flexibility in combining different free software projects.
36 changes: 25 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,35 @@ View the [Materia Docs](http://ucfopen.github.io/Materia-Docs/) for info on inst

[Join UCF Open Slack Discussions](https://dl.ucf.edu/join-ucfopen/) [![Join UCF Open Slack Discussions](https://badgen.net/badge/icon/ucfopen?icon=slack&label=slack&color=e01563)](https://dl.ucf.edu/join-ucfopen/)

# Installation
## Using Materia at Your Institution

It's important to note that UCF maintains an instance of Materia for the UCF community, but it cannot grant access to users of other institutions. External institutions are welcome to host their own copy of Materia, and interested parties should contact their IT and distance learning department(s) about making Materia available to their students. We also welcome questions and inquiries on the UCF Open Slack discussion linked above.

## Widgets & Associated Repositories

While casual references to _Materia_ typically involve both the platform and its associated ecosystem of widgets, this repository only includes the Materia platform itself. Additional open-source repositories associated with Materia include:

- Most first-party widgets authored by UCF. These can be found by searching for "widget" under the UCFOpen GitHub organization or visiting the [Materia Widget Gallery](https://ucfopen.github.io/materia-widget-gallery/).
- The [Materia Widget Developer Kit (MWDK)](https://github.com/ucfopen/Materia-Widget-Dev-Kit). This is a required dependency of all widgets and includes a built-in express server and webpack configs for rapid in-situ development of widgets.
- [Materia-Theme-UCF](https://github.com/ucfopen/Materia-Theme-UCF). This is a FuelPHP module that allows for overrides of certain views (login, help pages) with institution-specific variants.

## Installation

Materia is configured to use Docker containers in production environments, orchestrated through docker compose, though other orchestration frameworks could potentially be used instead. While it may be possible to deploy Materia without Docker, we **do not recommend doing so**.

## Docker Deployment
### Docker Deployment

We publish production ready docker and nginx containers in the [Materia Docker repository](https://github.com/orgs/ucfopen/packages/container/package/materia). For more info on using Docker in Production, read the [Materia Docker Readme](docker/README.md)

## Configuration
### Configuration

Visit the [Server Variables](https://ucfopen.github.io/Materia-Docs/admin/server-variables.html) page on our docs site for information about configuration through environment variables.

# Development
## Development

Code contributors should review the [CONTRIBUTING](CONTRIBUTING.md) document before proceeding.

## Local Dev with Docker
### Local Dev with Docker

Get started with a local dev server:

Expand All @@ -44,15 +58,15 @@ Note that Materia uses a self-signed certificate to facilitate https traffic loc

More info about Materia Docker can be found in the [Materia Docker Readme](docker/README.md)

## Creating additional users
### Creating additional users

See the wiki page for [Creating a local user](https://github.com/ucfopen/Materia/wiki#creating-a-local-user).

## Running Tests
### Running Tests

Tests run in the docker environment to maintain consistency. View the `run_tests_*.sh` scripts in the docker directory for options.

### Running A Single Test Group
#### Running A Single Test Group

Inspect the actual test command in `/.run_tests.sh` for guidance, but as of the time of writing this, you can run a subset of the tests in the docker environment to save time.

Expand All @@ -62,17 +76,17 @@ The following command will run just the **Oauth** tests rather quickly:
./run_tests.sh --group=Oauth
```

## Git Hooks
### Git Hooks

There is a pre-commit hook available to ensure your code follows our linting standards. Check out the comments contained inside the hook files (in the githooks directory) to install it, you may need a few dependencies installed to get linting working.

# Authentication
## Authentication

Materia supports two forms of authentication:

- Direct authentication through direct logins. Note that Materia does not provide an out-of-the-box tool for user generation. If your goal is to connect to an external identity management platform or service, you will need to author an authentication module to support this. Review FuelPHP's [Auth package and Login driver](https://fuelphp.com/docs/packages/auth/types/login.html) documentation, as well as the `ltiauth` and `materiaauth` packages located in `fuel/packages` to get started.
- Authentication over LTI. This is the more out-of-the-box solution for user management and authentication. In fact, you can disable direct authentication altogether through the `BOOL_LTI_RESTRICT_LOGINS_TO_LAUNCHES` environment variable, making LTI authentication the only way to access Materia. Visit our [LTI Integration Overview](https://ucfopen.github.io/Materia-Docs/develop/lti-integrations.html) page on the docs site for more information.

# Asset Storage
## Asset Storage

Materia enables users to upload media assets for their widgets, including images and audio. There are two asset storage drivers available out of the box: `file` and `db`. `file` is the default asset storage driver, which can be explicitly set via the `ASSET_STORAGE_DRIVER` environment variable.
12 changes: 7 additions & 5 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,12 @@
"iturgeon/qasset": "1.0.5",
"fuelphp/upload": "2.0.7",
"monolog/monolog": "1.18.*",
"phpseclib/phpseclib": "2.0.31",
"phpseclib/phpseclib": "~3.0",
"phpseclib/phpseclib2_compat":"~1.0",
"eher/oauth": "1.0.7",
"aws/aws-sdk-php": "3.288.1",
"symfony/dotenv": "^5.1",
"ucfopen/materia-theme-ucf": "2.0.2"
"ucfopen/materia-theme-ucf": "2.0.3"
},
"suggest": {
"ext-memcached": "*"
Expand All @@ -66,7 +67,8 @@
"vendor-dir": "fuel/vendor",
"optimize-autoloader": true,
"allow-plugins": {
"composer/installers": true
"composer/installers": true,
"php-http/discovery": true
}
},
"extra": {
Expand Down Expand Up @@ -97,9 +99,9 @@
"package": {
"name": "ucfopen/materia-theme-ucf",
"type": "fuel-package",
"version": "2.0.2",
"version": "2.0.3",
"dist": {
"url": "https://github.com/ucfopen/Materia-Theme-UCF/archive/refs/tags/v2.0.2.zip",
"url": "https://github.com/ucfopen/Materia-Theme-UCF/archive/refs/tags/v2.0.3.zip",
"type": "zip"
},
"source": {
Expand Down
Loading

0 comments on commit 02d6cfe

Please sign in to comment.