Just over a year ago through discussions with key members of the F# community we noticed a common theme in the technologies and techniques used to best develop web applications. As a result of these discussions, we worked together to publish a series of posts on this blog explaining how we believe web development in F# should be. We discussed:
- Using technologies such as Giraffe to build backend web services in a functional-first style
- Using Azure to deploy these services into the cloud quickly
- How to use Fable to develop front end web applications using F#
- How Elmish allows us to develop these front end applications with idiomatic F#.
Delivering the SAFE stack
Alongside this, we announced the launch of the SAFE Stack - an F#-first stack designed to make it easy for people who knew F# to adopt it within their applications and embrace functional programming concepts across all elements of their web applications without having to compromise on the benefits that F# brings. In order to help people adoption, we've worked hard with the community on a number of different learning elements that ease adoption:
The SAFE website
Alongside the launch of the stack itself, we launched the SAFE website (safe-stack.github.io). This site collates all of the core features of the SAFE stack together with documentation on how to get up and running with the SAFE stack and implement features which cut across all components in the web stack, as well as links to key technical resources.
The SAFE template
Thanks to a large community effort we now have a dotnet core template in place for the SAFE template to rapidly scaffold a new SAFE application. This includes a rich set of options to cater for various needs, including pluggable back-end servers and a variety of client/server integration technologies.
There are a growing number of sample SAFE applications designed to show how to structure larger real world applications. For example, the SAFE bookstore includes many of the components which will be required in a production application such as login tokens, whilst the excellent ConfPlanner tool shows the use of event sourcing and web sockets.
For those who want to see something smaller in a more structured learning mode, we also created the SAFE Dojo project, which guides developers through adding features to a SAFE app.
Building the SAFE userbase
Over the past year it's become apparent that many people agree with us in our way of using F# for building web applications. We've spoken to a wide spectrum of developers in the F# community who are keen to embrace the SAFE stack within their applications. We recently hit > 10k downloads of the SAFE Stack template, an incredible number to reach in just over a year, and we've also seen a steady growth of new followers on our Twitter account (@SAFE_Stack). However, even more importantly, we see a large number of people excited by developing applications on the SAFE Stack.
Shared validation for server/client, localization support, server errors applied on client directly on proper fields, Thoth.Json serializer for Giraffe,... Love it more and more!@safe_stack is on my technology radar for sure!
— Roman Provazník (@RProvaznik) November 15, 2018
At #FableConf/@RemmidemmiConf we were celebrating one year anniversary of @safe_stack. One amazing year with so many good things happening in the OSS projects and yet another year within a fantastic community. Thank you! #fsharp
— Steffen Forkmann (@sforkmann) November 15, 2018
— Dag Brattli (@dbrattli) November 14, 2018
— Joerg Beekmann (@jbeeko) August 14, 2018
Huge congrats and thanks to the people working on this. @FableCompiler and the SAFE stack are the most exciting things happening in the #fsharp world right now, and there is a LOT of effort happening behind the scenes to make this stuff happen. Y'all get beers on me soon 🙂 https://t.co/DAAiGYwljk
— Stachu Korick (@StachuDotNet) August 3, 2018
Developing a webapp with F# and the safe stack is fun 🙂
— Johannes Bäurle (@JoBaeurle) July 24, 2018
We're thankful to the community who have given talks at conferences around the world on the SAFE stack. We've seen talks in America, Europe and the rest of the world on all aspects of the SAFE stack from the front end through to the back end. We've even recently seen a conference dedicated to the SAFE Stack in the form of RemmiDemmi in Berlin.
A SAFE bet for applications
As well as making it easy for individuals to get on board with F# for web development, we recognise that it's important for organisations to feel comfortable adopting a new technology stack. This can mean different things to different teams; in some cases it means more documentation, whilst in others this means knowing that there are professional consultancies who are able to provide support and coaching as you develop SAFE applications.
Compositional IT are [dedicated] to helping develop the SAFE Stack(https://compositional-it.com/what-services-SAFE.html). To ensure that people are as effective as possible with the stack, we've also put together a 2 day training course which exposes developers to all the components of the stack by developing a complete application. We also believe that learning doesn't finish at the end of a training course and to ensure developers are as effective as they can be, we've also put together a coaching service. This mentoring service guides you through writing real world F# code using the SAFE stack. More information on both of these services can be found on our training and coaching page.
The SAFE Stack launched with 2 starting commercial partners; we at Compositional IT and our good friends at Lambda Factory. We both offer a range of services which have been adopted by clients including coaching, training and even complete application development. We were also delighted to welcome Fuzzy Cloud as a third commercial partner offering support services earlier this year.
We're still not done with SAFE! There's a lot we want to do with it to ensure it continues to grow, as well as to make it even easier for developers to get up to speed with F# as a language for web application development.
When we started SAFE we had quite a bit of room for choice, we encouraged you to use your favourite web server of choice or pick AWS or Azure. Whilst we still think there are benefits to this, we also appreciate that there are people who want a "known-good" SAFE configuration. To that end, we at Compositional IT will continue to focus on what we consider the "core" SAFE offering of Saturn, Azure Fable and Elmish, whilst still allowing you to pick other components if required.
Moving to a 1.0
The SAFE team have worked hard to stablise the stack - given the rate at which the F# community have been moving forwards, this has been a challenge, but thanks to some great work from Tomasz Heimowski, we now have continuous builds across all permutations of the stack as well as stable lock files bundled with the template. Not only does this increase confidence in the stack, but greatly reduces the startup time from clean.
Keeping pace with innovations
We've seen Saturn near a 1.0 release, whilst Fable has seen a large update in the form of a v2.0 release. The SAFE Stack will continue to do the hard work of keeping up-to-date with these components, ensuring that they work well together, so you don't have to.
One area we know that people would like to see made easier is to implement in-place updates of SAFE Stack projects once they've been created, and this is something we're looking at implementing in the future.
Lowering the barrier to entry
We'll also continue to build out the SAFE documentation site, adding in new sections to advise on the best way to develop full stack web applications in F# and enabling new technologies as they mature, such as the excellent Fable.Reaction. We also want to continue to make it easier to develop applications when using the SAFE stack by improving the debugging experience when using different text editors.
Your feedback is crucial here, so please feel free to create issues on the SAFE Documentation repository! We'd love to see more members of the F# community contributing to the SAFE stack, whether it's advancements in the template, the surrounding ecosystem or even writing documentation.
At Compositional IT, we're really excited about what we've seen with the SAFE stack over the past 12 months and we're even more excited to see what happens over the next year. We'll continue contributing back to the F# community in the way of documentation, templates and samples.
And for those that need a helping hand, we'll continue to support SAFE by offering coaching and training courses to those who need expert guidance on getting the best out of SAFE, technology accelerators to those who want to quickly remove the risk of a new project and software development to those who want to outsource their SAFE application development.
Here's to 2019!