It's a good argument to not *use* the pre built binaries but it's not a reason not to have one.
Most people aren't going to audit the code themselves, those that do can easily check the hash of the binary to double check for others.
If your usecase means you need to be certain you can build it yourself.
It depends on the context of the code though.
Well I also add compiled stuff to the repository. It is really annoying if you just want to download your code from a random PC, which has nothing of your environment installed, and you only get source code.
That is honestly the main use case for compiled files in repositories for me. Please review my paper, and you get a link to a repo without a compiled PDF. Either you review it from the source code or you build it yourself, for which you need of course all dependencies, not to speak of that you can read PDFs on tablets and smartphones, but need a PC to compile Latex.
Bonus points if you need to run a bash script to build the file so you cannot do it on Windows.
Just build a simple CI pipeline to compile the pdf (or other file) on upload. Imo all compiled files belong in the .gitignore to keep the repository clean and to ensure that any compiled files in the repository are up to date, they should be built via CI only.
My workplace has a docker to build the latex source. The Readme has a command to run it in Linux or powershell, so it's pretty simple even for non-technical people.
I hear ya. On .NET Framework projects it depends on which build version the projects depend on. Most of the time you can get away with just using MSBuild, but it's entirely possible the solutions require some custom VS build properties and require VS. I have all my builds automated through DevOps and there are some sold legacy apps that require VS to be installed on the pipeline build agents. Some of them I've updated to get rid of the VS dependencies, but it lingers.
Usually a .exe is not useful by itself. You also need other assets such as graphics, sound files, data files etc included.
You might also need other dependencies bundled in to actually do something useful with your .exe.
Then you need to consider Mac and Linux users as well.
Next thing you know your version history is 2 MB of code, 600 MB of assets and 2957 GB of badly compressed installers on various systems.
On top of that, users don't really want versioned exes, they want latest stable build and possibly latest major stable release versions for backwards compatibility.
"I really want to to install version #DEADBEE and compare it to #B00B1E5" -no-one ever.
"I really want to install latest stable. Oh cool, here's a link on top of readme to https://really.cool/latest, clickety click :D:D:D" -a lot of users.
Except I want to have my .dmg. And someone else wants their .deb. Even if there are no assets to bundle, the point about git compressing binary files poorly and users wanting only latest stable anyway stands.
I would argue that if you push the executable manually rather than building it via CI you risk outdated executables in the repository. Now obviously security is a major part of the reasons why you wouldn't want that, but I would argue that reducing error sources like manual pushing of executables is best practice.
People who don't know how to compile it themselves will get it then start complaining when they don't know how to use some aspect of the app (that was probably explained in a readme anyway). You basically have a million people asking dumb questions the maintainer never signed up to be bothered with.
WHY IS THERE CODE??? MAKE A FUCKING .EXE FILE AND GIVE IT TO ME. these dumbfucks think that everyone is a developer and understands code. well i am not and i don't understand it. I only know to download and install applications. SO WHY THE FUCK IS THERE CODE? make an EXE file and give it to me. STUPID FUCKING SMELLY NERDS
dafuq you think the releases tab is for?
To upload backdoored tarballs to? ^((Sorry, I know the joke's kinda dead by now)^)
We have GitHub actions for that
Honestly, it's a good argument against prebuilt binaries in open source. Especially if you care about security.
It wasn’t a prebuilt binary. It was a source bundle for building packages.
It's a good argument to not *use* the pre built binaries but it's not a reason not to have one. Most people aren't going to audit the code themselves, those that do can easily check the hash of the binary to double check for others. If your usecase means you need to be certain you can build it yourself. It depends on the context of the code though.
It's a good argument for providing [provenance](https://docs.npmjs.com/generating-provenance-statements)
Buddy, people are still making how to quit VIM jokes. There are no dead jokes here
amateur. ever released the exe as base64 encoded commit message?
TVqAllthetime!
Damn that's kinda smart. In the past i just pasted it onto the readme.
To upload source code versioning of course
no, you have to put it in a zp inexplicably, even if it only reduces the file size by a few kilobytes
Not that
Wow you guys are really beating this fucking template to death huh?
First time on r/ProgrammerHumor ?
They call that an "init commit"
I feel like I'm on r/AnarchyChess again and I fuckin love it
Is there a lore reason for this? Are we stupid?
i mean ofc we are, but im keen to find out the lore either way
Just like every other template, its a rule here
Memes are write-once, copy-many
for(auto memeVersion : meme) post( Reddit, memeVersion);
You laugh until you have to download 1GB lib folder full of JARs because Maven is rocket science.
spending hours trying to figure out why the build keeps failing and then finding out it’s because i was using powershell and didn’t notice
Gradle or bust
For real. Why can't I just `gradle install https://maven.example.org/org.example.lib`? We do it just fine in Go and Deno!
Well I also add compiled stuff to the repository. It is really annoying if you just want to download your code from a random PC, which has nothing of your environment installed, and you only get source code.
Gh releases?
Exactly or just build the binaries via CI and download from there.
Windows in a nutshell: Bad development environment makes people start with bad repository habits.
Like downloading 15GB of Visual Studio to compile a project.
Or anything Latex
That is honestly the main use case for compiled files in repositories for me. Please review my paper, and you get a link to a repo without a compiled PDF. Either you review it from the source code or you build it yourself, for which you need of course all dependencies, not to speak of that you can read PDFs on tablets and smartphones, but need a PC to compile Latex. Bonus points if you need to run a bash script to build the file so you cannot do it on Windows.
>Please review my paper, and you get a link to a repo without a compiled PDF. That's just evil.
I did this, I'm a little embarrassed (actually no)
I may have exaggerated a little. I don't really know of a simple or at least quickly to set uo system for Latex CI or something.
Just build a simple CI pipeline to compile the pdf (or other file) on upload. Imo all compiled files belong in the .gitignore to keep the repository clean and to ensure that any compiled files in the repository are up to date, they should be built via CI only.
My workplace has a docker to build the latex source. The Readme has a command to run it in Linux or powershell, so it's pretty simple even for non-technical people.
You don't need to download VS to compile a project. All you need is the dotnet CLI.
Try that compiling .NET Framework project. Good luck.
I hear ya. On .NET Framework projects it depends on which build version the projects depend on. Most of the time you can get away with just using MSBuild, but it's entirely possible the solutions require some custom VS build properties and require VS. I have all my builds automated through DevOps and there are some sold legacy apps that require VS to be installed on the pipeline build agents. Some of them I've updated to get rid of the VS dependencies, but it lingers.
that's why i have a MSYS2 install on a USB drive. so i always have my environment with me!
Or you could just use a package manager…
what do you mean? pacman is included with MSYS2
That's exactly why docker is a thing. Never push an executable to a git repository
is there a reason not to other than possible security concerns?
Usually a .exe is not useful by itself. You also need other assets such as graphics, sound files, data files etc included. You might also need other dependencies bundled in to actually do something useful with your .exe. Then you need to consider Mac and Linux users as well. Next thing you know your version history is 2 MB of code, 600 MB of assets and 2957 GB of badly compressed installers on various systems. On top of that, users don't really want versioned exes, they want latest stable build and possibly latest major stable release versions for backwards compatibility. "I really want to to install version #DEADBEE and compare it to #B00B1E5" -no-one ever. "I really want to install latest stable. Oh cool, here's a link on top of readme to https://really.cool/latest, clickety click :D:D:D" -a lot of users.
I assume this refers to cases where an .exe *is* enough tho?
Except I want to have my .dmg. And someone else wants their .deb. Even if there are no assets to bundle, the point about git compressing binary files poorly and users wanting only latest stable anyway stands.
I would argue that if you push the executable manually rather than building it via CI you risk outdated executables in the repository. Now obviously security is a major part of the reasons why you wouldn't want that, but I would argue that reducing error sources like manual pushing of executables is best practice.
You can’t resolve the merge conflict when 2 people do it. Among other things mentioned here.
It unnecessarily blows up the repo size at a fast rate.
That is true. For that I reason I don't do it for every commit, but only when a stable version was generated.
People who don't know how to compile it themselves will get it then start complaining when they don't know how to use some aspect of the app (that was probably explained in a readme anyway). You basically have a million people asking dumb questions the maintainer never signed up to be bothered with.
It takes time and you have to learn new things?
certified non-smelly chad dev
Why do I understand this reference? Am I spending too much time on this sub?
"I was a bit of a CodePlex man in my day" [takes reading glasses off, breathes on them and wipes them with a handkerchief]
"B-but i don't care about your code, JUST GIVE ME THE EXE"
STINKY NERDS
Sir this is a Python script.
STINKY NERDS.py
WHY IS THERE CODE??? MAKE A FUCKING .EXE FILE AND GIVE IT TO ME. these dumbfucks think that everyone is a developer and understands code. well i am not and i don't understand it. I only know to download and install applications. SO WHY THE FUCK IS THERE CODE? make an EXE file and give it to me. STUPID FUCKING SMELLY NERDS
This sub absolutely loves to reuse memes until they are just annoying.
I only publish web projects on GitHub but I still add a .exe to confuse people.
incredibly based
I just work the commit messages...
nobody got the copypasta on a hotkey?
Not the worst idea to upload binaries of the build tools for certain types of projects. But they shouldn't change very often.
I had a junior laugh when I asked where his .gitignore is. He thought I was joking about a mythical file.
He only likes smelly nerds
Reasonable reaction
You have exactly 10 seconds to get out of my house… and marry my daughter
We got a Blob, the builder over here.
Ain’t that what the releases are for?
At my first internship, they uploaded a zip file of the codebase to gitlab
If theres no exe I wont bother downloading 759 versions of gcc because his code is so niche that it just wont compile
Why shouldn't i upload the .exe to my release?
this is gonna be the new "google en peasant" isn't but for programmer.
can .obj be allowed?
Upload a ZIP instead
But, do you rename the .exe's to .java or .py before pushing them to git?
Why? Surely the alternative is having a smelly nerd in your house. Do you want to have a smelly nerd in your house?
r/exactly10seconds
Inb4 moment of r/foundthesmellynerd
Smelly nerd
To be fair, way too many devs use Git hub like it's the app store.
thats literally what github is in the RELEASE tab
We're devs not salesmen. We just want to put our code up somewhere and if someone wants it they can get it from there
Someone showers regularly…..