Skip to content

Commit

Permalink
Merge branch 'master' into 720-table-script-functions
Browse files Browse the repository at this point in the history
  • Loading branch information
ishubin committed Dec 31, 2024
2 parents eb49515 + 8e7c7e8 commit db2dd2b
Show file tree
Hide file tree
Showing 8 changed files with 174 additions and 6 deletions.
66 changes: 66 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
Contributing
=============

When contributing to this repository, please first discuss the change you wish to make via an issue before making a change.

## Code of Conduct

### Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.

### Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting

### Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

### Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

### Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
79 changes: 79 additions & 0 deletions HELP-NEEDED.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
Help needed
============

If you find this project interesting and want to contribute but don't know where to start, you could pick out of the following topics:

- [Designing new shapes for Schemio](#designing-new-shapes-for-schemio)
- [Adding new icon packs](#adding-new-icon-packs)
- [Contribute to the interactive knowledgebase on https://schem.io](#contribute-to-the-interactive-knowledgebase-on-httpsschemio)
- [Testing](#testing)
- [Fixing the Electron build](#fixing-the-electron-build)
- [Designing new templates](#designing-new-templates)
- [Improve SchemioScript documentation](#improve-schemioscript-documentation)



Designing new shapes for Schemio
--------------------------------

In Schemio editor you can add more shapes to the items menu panel (on the right side) by clicking `More shapes...` button on the bottom. All these shapes are coming from the [assets/shapes](tree/master/assets/shapes/) folder and are defined in the [assets/shapes/shapes.json](blob/master/assets/shapes/shapes.json) file. You can design these shapes using `Shape Designer` shape pack. There is a short video tutorial available on Youtube: https://www.youtube.com/watch?v=-NpLN3m6jmY.

Couple of rules when designing a shape pack with Shape Designer:

- **Make sure the shape group is relevant to the community**. Don't just add 1 or 2 shapes, make sure that the shapes are going to be useful to the community.
- **Original Schemio Document**. When submitting a PR with new shape group please also include the original Schemio document that was used to design this shape pack. This is needed in case we would need to introduce changes to the shape group in future or to extend it. Please put it in [design/shape-packs](tree/master/assets/shapes/) folder. Use [electric-circuit-shapes.schemio.json](blob/master/design/shape-packs/electric-circuit-shapes.schemio.json) as an example.
- **Use only "path" shape or primitives from Shape Designer**. `path` shape is the only shape supported outside of `Shape Designer` pack. If you need primitives like a rectangle, ellipse or circle: use the ones provided in the `Shape Designer` pack
- **Every shape should have its outline duplicated**. In Schemio every shape actually consists of two elements: the actual shape that is rendered on scene and the outline that is used to define its event layer, to highlight the item and to attach connectors to it. Take a look at how this is implemented in [electric-circuit-shapes.schemio.json](blob/master/design/shape-packs/electric-circuit-shapes.schemio.json) by importing this JSON file in your Schemio Editor.
- **Shape group ID should be unique and consise**. Please make sure that your shape group ID does not clash with existing shape groups and is properly named without spaces or special characters. Use only lower-case leters, digits, `_` and `-` symbols.
- **Export your shape group into the right folder and add it to the shapes index file**. All shapes groups are stored in [assets/shapes](tree/master/assets/shapes/) and they are only included in the editor if the shape entry is added to the [assets/shapes/shapes.json](blob/master/assets/shapes/shapes.json) file.
- **Test your shape group before submitting it**. Before submitting your PR with your new shape group please test it locally


Adding new icon packs
-----------------------
Similar to the shape groups Schemio provides support for extending the shape menu panel with additional icon sets.
All icon packs are stored in [assets/art](tree/master/assets/art/) folder. The main entry for art packs is in [assets/art/art.json](blob/master/assets/art/art.json) file. This file is just a short list of all the available art packs with the name, author, preview icons, description and a reference to the art pack JSON file.


Rules for adding icon packs:

- First file an issue with the description of the icon pack and the link to the original icon pack. Before making any progress on this, discuss with the maintainers whether this icon pack is relevant to the community.
- Since the icon packs are distributed with Schemio, it is important to ensure that there is no collision with the original icon set license. Please include the link to the original icon set into the JSON file and also in the PR. Choose only the icon packs with the license that allows distribution for commercial use or that only require a link back to the author or to the original icon set.


Contribute to the interactive knowledgebase on https://schem.io
---------------------------------------------------------------
Schemio is not just a diagram and prototype editor. Whenever I can, I try to work on the interactive knowledgebase that helps others to get a quick insight on how various technologies work. For example starting with ["What happens when you open a website in your browser"](https://schem.io/projects/site-reliability-engineering-t4kEQtKNxpSvZG0b/docs/what-happens-when-you-enter-a-website-in-a-browser-USqkMRHEY7JZav9t) that demonstrates the process of everything that is happening behind the scene on the Internet. Documenting and creating these interactive scenes is a long and time-consuming process but I am trying to do my best to keep extending it. Once I get more time, I would like to continue creating more interactive demos in various topics. For instance here is what I am considering working in the future

- Site Reliability Engineering
- System Design
- Coding algorithms

Obviously you might have a different set of interests. I encourage you to create your own projects and invite anyone who can help you with the documentation. Treat it like a Wikipedia for diagrams.

If you want to join an existing project and become an author, first start by making a patch request to an existing document in that project. If you want to add a document to the existing project you would need to ask the project maintainers to create an empty document in the project and only then you can create a patch for it. If there is enough trust you can be added as a project contributor and you will have direct editor access to any document in the project.


Testing
-----------
Schemio is a very complex application. There are numerous ways of deploying it, e.g.: a docker container, a library, a standalone player, Google Drive as a backend, desktop version powered by Electron etc. You can imagine that maintaining and extending such a massive project is quite demanding. That is why we need your help with testing it and reporting any issues you find.


Fixing the Electron build
--------------------------
At some point there was an option of installing Schemio as a desktop app. Unfortunately the building of Electron package is broken. Check this [issue](https://github.com/ishubin/schemio/issues/719) and, if you know how to help, we welcome your PRs or add your suggestions in the issue comments.

Designing new templates
-----------------------
Schemio has a unique system of templates that can enhance the diagram editing experience. For example templates like: Mind Map, Slider, Popup, Slides, Tooltip, App Prototype etc. These templates extend the Schemio editor with additional controls and help users generating complex structures in their documents. Not only that, another important aspects of templates is that they offer a solution for dynamic extension of Schemio editor, thus rebuilding and redeploying Schemio is not necessary.

But the catch is you need to learn the Schemio JSON templating syntax. Unfortunately this is not fully documented anywhere, but, if you are interested you could also help with the documentation as well.

All the templates are located in [assets/templates/](tree/master/assets/templates) folder. The main templates entry is [assets/templates/index.json](blob/master/assets/templates/index.json) file. This index file is loaded in Schemio editor and is used to display all available templates in the shape menu panel. Each template entry is just a reference to another JSON file which is how the templates are stored. You might notice that some templates are stored in both JSON and YAML format. That is because their YAML file is the working document and JSON file is built with [build-template-index.py](blob/master/build-template-index.py) script. This allows us to separate any scripts used in the template into separate files. The easiest way to learn about it is seeing how "Slides" template is built in [assets/templates/ui/slides.yaml](blob/master/assets/templates/ui/slides.yaml) file. If you want to check something more advanced you can look at the "Mind map" template in [assets/templates/diagrams/mind-map.yaml](blob/master/assets/templates/diagrams/mind-map.yaml)


Improve SchemioScript documentation
------------------------------------

Currently the SchemioScript language is documented here: https://github.com/ishubin/schemio/blob/master/docs/Scripting.md
But this documentation is not very practical as it is not easy to search for the functions you are interested in. Building a better dcoumentation is on the roadmap, but if you feel like you know a better way already and can contribute - file an issue and lets discuss it.
30 changes: 27 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
Schemio
--------------------
===============

Schemio is a web based diagramming app that allows you to build interactive diagrams. Although originally Schemio was not designed for this, but it is also possible to use it as a prototyping app.


- [Features](#features)
- [Demo: What happens when you open a website in your browser](#demo-what-happens-when-you-open-a-website-in-your-browser)
- [Introduction to interactive diagrams with Schemio (Youtube video)](#introduction-to-interactive-diagrams-with-schemio-youtube-video)
- [Configuration of server-based version of Schemio](#configuration-of-server-based-version-of-schemio)
- [Running with Docker](#running-with-docker)
- [Contributing (help needed)](#contributing-help-needed)
- [License](#license)


Features
--------------

Features of Schemio:

- Creating interactive diagrams
Expand All @@ -22,8 +35,6 @@ Features of Schemio:

![Scheenshot of Schemio](https://github.com/ishubin/schemio/blob/master/docs/schemio-screenshot-2.png?raw=true)

For more insights on how the Schemio works and what you can do with it you can read the following article:
* [Interactive diagrams for complex systems](https://medium.com/@ivan.ishubin/interactive-diagrams-for-complex-systems-b24f739d34f5)

Demo: What happens when you open a website in your browser
----------------------------------------------------------
Expand Down Expand Up @@ -73,6 +84,19 @@ docker run -v "$(pwd):/opt/schemio" \
Don't forget to pull latest changes as Schemio is frequently updated.


Contributing (help needed)
--------------------------

If you find this project interesting and would like to contribute, your help would be greatly appreciated in many areas. To get started, please create an issue first so we can discuss the proposed changes and agree on their implementation. Below is a high-level overview of areas where you can contribute. For more details, refer to the [Help needed](/HELP-NEEDED.md) and [Contributing](/CONTRIBUTING.md) documents.

- Designing new shapes for Schemio
- Adding new icon packs
- Contribute to the interactive knowledgebase on https://schem.io
- Testing
- Fix the Electron build
- Desing new templates
- Improve SchemioScript documentation


License
---------
Expand Down
Loading

0 comments on commit db2dd2b

Please sign in to comment.