Open source ≠ Source availiable
Example of non open source programs with source code https://en.m.wikipedia.org/wiki/List_of_proprietary_source-available_software
Open source ≠ free software
Open source inherently means you can compile the code locally, for free. You can’t necessarily redistribute it, depending on the license, but I’m not aware of a “you can compile this source for testing and code changes only but if you use it as your actual copy you are infringing” license.
I am very much open to correction here.
Open source inherently means you can compile the code locally,
Open Source means more than that. It is defined here:
If you use the phrase “open source” for things that don’t meet those criteria, then without some clarifying context, you are misleading people.
for free.
Free Software is not the same as “software for free”. It, too, has a specific meaning, defined here:
https://www.gnu.org/philosophy/free-sw.html
When the person to whom you replied wrote “free software”, they were not using it in some casual sense to mean free-of-charge.
Free as in free speech, not as in free beer
Where are all those free beer I always hear about?!
According to the Open Source Initiative (the folks who control whether things can be officially certified as “open source”), it basically is the same thing as Free Software. In fact, their definition was copied and pasted from the Debian Free Software guidelines.
I think InnoSetup belongs on that list as wel.
You are talking about free softwares there are nonfree licenses which provide source code
There are apps having source public but does not have any developement practice like of open sauce
deleted by creator
Who downvotes this? Chris Sawyer is the GOAT.
Thank you. I almost forgot
In this thread: Programmers disassembling the joke to try and figure out why it’s funny.
Cute. It would be funnier if it was correct.
For people interested in the difference between decompiled machine code and source code I would recommend looking at the Mario 64 Decomp project. They are attempting to turn a Mario 64 rom into source code and then back into that same rom. It’s really hard and they’ve been working on it for a long time. It’s come a long way but still isn’t done.
I thought they were done already?
There is still some stuff that needs documenting, but the original goal of recompiling the created source code into the ROMs has been achieved. People are still actively working on it, so in that sense it’s maybe never done.
No, it is wrong. Machine code is not source code.
well assembly is technically “source code” and can be 1:1 translated to and from binary, excluding “syntactic sugar” stuff like macros and labels added on top.
But those things you’re excluding are the most important parts of the source code…
By excluded he means macro assemblers which in my mind do qualify as an actual langauge as they have more complicated syntax than instruction arg1, arg2 …
The code is produced by the compiler but they are not the original source. To qualify as source code it needs to be in the original language it was written in and a one for one copy. Calling compiler produced assembly source code is wrong as it isn’t what the author wrote and their could be many versions of it depending on architecture.
Never heard of a decompiler I see.
A decompiler won’t give you the source code. Just some code that might not even necessarily work when compiled back.
And? Decompilers aren’t for noobs. So what if it gives you variable and function names like A000, A001, etc?
It can still lead a seasoned programmer where to go in the raw machine code to mod some things.
You’re actually chatting with a hacker that made No-CD hacks.
Try converting from English to Japanese and back to English.
xor ax, ax
Still not the actual source code, bucko.
No, it’s actually better when you can read the machine code.
Most folks don’t care to recompile the whole thing when all they wanna do is bypass the activation and tracker shit.
Having access to the source code actually makes reading machine code easier, so you’re also wrong on this entirely different thing you’re going on about.
I never said disassembly or decompiling was easier in any way. I’ll agree with you on that, it’s way more difficult.
Back to the point of the meme though, if you can read assembly, you can read it all.
You’ve never actually compared source code to its compiled output, have you.
I’ve written drivers in 65 bytes of code. I don’t tend to use high level languages that hide what’s going on behind the scenes.
You’ve clearly never used a disassembler such as HIEW have you? You get the entire breakdown of the assembly code.
I disassemble binaries daily for work. It’s still not the same as source code.
I didn’t say it was. I just said loosely what the OG meme said, if you know how to read assembly, you know how to read (and write) what some of the code does.
Okay, boomer here, be gentle.
So back in the ‘70s I dabbled in programming (now called “coding”, I hear). I only did higher-level languages like Fortran, Cobol, IBM Basic, but a friend had a job (at age 13!) programming in assembler. Is assembler now called assembly, or are they different?
It’s still called programming, coding is the same thing. Assembler more commonly refers to the utility program that converts the assembly code to machine code while assembly refers to the code itself, but the term assembler code is also valid. It’s uncommon to simply call the code assembler because it would be easily confused with the utility program.
Yep, some call it assembly, others call it assembler
(at age 13!)
c/suddenlyfactorial
I thought that the assembler is a specific program that translates mnemonics into the corresponding machine code. Perhaps in early computing this was done by hand so a person was the assembler (and worked in assembler), but now that is handled by software (and supports various macros). So programming in assembly would generate a stream of text that must be assembled by an assembler. (Although I have heard people refer to programming in assembler as well, just not often.)
I hear people say “program in assembler” but IMO that’s wrong. I’d say you write the code in “assembly language” (or better yet, the actual architecture you’re using like “x86 assembly”) but you “assemble” it with an “assembler”. Kind of like how you could write a program in the “C language” and “compile” it with a “compiler”
I was too young/poor to afford an assembler for my 6502 so I wore out the assembly long hand on a legal pad and then manually converted each operation to machine code.
Needless to say my programs done this way were exceptionally simple, but it’s interesting to understand the underlying code.
It just occurred to me that AI in the nearish future will probably/almost certainly be able to do this.
I can’t wait for AI to make a PC port of every console game ever so that we can finally stop using emulators.
It was a staple of Asimov’s books that while trying to predict decisions of the robot brain, nobody in that world ever understood how they fundamentally worked.
He said that while the first few generations were programmed by humans, everything since that was programmed by the previous generation of programs.
This leads us to Asimov’s world in which nobody is even remotely capable of creating programs that violate the assumptions built into the first iteration of these systems - are we at that point now?
are we at that point now?
Nope, but we’re getting there.
Joke aside, that’s kind of like claiming that any web frontend is open source because you can access the built, minified and often obfuscated source of it.
So true! I have been “hacking” some chrome extensions recently, do you know of a tool for reverse engineering JS?
IDA Pro (a disassembler) is closed source but came with a license that allowed disassembly and binary modification. Unfortunately, that’s no longer the case.
Why not use that NSA tool they released
Ghidra is open source even before you run the disassembler 🤯 great anecdote
OS - obfuscated source
If you wanna skip a few inconvenient instructions in X86 assembly, throw a few No Operation instructions in the right places.
NOP = 0x90
And so you add a hashing check. But then that can be removed.
So you need one in the OS but that can be removed.
So you need one in hardware.
In other words no matter how clever you are there’s always a way to monkey with something unless you have absolute control from silicon on up.
Here’s a really interesting video the Xbox team did on the challenges of trying to make sure that the content running wasn’t pirated.
While DRM is the bane of everybody there are cases where trust and integrity is important and it’s an intriguing look into how hard it is to manage.
While DRM is the bane of everybody there are cases where trust and integrity is important and it’s an intriguing look into how hard it is to manage.
Nah, when the user wants to ensure trust and integrity in his own system, it works just fine. The problem comes when the user who needs to be able to access the data is simultaneously the adversary who needs to be stopped from accessing the data.
In other words, it’s one of those situations where the fact that it’s hard to manage is a gigantic clue that it’s wrongheaded to try to do so in the first place.
I agree. I mean when doing secure channel communications or weapons systems or health biometrics.
There are cases where you need to be sure of the integrity of the data and environment
It’s called _soft_ware for a reason 😹
Meanwhile, I’ve been archiving terabytes of software with no DRM, with no account.
Source available
You can have the code of any software with a decompiler. Especially with Java and C# for example.
Yeah but which version of assembly
Microsoft’s Assembly# of course. It’s new. It’s just different enough to extinguish assembly
Depends on the CPU. Either way there are cross-compilers and cross-disassmblers.
And even failing those options, there’s always hex editors for those really in the know.
6502 assembly.
The last assembly I could understand. Well, pretend to understand.