Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Example modules #2434

Merged
merged 9 commits into from
Jan 12, 2024
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions _data/sidebars/scos_dev_sidebar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3163,6 +3163,8 @@ entries:
url: /docs/scos/dev/updating-spryker/switch-demo-shop-version.html
- title: Troubleshooting updates
url: /docs/scos/dev/updating-spryker/troubleshooting-updates.html
- title: Example modules
url: /docs/scos/dev/example-modules.html
- title: Code contribution guide
url: /docs/scos/dev/code-contribution-guide.html
...
65 changes: 65 additions & 0 deletions docs/scos/dev/example-modules.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
---
title: Example modules
description: Spryker example modules are designed for specific use cases and their functionality is aligned with unique business requirements.
last_updated: Jan 11, 2024
template: concept-topic-template
---

The Spryker *core modules* provide generic, reusable functionality that benefits a wide range of use cases. These modules offer a foundation for customization and serve as versatile building blocks.

*Example modules* in contrast, are designed for specific, one-off use-cases. Their functionality is tightly aligned with unique business requirements and isn't suitable for broad reuse. These modules serve as specialized, project-specific solutions.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@floriankraemer please add the example that you wanted to add instead of the Reach API

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.


## Example module use-cases

Use-cases for example modules include showcasing functionality and demonstrating specific use cases.

### SCCOS: Showcase functionality

SCCOS uses example modules to fill the gap with concrete example implementation for an abstract workflow, which is the delivery target. However, this concrete implementation is not intended for actual use by any specific customer or business use-case. Therefore, the core does not include the actual business logic.

### SCCOS: Unique business use-case

SCCOS uses example modules to implement functionality that is tailored to specific business use cases. The core does not include the actual business logic, as it doesn't meet the standard core quality. Instead, this logic is extracted into an example module.

## What Spryker delivers

* **Compliance:**
* All example modules will be part of the Spyker Example organization on Github.
* All example modules will be released as standalone modules.
* All example modules will be released under the MIT license.
* **Uniformity:**
* Example modules will be suffixed with “example”.
* **Testability:**
* Example modules might include tests, but they don't have to.
* **Learnability:**
* A proper explanation of the implemented functionality will be provided in the `readme.md` file.

## What isn't included

In contrast to Spryker SCCOS core modules, example modules do not adhere to strict guidelines and regulations.

* **Stability:**
While we strive to maintain the quality of our example modules, we do not guarantee a stable release.
* **Compatibility:**
* While we do our best to keep things compatible, we can't guarantee forward or backward compatibility.
* There is no upgradability support for projects or Demo Shop integrations.
* **Learnability:**
While documentation is provided when possible, it is not a firm commitment. We encourage community learning and support.
* **Maintainability:**
* There is no obligation to maintain example modules.
* Example modules may be abandoned at any time.
* Example modules aren't supported in any way.
* Maintenance isn't part of the design.
* **Customizability:**
* We neither support nor encourage customization of example modules.
* Example modules have not been designed for use, extension, or configuration in projects.
* **Modularity:**
No additional effort will be invested in enhancing modularity and extendibility for example modules.
* **Security:**
Spryker ensures security for its production-grade core modules. While example modules might receive security updates, there is no urgency for fixes, as they are not intended for production use.
* **Performance:**
While we aim for good performance, optimizing example modules beyond existing best practices is not a priority.
* **Testability:**
We might provide tests for example modules but they don't have high priority, as the modules aren't intended for production use or extension.

In a nutshell, think of our example packages as a playground - they offer potential for fun and innovation, so explore them at your own pace.
13 changes: 13 additions & 0 deletions shell/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash

# Define source and target paths
source_path="$PWD"
bundle_path="$source_path/vendor/bundle"

# Run Jekyll with options
docker run --rm \
--volume="$source_path:/srv/jekyll" \
--volume="$bundle_path:/usr/local/bundle" \
-p 4000:4000 \
jekyll/jekyll:4.2.0 jekyll serve \
--incremental --livereload
Loading