From 105d0be58147d48f1edcfeab8c9864962ffc40c6 Mon Sep 17 00:00:00 2001 From: Aurindam Jana Date: Thu, 15 Jun 2023 00:46:57 +0200 Subject: [PATCH] update FAQ, README and Contribution Guidelines Update Contribution Guidelines Update FAQ Update README.md Rearrange README Fix typos --- CONTRIBUTING.md | 32 +++++--- FAQ.md | 181 +++++++++++++++++-------------------------- README.md | 201 +++++++++++++++++++++++++++--------------------- 3 files changed, 206 insertions(+), 208 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 73d48cd4124..aec1c377d5a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,13 +1,28 @@ # Contributing -We warmly welcome contributions to the project. Let's discuss ideas or questions in [Github discussions](https://github.com/slint-ui/slint/discussions). -Please feel welcome to open github issues, pull requests or comment for example on [RFC tagged](https://github.com/slint-ui/slint/labels/rfc) issues. +We warmly welcome contributions to the project. Let's discuss ideas or questions +in [Github discussions](https://github.com/slint-ui/slint/discussions). +Please feel welcome to open github issues, pull requests or comment for example +on [RFC tagged](https://github.com/slint-ui/slint/labels/rfc) issues. + +## Contributor License Agreement + +All contributions are accepted under the terms of the MIT No Attribution License. +Please note that you must have written the contribution 100% yourself and that +no rights have been transferred to third parties (e.g. your employer). +In any other case, please let us know. + +When opening a pull request, you will be asked to sign a +[Contributor License Agreement (CLA)](https://cla-assistant.io/slint-ui/slint). ## Coding Style -For the Rust portion of the code base, we enforce the coding style via rustfmt. The [`rustfmt.toml`](/rustfmt.toml) in the root direction is used to configure the style. +For the Rust portion of the code base, we enforce the coding style via rustfmt. +The [`rustfmt.toml`](/rustfmt.toml) in the root direction is used to configure +the style. -For the C++ portion of the code base, we enforce the coding style via `clang-format`, via the [`.clang-format`](/.clang-format) file in the root directory. +For the C++ portion of the code base, we enforce the coding style via `clang-format`, +via the [`.clang-format`](/.clang-format) file in the root directory. ## Tooling @@ -36,10 +51,5 @@ Typical modules to skip include: `cspell`, `check-json` and `prettier`. ## Testing -All changes submitted to the repository are automatically built and tested via Github Actions and the corresponding workflow defined in the [`rust.yaml`](/.github/workflows/rust.yaml) file. - -## Contributor License Agreement - -When opening a pull request, you will be asked to sign a [Contributor License Agreement (CLA)](https://cla-assistant.io/slint-ui/slint) which -will allow us to relicense your contribution. -Please contact us for any concerns. +All changes submitted to the repository are automatically built and tested via +Github Actions and the corresponding workflow defined in the [`rust.yaml`](/.github/workflows/rust.yaml) file. diff --git a/FAQ.md b/FAQ.md index 41a85212182..7ca1b73e7d7 100644 --- a/FAQ.md +++ b/FAQ.md @@ -1,47 +1,39 @@ -# Frequently Asked Questions: + +# Frequently Asked Questions: - [General](#general) - - [Where does the name come from?](#where-does-the-name-come-from) - - [Why are you creating a new markup language?](#why-are-you-creating-a-new-markup-language) + - [Why does Slint use a domain specific langauage?](#why-does-slint-use-a-domain-specific-langauage) - [Will there be API bindings to integrate with my favorite programming language?](#will-there-be-api-bindings-to-integrate-with-my-favorite-programming-language) - [Licensing](#licensing) - - [If I link my program with Slint GPLv3, does it mean that I have to license my program under the GPLv3, too?](#if-i-link-my-program-with-slint-gplv3-does-it-mean-that-i-have-to-license-my-program-under-the-gplv3-too) - - [My MIT-licensed program links to Slint GPLv3. Can someone fork my program to build and distribute a proprietary program?](#my-mit-licensed-program-links-to-slint-gplv3-can-someone-fork-my-program-to-build-and-distribute-a-proprietary-program) - - [My MIT-licensed program links to Slint GPLv3. How can I convey to someone that they can distribute my program as part of a proprietary licensed program?](#my-mit-licensed-program-links-to-slint-gplv3-how-can-i-convey-to-someone-that-they-can-distribute-my-program-as-part-of-a-proprietary-licensed-program) - - [My MIT-licensed program links to Slint GPLv3. Under what license can I release the binary of my program?](#my-mit-licensed-program-links-to-slint-gplv3-under-what-license-can-i-release-the-binary-of-my-program) - - [What are the different proprietary licensing options?](#what-are-the-different-proprietary-licensing-options) - - [What does perpetual mean?](#what-does-perpetual-mean) - - [What are the different support options?](#what-are-the-different-support-options) - - [Ambassador License](#ambassador-license) - - [Why is the Ambassador license free-of-charge?](#why-is-the-ambassador-license-free-of-charge) - - [When does the Ambassador license run out](#when-does-the-ambassador-license-run-out) - - [For how long do you plan to offer the free-of-charge Ambasssador license?](#for-how-long-do-you-plan-to-offer-the-free-of-charge-ambasssador-license) - - [How can I get the Ambassador license?](#how-can-i-get-the-ambassador-license) - - [Do all contributors to my code have to sign up for the Ambassador license?](#do-all-contributors-to-my-code-have-to-sign-up-for-the-ambassador-license) - - [Distributions](#distributions) - - [Do I need to pay to distribute my application on desktop?](#do-i-need-to-pay-to-distribute-my-application-on-desktop) - - [Do I need to pay to distribute my application on embedded devices?](#do-i-need-to-pay-to-distribute-my-application-on-embedded-devices) - - [How much do I need to pay to distribute my application on embedded devices?](#how-much-do-i-need-to-pay-to-distribute-my-application-on-embedded-devices) - - [What is the minimum distribution quantity that I can purchase?](#what-is-the-minimum-distribution-quantity-that-i-can-purchase) - - [Miscelleneous](#miscelleneous) - - [Is there a discount for independent developers or small businesses?](#is-there-a-discount-for-independent-developers-or-small-businesses) + - [Royalty-free license](#royalty-free-license) + - [Who can use the Royalty-free license?](#who-can-use-the-royalty-free-license) + - [What obligations do I need to fulfil to use the Royalty-free license?](#what-obligations-do-i-need-to-fulfil-to-use-the-royalty-free-license) + - [Are there any limitations with the Royalty-free license?](#are-there-any-limitations-with-the-royalty-free-license) + - [Scenario: What happens if my application is open-source (e.g. under MIT), forked by a different person and then redistributed?](#scenario-what-happens-if-my-application-is-open-source-eg-under-mit-forked-by-a-different-person-and-then-redistributed) + - [How are modifications to Slint itself covered under this licence?](#how-are-modifications-to-slint-itself-covered-under-this-licence) + - [If Slint were to be taken over by a larger company or the current owners were to have a change of heart, can they revoke existing licenses?](#if-slint-were-to-be-taken-over-by-a-larger-company-or-the-current-owners-were-to-have-a-change-of-heart-can-they-revoke-existing-licenses) + - [GPLv3](#gplv3) + - [If I link my program with Slint GPLv3, does it mean that I have to license my program under the GPLv3, too?](#if-i-link-my-program-with-slint-gplv3-does-it-mean-that-i-have-to-license-my-program-under-the-gplv3-too) + - [My MIT-licensed program links to Slint GPLv3. Can someone fork my program to build and distribute a proprietary program?](#my-mit-licensed-program-links-to-slint-gplv3-can-someone-fork-my-program-to-build-and-distribute-a-proprietary-program) + - [My MIT-licensed program links to Slint GPLv3. How can I convey to someone that they can distribute my program as part of a proprietary licensed program?](#my-mit-licensed-program-links-to-slint-gplv3-how-can-i-convey-to-someone-that-they-can-distribute-my-program-as-part-of-a-proprietary-licensed-program) + - [My MIT-licensed program links to Slint GPLv3. Under what license can I release the binary of my program?](#my-mit-licensed-program-links-to-slint-gplv3-under-what-license-can-i-release-the-binary-of-my-program) + - [Scenario: Alice is a software developer, she wants her code to be licensed under MIT. She is developing an application "AliceApp" that links to Slint GPLv3. Alice also wants to allow that Bob, a user of AliceApp, can fork AliceApp into a proprietary application called BobApp](#scenario-alice-is-a-software-developer-she-wants-her-code-to-be-licensed-under-mit-she-is-developing-an-application-aliceapp-that-links-to-slint-gplv3-alice-also-wants-to-allow-that-bob-a-user-of-aliceapp-can-fork-aliceapp-into-a-proprietary-application-called-bobapp) + - [Can Alice use the MIT license header to the source code of AliceApp application?](#can-alice-use-the-mit-license-header-to-the-source-code-of-aliceapp-application) + - [Under what license should she distribute the AliceApp binary?](#under-what-license-should-she-distribute-the-aliceapp-binary) + - [How can Alice make it clear to Bob that he can distribute BobApp under a proprietary license?](#how-can-alice-make-it-clear-to-bob-that-he-can-distribute-bobapp-under-a-proprietary-license) +- [Miscelleneous](#miscelleneous) + - [Do you provide Support?](#do-you-provide-support) ## General -### Where does the name come from? - -The name *Slint* is derived from our design goals: **S**calable, **L**ightweight, -**I**ntuitive, and **N**ative **T**oolkit. +### Why does Slint use a domain specific langauage? -### Why are you creating a new markup language? - -We are creating a markup language which is both editable by humans and machines. -We hope it is possible to pick up and understand, and at the same time strict -enough for our tools to analyze and optimize to provide a smooth interface on -the screen. In our experience, a domain specific, declarative language suits -this purpose best. Strictly typed binding expressions offer a powerful and -robust way for humans to declare relationships between properties, even in -complex user interfaces. +From our long experience of building UI toolkits, we have learnt that a domain +specific, declarative language is best suited to describe UIs. The Slint language +is easy and intuitive to use while being strict enough for our tools to analyze +and optimize to provide high graphics performance. Strictly typed binding +expressions offer a powerful and robust way for humans to declare relationships +between properties, even in complex user interfaces. ### Will there be API bindings to integrate with my favorite programming language? @@ -58,112 +50,79 @@ types of programming languages. ## Licensing -Slint is available under either a [proprietary license](LICENSES/LicenseRef-Slint-commercial.md) -or [GNU GPLv3](LICENSES/GPL-3.0-only.txt) - -### If I link my program with Slint GPLv3, does it mean that I have to license my program under the GPLv3, too? - -No. You can license your program under any license compatible with the GPLv3 such -as [https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses](https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses). -Refer to GPL FAQ [https://www.gnu.org/licenses/gpl-faq.en.html#LinkingWithGPL](https://www.gnu.org/licenses/gpl-faq.en.html#LinkingWithGPL). - -### My MIT-licensed program links to Slint GPLv3. Can someone fork my program to build and distribute a proprietary program? - -Yes, provided the person distributing the proprietary program acquired a Slint proprietary license instead of using Slint under GPLv3, or removed the dependency to Slint altogether. +Slint is available under a [royalty-free license](LICENSES/LicenseRef-Slint-Royalty-free-1.0.md) or [GNU GPLv3](LICENSES/GPL-3.0-only.txt), at your choice. For paid plans, visit our website [https://slint-ui.com](https://slint-ui.com) or contact us at [info@slint-ui.com](mailto:info@slint-ui.com). -### My MIT-licensed program links to Slint GPLv3. How can I convey to someone that they can distribute my program as part of a proprietary licensed program? +### Royalty-free license -You can add a note as part of your license that to distribute a proprietary licensed program, one can acquire a Slint proprietary license or the dependency to Slint should be removed. - -Scenario: +#### Who can use the Royalty-free license? -### My MIT-licensed program links to Slint GPLv3. Under what license can I release the binary of my program? - -While your software modules can remain under the MIT-license, the work as a whole must be licensed under the GPL. -Hence, the binary must be made available under the GPLv3. +This license is suitable for those who develop desktop or web applications and do not want to use open-source components under copyleft licenses. -### Scenario: Alice is a software developer, she wants her code to be licensed under MIT. She is developing an application "AliceApp" that links to Slint GPLv3. Alice also wants to allow that Bob, a user of AliceApp, can fork AliceApp into a proprietary application called BobApp +#### What obligations do I need to fulfil to use the Royalty-free license? -#### Can Alice use the MIT license header to the source code of AliceApp application? +You need to do all of the following: -Yes. Alice can license her copyrighted source code under any license compatible with GPLv3. Refer FAQ [If I link my program with Slint GPLv3, does it mean that I have to license my program under the GPLv3, too?](#if-i-link-my-program-with-slint-gplv3-does-it-mean-that-i-have-to-license-my-program-under-the-gplv3-too) +1. Display the [`AboutSlint`](https://slint-ui.com/snapshots/master/docs/slint/src/builtins/widgets.html#aboutslint) widget in an "About" screen or dialog that is accessible from the top level menu of your application. +2. Display the [Slint attribution badge](https://github.com/slint-ui/slint/tree/master/logo/madewithslint) on a public webpage, where the binaries of your application can be downloaded from, in such a way that it can be easily found by any visitor to that page. +3. You may not remove or alter any license notices (including copyright notices, disclaimers of warranty, or limitations of liability) contained within the source code form of Slint. +4. You allow us to use your application on our website and in advertising materials as a reference and to display your logo and trademark for this purpose. -#### Under what license should she distribute the AliceApp binary? +#### Are there any limitations with the Royalty-free license? -Under GPLv3. While the different software modules can remain under any license compatible with GPLv3, the work as a whole must be licensed under the GPL. Refer FAQ [My MIT-licensed program links to Slint GPLv3. Under what license can I release the binary of my program?](#my-mit-licensed-program-links-to-slint-gplv3-under-what-license-can-i-release-the-binary-of-my-program) +There are 2 limitations: -#### How can Alice make it clear to Bob that he can distribute BobApp under a proprietary license? +1. You are not permitted to distribute or make Slint publicly available alone and without integration into an application. or this purpose you may use the Software under the GNU General Public License, version 3. +2. You are not permitted the use Slint within Embedded Systems. An Embedded System is a computer system designed to perform a specific task within a larger mechanical or electrical system. For the purposes of this license, mobile phones are not considered to be Embedded Systems. + +#### Scenario: What happens if my application is open-source (e.g. under MIT), forked by a different person and then redistributed? -Alice can add a note that Bob can distribute BobApp under a proprietary license if he either acquires a Slint proprietary license or removes the dependency to Slint. +The license does not restrict users on how they license their application. In the above scenario, the user may choose to use MIT-license for their application, which can be forked by a different person and then redistributed. If the forked application also uses Slint, then the person forking the application can also use the Royalty-free license as long as the obligations are fulfilled. Alternatively, the person may use one of the other Slint license options such as commercial or GPLv3. -### What are the different proprietary licensing options? +#### How are modifications to Slint itself covered under this licence? -Our licensing options are available [here](https://slint-ui.com/#offering). +The license does not restrict 'if' and 'how' the modifications to Slint should be distributed. Say for example, Alice uses Slint under this new license to develop application A and modifies Slint in some way. She may choose to release the modifications to Slint under any license of her choice including any of the open source licenses. Alternatively she may decide not to release the modifications. -The terms and conditions of the proprietary license is available [here](LICENSES/LicenseRef-Slint-commercial.md). +#### If Slint were to be taken over by a larger company or the current owners were to have a change of heart, can they revoke existing licenses? -### What does perpetual mean? +The commitment to provide Slint under a Royalty-free license has been included in the [Contributors License Agreement (CLA)](http://cla-assistant.io/slint-ui/slint) and thereby with the larger Slint community. -The perpetual right allows you to use the version(s) of Slint, provided under the -proprietary license, for ever. +### GPLv3 -### What are the different support options? +#### If I link my program with Slint GPLv3, does it mean that I have to license my program under the GPLv3, too? -Standard support and Premium support. +No. You can license your program under any license compatible with the GPLv3 such as [https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses](https://www.gnu.org/licenses/license-list.en.html#GPLCompatibleLicenses). -The terms and conditions of standard support is available [here](https://slint-ui.com/support/slint_support_service_agreement) and premium support is available [here](https://slint-ui.com/support/slint_premium_support_service_agreement). - -### Ambassador license - -#### Why is the Ambassador license free-of-charge? - -The license is provided free-of-charge to achieve the following goals: - -a. accelerate adoption of Slint, -b. allow developers to use Slint under a non-GPL license, -c. create a strong feedback loop to improve Slint. - -#### When does the Ambassador license run out? - -The license grant is [perpetual](#what-does-perpetual-mean), which means that you can use Slint free-of-charge forever. The perpetual nature of the license also implies that even if we need to modify the terms of the license in the future, the modified terms will not apply to already granted licenses. - -#### For how long do you plan to offer the free-of-charge Ambasssador license? - -Forever. However, we may modify the terms of the license in the future based on user feedback and business needs. +Refer to GPL FAQ [https://www.gnu.org/licenses/gpl-faq.en.html#LinkingWithGPL](https://www.gnu.org/licenses/gpl-faq.en.html#LinkingWithGPL). -#### How can I get the Ambassador license? +#### My MIT-licensed program links to Slint GPLv3. Can someone fork my program to build and distribute a proprietary program? -The license is automatically granted on signing the license agreement [here](https://slint-ui.com/ambassador-program.html#application). The authorized signatory could be the code owner, primary maintainer, or in case of an organisation, the relevant person authorized to sign contracts on behalf of the organisation. +Yes, provided the person distributing the proprietary program acquired a Slint proprietary license, such as the Slint Royalty-free license or a paid license, instead of using Slint under GPLv3. The other option would be to remove the dependency to Slint altogether. -#### Do all contributors to my code have to sign up for the Ambassador license? +#### My MIT-licensed program links to Slint GPLv3. How can I convey to someone that they can distribute my program as part of a proprietary licensed program? -No. All contributions to the code is covered under the Ambassador license. Hence, contributors can use Slint under the same license within this scope. +You can add a note as part of your license that to distribute a proprietary licensed program, one can acquire a Slint proprietary license or the dependency to Slint should be removed. -### Distributions +#### My MIT-licensed program links to Slint GPLv3. Under what license can I release the binary of my program? -#### Do I need to pay to distribute my application on desktop? +While your software modules can remain under the MIT-license, the work as a whole must be licensed under the GPL. +Hence, the binary must be made available under the GPLv3. -No. Our proprietary license includes unlimited distribution on desktop. +#### Scenario: Alice is a software developer, she wants her code to be licensed under MIT. She is developing an application "AliceApp" that links to Slint GPLv3. Alice also wants to allow that Bob, a user of AliceApp, can fork AliceApp into a proprietary application called BobApp -#### Do I need to pay to distribute my application on embedded devices? +##### Can Alice use the MIT license header to the source code of AliceApp application? -For Flex and Buyout licenses, additional fees are applicable for distribution on embedded devices. -The Ambassador license includes unlimited distribution on embedded devices. +Yes. Alice can license her copyrighted source code under any license compatible with GPLv3. Refer FAQ [If I link my program with Slint GPLv3, does it mean that I have to license my program under the GPLv3, too?](#if-i-link-my-program-with-slint-gplv3-does-it-mean-that-i-have-to-license-my-program-under-the-gplv3-too) -#### How much do I need to pay to distribute my application on embedded devices? +##### Under what license should she distribute the AliceApp binary? -The fee depends upon the quantity of distribution purchased. The higher the quantity, the lower the per device fee. -As an example, 1000 distributions cost EUR 3500 (per device fee of EUR 3.50) while 5000 distributions cost EUR 15400 (per device fee of EUR 3.08). -Please [contact us](https://slint-ui.com/staging/#contact_us) if you are interested to know more. +Under GPLv3. While the different software modules can remain under any license compatible with GPLv3, the work as a whole must be licensed under the GPL. Refer FAQ [My MIT-licensed program links to Slint GPLv3. Under what license can I release the binary of my program?](#my-mit-licensed-program-links-to-slint-gplv3-under-what-license-can-i-release-the-binary-of-my-program) -#### What is the minimum distribution quantity that I can purchase? +##### How can Alice make it clear to Bob that he can distribute BobApp under a proprietary license? -The minimum quantity is 1. -You can purchase in quantities of 1, 10, 100, 500, 1000, 3000 and 5000. -Please [contact us](https://slint-ui.com/staging/#contact_us) if you are interested in higher volumes. +Alice can add a note that Bob can distribute BobApp under a proprietary license if he either acquires a Slint proprietary license or removes the dependency to Slint. -### Miscelleneous +## Miscelleneous -### Is there a discount for independent developers or small businesses? +### Do you provide Support? -The [Ambassador license](#ambassador-license) is a free-of-charge license suitable for independent developers or small businesses. +Yes, we offer paid support in addition to the community support on [GitHub Discussions](https://github.com/slint-ui/slint/discussions) and on our [Mattermost chat](https://chat.slint-ui.com). Please contact us at [info@slint-ui.com](mailto:info@slint-ui.com) to know more. diff --git a/README.md b/README.md index 7ea917065d9..b784b8054a1 100644 --- a/README.md +++ b/README.md @@ -6,68 +6,47 @@ [![REUSE status](https://api.reuse.software/badge/github.com/slint-ui/slint)](https://api.reuse.software/info/github.com/slint-ui/slint) [![Discussions](https://img.shields.io/github/discussions/slint-ui/slint)](https://github.com/slint-ui/slint/discussions) -Slint is a toolkit to efficiently develop fluid graphical user interfaces for -any display: embedded devices and desktop applications. We support multiple -programming languages, such as Rust, C++, and JavaScript. We invite you -to use Slint and be part of its community. - -## Design Goals - -We use the following design goals as a guide when developing Slint: - -- **Scalable**: Run on any screen connected to a device, from desktop computers - to low end embedded systems. -- **Lightweight**: Fit into a few hundred kilobytes of RAM and require little - processing power. -- **Intuitive**: Both developers and designers should feel productive and enjoy - the design and development process. - The APIs should be consistent and easy to use, no matter the target language. -- **Native**: Slint apps should match the users' expectations of a native - application. Various target platforms such as embedded devices, desktops, - mobile and web should be supported so that both the user and the developer - feel comfortable on their platform of choice. - -## The .slint Markup Language - -Slint comes with a markup language that is specifically designed for user -interfaces. This language is easy to learn, to read and write, and provides -a powerful way to describe graphical elements, their placement, and the flow of -data through the different states. It's a familiar syntax to describe the -hierarchy of elements and property bindings. - -Here's the obligatory "Hello World": - -```slint -export component HelloWorld inherits Window { - width: 400px; - height: 400px; - - Text { - y: parent.width / 2; - x: parent.x + 200px; - text: "Hello, world"; - color: blue; - } -} -``` +Slint is a declarative GUI toolkit to build native user interfaces for desktop +and embedded applications written in Rust, C++, or JavaScript. The name *Slint* +is derived from our design goals: + +- **Scalable**: Slint should support responsive UI design, allow cross-platform + usage across operating systems and processor architectures and support + multiple programming languages. +- **Lightweight**: Slint should require minimal resources, in terms of memory + and processing power, and yet deliver a smooth, smartphone-like user + experience on any device. +- **Intuitive**: Designers and developers should feel productive while enjoying + the GUI design and development process. The design creation tools should be + intuitive to use for the designers. Similarly for the developers, the APIs + should be consistent and easy to use, no matter which programming language + they choose. +- **Native**: GUI built with Slint should match the end users' expectations of a + native application irrespective of the platform - desktop, mobile, web or + embedded system. The UI design should be compiled to machine code and provide + flexibility that only a native application can offer: Access full operating + system APIs, utilize all CPU and GPU cores, connect to any peripheral. + +We invite you to use Slint and be part of its community. ## Current Status -Slint is in active development. The state of the toolkit for each platform is as +Slint is in active development. The state of support for each platform is as follows: -- **Embedded**: *Ready* Slint is already being used in production projects by - customers (running on an Arm processor with Linux). -- **Microcontrollers** (MCU): *Ready*. Slint apps can run on MCUs with less than - 300K of RAM. +- **Embedded**: *Ready* Slint runtime requires less than 300KiB of RAM. Slint is + being used by customers in production projects on embedded devices running + embedded Linux and Windows. Slint can run on different processor architectures + such as ARM Cortex M, ESP32, STM32 from the MCU category to ARM Cortex A, + Intel x86 from the MPU category. - **Desktop**: *In Progress*. While Slint is a good fit on Windows, Linux and Mac, we are working on improving the platform support in subsequent releases. -- **Mobile** (Android/iOS): *Todo*. We haven't started supporting mobile - platforms yet, but it is our intention to do so in the near future. - **Web**: *In Progress*. Slint apps can be compiled to WebAssembly and can run in a web browser. As there are many other web frameworks, the web platform is not one of our primary target platforms. The web support is currently limited to demo purposes. +- **Mobile** (Android/iOS): *Todo*. We haven't started supporting mobile + platforms yet, but it is our intention to do so in the near future. ### Accessibility @@ -77,52 +56,68 @@ readers is in place, but currently requires the Qt backend. We're aware that more work is needed to get best-of-class support for users with special needs. -### Stay up to date +## Demos -Follow [@slint-ui](https://twitter.com/slint_ui) on Twitter or keep an eye out -for our [🥠 Weekly Status Updates](https://slint-ui.com/thisweek/). +### Embedded -## Documentation +| RaspberryPi | STM32 | RP2040 | +| ----------------------------------- | ------------------------------ | ------------------------------ | +| [Video of Slint on RaspberryPi][#1] | [Video of Slint on STM32][#2] | [Video of Slint on RP2040][#3] | -For more details, check out the [Slint Language Documentation](https://slint-ui.com/docs/slint). +### Desktop -The [examples](examples) folder contains examples and demos, showing how to -use the Slint markup language and how to interact with a Slint user interface -from supported programming languages. +| Windows | macOS | Linux | +| ------------------------------------------- | ----------------------------------------- | ----------------------------------------- | +| ![Screenshot of the Gallery on Windows][#4] | ![Screenshot of the Gallery on macOS][#5] | ![Screenshot of the Gallery on Linux][#6] | -The `docs` folder contains a lot more information, including -[build instructions](docs/building.md), and -[internal developer docs](docs/development.md). +### Web using WebAssembly -Refer to the README of each language directory in the `api` folder: +| Printer Demo | Slide Puzzle | Energy Monitor | Widget Gallery | +| ------------------------------------------ | -------------------------------------------- | ---------------------------------------------------- | --------------------------------------------- | +| [![Screenshot of the Printer Demo][#7]][#8] | [![Screenshot of the Slide Puzzle][#9]][#10] | [![Screenshot of the Energy Monitor Demo][#11]][#12] | [![Screenshot of the Gallery Demo][#13]][#14] | -- [C++](api/cpp) ([Documentation](https://slint-ui.com/docs/cpp) | [Tutorial](https://slint-ui.com/docs/tutorial/cpp) | [Getting Started Template](https://github.com/slint-ui/slint-cpp-template)) -- [Rust](api/rs/slint) [![Crates.io](https://img.shields.io/crates/v/slint)](https://crates.io/crates/slint) ([Documentation](https://slint-ui.com/docs/rust/slint/) | [Tutorial](https://slint-ui.com/docs/tutorial/rust) | [Tutorial Video](https://youtu.be/WBcv4V-whHk) | [Getting Started Template](https://github.com/slint-ui/slint-rust-template)) -- [JavaScript/NodeJS (Beta)](api/node) [![npm](https://img.shields.io/npm/v/slint-ui)](https://www.npmjs.com/package/slint-ui) ([Documentation](https://slint-ui.com/docs/node) | [Tutorial](https://slint-ui.com/docs/tutorial/node) | [Getting Started Template](https://github.com/slint-ui/slint-nodejs-template)) +## Get Started -## Demos +### Hello World -### Embedded +The UI is defined in a Domain Specific Language that is declarative, easy to use, +intuitive, and provides a powerful way to describe graphical elements, their +placement, their hierarchy, property bindings, and the flow of data through the +different states. -[Video of Slint on RaspberryPi](https://www.youtube.com/watch?v=_BDbNHrjK7g) +Here's the obligatory "Hello World": -### MCU +```slint +export component HelloWorld inherits Window { + width: 400px; + height: 400px; -| STM32 | RP2040 | -| ---------------------------------------------------------------------- | ----------------------------------------------------------------------- | -| [Video of Slint on STM32](https://www.youtube.com/watch?v=NNNOJJsOAis) | [Video of Slint on RP2040](https://www.youtube.com/watch?v=dkBwNocItGs) | + Text { + y: parent.width / 2; + x: parent.x + 200px; + text: "Hello, world"; + color: blue; + } +} +``` + +### Documentation + +For more details, check out the [Slint Language Documentation](https://slint-ui.com/docs/slint). -### WebAssembly +The [examples](examples) folder contains examples and demos, showing how to +use the Slint markup language and how to interact with a Slint user interface +from supported programming languages. -| Printer Demo | Slide Puzzle | Energy Monitor | Widget Gallery | -| ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | -| [![Screenshot of the Printer Demo](https://slint-ui.com/resources/printerdemo_screenshot.png "Printer Demo")](https://slint-ui.com/demos/printerdemo/) | [![Screenshot of the Slide Puzzle](https://slint-ui.com/resources/puzzle_screenshot.png "Slide Puzzle")](https://slint-ui.com/demos/slide_puzzle/) | [![Screenshot of the Energy Monitor Demo](https://slint-ui.com/resources/energy-monitor-screenshot.png "Energy Monitor Demo")](https://slint-ui.com/demos/energy-monitor/) | [![Screenshot of the Gallery Demo](https://slint-ui.com/resources/gallery_screenshot.png "Gallery Demo")](https://slint-ui.com/demos/gallery/) | +The `docs` folder contains a lot more information, including +[build instructions](docs/building.md), and +[internal developer docs](docs/development.md). -### Desktop Native Widgets +Refer to the README of each language directory in the `api` folder: -| Windows | macOS | Linux | -| ------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | -| ![Screenshot of the Gallery on Windows](https://slint-ui.com/resources/gallery_win_screenshot.png "Gallery") | ![Screenshot of the Gallery on macOS](https://slint-ui.com/resources/gallery_mac_screenshot.png "Gallery") | ![Screenshot of the Gallery on Linux](https://slint-ui.com/resources/gallery_linux_screenshot.png "Gallery") | +- [C++](api/cpp) ([Documentation][#15] | [Tutorial][#16] | [Getting Started Template][#17]) +- [Rust](api/rs/slint) [![Crates.io][def]][#19] ([Documentation][#20] | [Tutorial][#21] | [Tutorial Video][#22] | [Getting Started Template][#23]) +- [JavaScript/NodeJS (Beta)](api/node) [![npm][#24]][#25] ([Documentation][#26] | [Tutorial][#27] | [Getting Started Template][#28]) ## Architecture @@ -221,8 +216,7 @@ We welcome your contributions: in the form of code, bug reports or feedback. - If you see an [RFC tag](https://github.com/slint-ui/slint/labels/rfc) on an issue, feel free to chime in. -- For contribution guidelines see [CONTRIBUTING.md](CONTRIBUTING.md). The - dual-licensing of Slint requires the contributor to accept our CLA. +- For contribution guidelines see [CONTRIBUTING.md](CONTRIBUTING.md). ## Frequently Asked Questions @@ -237,7 +231,14 @@ way to UI/UX designers. We believe that software grows organically and keeping it open source is the best way to sustain that growth. Our team members are located remotely in Germany. -## Contact us +### Stay up to date + +- Follow [@slint-ui](https://twitter.com/slint_ui) on Twitter +- Follow [@slint@fosstodon.org](https://mastodon.social/@slint@fosstodon.org) on Mastodon +- Follow [@slint-ui](https://www.linkedin.com/company/slint-ui/) on LinkedIn +- Keep an eye out for our [🥠 Weekly Status Updates](https://slint-ui.com/thisweek/). + +### Contact us Feel free to join [Github discussions](https://github.com/slint-ui/slint/discussions) for general chat or questions. Use [Github issues](https://github.com/slint-ui/slint/issues) @@ -246,5 +247,33 @@ to report public suggestions or bugs. We chat in [our Mattermost instance](https://chat.slint-ui.com) where you are welcome to listen in or ask your questions. -You can of course also tweet at [@slint-ui](https://twitter.com/slint_ui) or -contact us privately via email to [info@slint-ui.com](mailto://info@slint-ui.com). +You can of course also contact us privately via email to [info@slint-ui.com](mailto://info@slint-ui.com). + +[#1]: https://www.youtube.com/watch?v=_BDbNHrjK7g +[#2]: https://www.youtube.com/watch?v=NNNOJJsOAis +[#3]: https://www.youtube.com/watch?v=dkBwNocItGs +[#4]: https://slint-ui.com/resources/gallery_win_screenshot.png "Gallery" +[#5]: https://slint-ui.com/resources/gallery_mac_screenshot.png "Gallery" +[#6]: https://slint-ui.com/resources/gallery_linux_screenshot.png "Gallery" +[#7]: https://slint-ui.com/resources/printerdemo_screenshot.png "Printer Demo" +[#8]: https://slint-ui.com/demos/printerdemo/ +[#9]: https://slint-ui.com/resources/puzzle_screenshot.png "Slide Puzzle" +[#10]: https://slint-ui.com/demos/slide_puzzle/ +[#11]: https://slint-ui.com/resources/energy-monitor-screenshot.png "Energy Monitor Demo" +[#12]: https://slint-ui.com/demos/energy-monitor/ +[#13]: https://slint-ui.com/resources/gallery_screenshot.png "Gallery Demo" +[#14]: https://slint-ui.com/demos/gallery/ +[#15]: https://slint-ui.com/docs/cpp +[#16]: https://slint-ui.com/docs/tutorial/cpp +[#17]: https://github.com/slint-ui/slint-cpp-template +[def]: https://img.shields.io/crates/v/slint +[#19]: https://crates.io/crates/slint +[#20]: https://slint-ui.com/docs/rust/slint/ +[#21]: https://slint-ui.com/docs/tutorial/rust +[#22]: https://youtu.be/WBcv4V-whHk +[#23]: https://github.com/slint-ui/slint-rust-template +[#24]: https://img.shields.io/npm/v/slint-ui +[#25]: https://www.npmjs.com/package/slint-ui +[#26]: https://slint-ui.com/docs/node +[#27]: https://slint-ui.com/docs/tutorial/node +[#28]: https://github.com/slint-ui/slint-nodejs-template