@@ -2,45 +2,54 @@ Why another build system?
22=========================
33
44There are a lot of build systems out there with existing communities who accumulated a
5- lot of experience over time. So why go through the hassle of creating another build
6- system?
5+ lot of experience over time. So why bother creating another build system?
76
87pytask is created having a particular audience in mind. Many researchers are not
9- computer scientists first, but acquired some programming skills throughout their
10- careers. This means a build system must be extremely user-friendly or provide a `steep
11- learning curve <https://english.stackexchange.com/a/6226> `_, because it is only a tool.
12- Since pytask resembles pytest in some ways, users have an easier time switching to
13- pytask and feel more comfortable .
8+ computer scientists first. Instead, they acquired some programming skills throughout
9+ their careers. Thus, a build system must be extremely user-friendly and provide a `steep
10+ learning curve <https://english.stackexchange.com/a/6226> `_. Since pytask resembles
11+ pytest in many ways, users have an easy time switching to pytask and feel more
12+ comfortable and empowered .
1413
15- The second reason is that pytest seems to provide the ideal architecture for a build
16- system. Its plugin-based design allows for customization at every level. A build system
17- is a tool which can be deployed in many different environments whose requirements are
18- not foreseeable by the developer. If it is easy for users / developers to write plugins
19- which extend the functionality of pytask it is more valuable. If there is any question
20- whether pytest's architecture is really suited for this, one should look at the success
21- of pytest, its wide-spread adoption, and its over 800 plugins.
14+ pytask inherits many of pytest's best ideas. The most useful one is probably the debug
15+ mode which enables users to jump right into the code where the error happened. It
16+ shortens feedback loops, increases productivity, and facilitates error detection.
17+
18+ pytest provides the ideal architecture for a build system. Its plugin-based design
19+ allows for customization at every level. A build system is a tool which can be deployed
20+ in many different contexts whose requirements are not foreseeable by core developers.
21+ Thus, it is important to enable users and developers to adjust pytask to their needs.
22+ pytest with its 800+ plugins is a huge success story in this regard. In turn, pytask may
23+ attract many people from different backgrounds who contribute back to the main
24+ application and help the broader community.
2225
2326
2427Alternatives
2528------------
2629
27- Here is a list of other build systems and their advantages and disadvantages compared to
28- pytask. The list helps to define pytask's niche and to collect new ideas to improve
29- pytask.
30+ There are some alternatives to pytask which are listed below. The short descriptions
31+ don't do them justice and you should check them out to see which build system is best
32+ for you.
33+
34+ Feel free to contribute to this list and add points which made you chose some build
35+ system over pytask. The list also serves as an inspiration for pytask to adopt features
36+ present in other build systems.
3037
3138
3239`snakemake <https://github.com/snakemake/snakemake >`_
3340~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3441
3542Pros
3643
37- - Mature library.
38- - Is the build system for some research projects .
44+ - Very mature library and probably the most adapted library in the realm of scientific
45+ workflow software .
3946- Can scale to clusters and use Docker images.
4047- Supports Python and R.
48+ - Automatic test case generation.
4149
4250Cons
4351
52+ - No debug mode.
4453- Need to learn snakemake's syntax which is a mixture of Make and Python.
4554- Seems to have no plugin system.
4655
5564
5665Cons
5766
58- - Focus on compiling binaries.
67+ - Focus on compiling binaries, not research projects .
5968- Bus factor of 1.
6069
6170
@@ -74,7 +83,7 @@ Derivatives:
7483
7584Cons
7685
77- - written in Go.
86+ - Written in Go.
7887
7988
8089`Scons <https://github.com/SCons/scons >`_
99108Cons
100109
101110- Development is paused.
111+ - Designed for compiling software.
102112- No plugin system, but extensible interfaces.
0 commit comments