# F# Make - What is FAKE?

This a general discussion about FAKE, here you can learn about the FAKE 5 upgrade or see how to contribute

"FAKE - F# Make" is a cross platform build automation system. Due to its integration in F#, all benefits of the .NET Framework and functional programming can be used, including the extensive class library, powerful debuggers and integrated development environments like Visual Studio or MonoDevelop, which provide syntax highlighting and code completion.

The new DSL was designed to be succinct, typed, declarative, extensible and easy to use.

## Why FAKE?

The industry movement towards "DevOps" and "infrastructure as code" leads to the fact that reproducible builds and automation becomes more and more important for basically every project. Question is: Why do we build our automations in "old" and error-prone scripting languages like bash, cmd or powershell instead of a full featured language with IDE support, static typing and compile-time errors? We believe there are different answers to that:

• The build/release process starts very simple, often with a single command. Setup a C# project or installing dependencies feels like overkill
• People use/depend on external systems and deeply integrate into those.
• Lack of awareness of other options

FAKE addresses the problem in the following ways:

• It builds on top of a fully featured statically typed and productive language (F#) with several IDE options.
• It lowers the entry point by working on top of script files. No project file or dependencies besides the fake runner.
• Remove dependencies from the CI/CD system while providing full integration. Make features available locally. With FAKE you can choose and switch between multiple system easily while having almost native integrations.
• Provide modules for the most commonly used tasks.
• Make it easy to start external processes through various APIs.

## When should I use FAKE

Use FAKE in the following ways:

• Remove/reduce dependencies on your CI/CD system
• Make automations reproducable and testable
• Replace existing Shell-Scripts