Skip to content
Aron Homberg edited this page Dec 10, 2019 · 1 revision

The Big Picture

Our Motivation

SpringType aims to be the web development framework with the most elegant API's and the greatest developer experience while still meeting high performance requirements.

From 50 years of experience (combined) we learned that all systems of high complexity fail in major aspects. The more a system grows in complexity...

Total cost of Ownership: ...the more time you have to invest.

Developer experience: ...the less motivated your team is.

Performance: ...the more code is written on top of a bad architecture.

Reliability: ...the more (and harder to fix) bugs will be implemented.

Security: ...the less it can be truly hardened.

That's why we invented SpringType. We're frustrated by today's complex framework API's and implementations. None of the popular frameworks are fitting into our vision of how software development should look like.

We've read the code of all popular web development frameworks. Our initial motivation was to learn. But unfortunately we saw so much code that didn't match our standards that we came to the conclusion that there is a need and potential for a different solution.

As a result, we started to re-think many concepts in web development and investigated modern core technologies like Web Components and modern ECMAScript standard features.

We wished for a framework that provides us with API's that allow us to easily implement features that we need in real-world applications -- but also allows us to do that with an elegant architecture that doesn't stand between our architecture ideal and a real-world projects reality.

SpringType comes with an architecture and implementation that is itself easy to understand, structured in small pieces of code and is, as such, very modular and easy to test.

The overall code size is small and its runtime performance is on par or even better than React, Angular and Vue.js.

We believe that the SpringType APIs are very elegant, but it's on you to judge.

Only code that matches our high standards for elegance, readability, testability, runtime performance and security passes our peer-reviews.

Philosophy of Innovation and Stability

SpringType should provide you with the most elegant architecture and algorithms of the time. But to meet this requirement, we need to revise our ideas and implementations quite frequently. Sometimes, radical changes must be made to be able to improve.

On the other hand, we want to provide you with consistent API's you can truly rely on. Nothing is as frustrating as a minor version upgrade to break all tests.

Our compromise is:

Alpha releases You must expect all API's to change completely.

Beta releases Are accumulated alpha releases, so you must expect all API's to change completely.

Stable releases: Minor and patch level We won't change any existing API in any minor or patch stable release. We might add new API's to add new features and fix bugs, but any change will be regression tested and changes in runtime behaviour will be announced boldly.

Stable releases: Major We'll do anything to prevent the need to release a new major version. Our architecture is rock-solid and only if it renders out-dated over time we'll decide to develop a whole new architecture. This likely to happen, when core technologies change to a major degree (DOM standards, Web Component standards, ECMAScript standards).

Philosophy of Documentation

An easy to follow documentation with plenty of copy and paste examples is important for a stellar developer experience. Thus, we also work on implementing docuduck - our tool to generate a beautiful documentation website with developer guides, interactive examples and API docs.

On top of that, the README.md files in each src/* sub-module tell you more about the architecture and why we decided to implement it like that.

Philosophy of Tests

A good unit and end-2-end test coverage is important for us. However, we're focusing on architecture and features at the moment.

Once we've got the most important features implemented, we will try to reach at least 70% test coverage in unit tests and have every e2e test project been tested with TestCafe end-2-end tests.

For the stable version release, 90% test coverage should be the bare minimum.

More on Developer Experience

  • st-devtools provides you with a Google Chrome browser developer extension to work with SpringType for web apps
  • st-create scaffolds/generates SpringType projects and components for you
  • st-start builds your projects and provides a SPA web development server