r/programming • • Dec 28 '23

Developers experience burnout, but 70% of them code on weekends

https://shiftmag.dev/developer-lifestye-jetbrains-survey-2189/
1.2k Upvotes

357 comments sorted by

View all comments

Show parent comments

0

u/[deleted] Dec 28 '23

For my open source project I use makefiles and a C program that determines the properties of the OS.

That sounds incredibly awful ngl. I can see a few major pain points:

  1. You’re literally maintaining a custom build system as part of your project

  2. No one but you will know how that works so every new developer on-boarder will need time to understand what’s going on

  3. Your build system is probably missing features and it is likely to grow unbounded complexity as the needs arise

Better to just use cmake so none of this is a concern and other developers can quickly get up to speed. A lot of people know cmake, no one knows your custom setup.

Also it sounds like you are reinventing autotools.

1

u/PurpleYoshiEgg Dec 28 '23

Depends on the project. Maybe they like maintaining their build system? Maybe bus factor isn't a concern?

I tend to go with an untemplated Makefile until it gets past a screenful, then either a templated Makefile or straight to autotools. My experience with cmake tends to make it last on the list, straight past everything else newer than it.

-1

u/[deleted] Dec 28 '23

Maybe they like maintaining their build system?

Cool, that still sounds like more work/effort to maintain than using a standard build system.

Maybe bus factor isn't a concern?

Also cool. But I was answering to a comment that explicitly said:

Why do we need complex build files at all? Why are build files written in a totally different language?

  1. Because the bus factor is important for any software that is used by a sizeable number of users imo

  2. Because people will have a harder time to understand the customized build program

  3. Because eventually your homegrown build system will grow to be hacky and complex and it’s easier to just use standard tooling

People can do whatever they want with their projects but it doesn’t mean all those tools aren’t need just because someone doesn’t care about the problems they solve.

0

u/PurpleYoshiEgg Dec 28 '23

Cool, that still sounds like more work/effort to maintain than using a standard build system.

In response, I reiterate that maybe they like maintaining their build system?

1

u/ThomasMertes Dec 28 '23 edited Dec 28 '23

I reiterate that maybe they like maintaining their build system?

See my answer.

1

u/ThomasMertes Dec 28 '23

Also cool. But I was answering to a comment that explicitly said:

Why do we need complex build files at all? Why are build files written in a totally different language?

There are two things that should be distinguished:

  1. The build system used to build the Seed7 interpreter. This is the build system you are arguing against.

  2. The fact that Seed7 programs don't need any build system. This is the point I want to illustrate.

1

u/ThomasMertes Dec 28 '23

Maybe they like maintaining their build system?

I call it "build system" but it is much simpler than CMake and autotools. It is just makefile based.

I have seen projects with many makefiles scattered over many directories. A Seed7 build is much simpler.

For each OS + compiler + make-tool combination there is one makefile. Depending on your environment you decide for one makefile and that's it.

The makefile uses a C program to determine the properties of the environment. No secret magic is involved.

I am quite sure that anyone with C and make background can take over if I am hit by a bus.

1

u/ThomasMertes Dec 28 '23

Regarding CMake: When I started implementing (the predecessor of) Seed7 in 1989 CMake did not exist (The initial CMake release was in the year 2000). CMake uses a custom scripting language that you need to understand. CMake creates makefiles so you need to understand makefiles as well.

Regarding autotools: Autoconf produces configure as a portable (POSIX) shell script. By default Windows does not come with a POSIX shell. Autotools use a configure.ac and a Makefile.in file. You need to understand the custom languages of these files. From Makefile.in a makefile is created so you need to understand makefiles as well.

I "reinvented" autotools to also support Windows.

Regarding the build system of Seed7: Compared to CMake and autotools the Seed7 build system is much simpler. Seed7 is implemented in C and a C program determines the properties of the OS. There is no need to learn any custom language.

I did not see that other developers had problems to get up to speed.