[GH-ISSUE #9] You spelled decompile wrong #7

Closed
opened 2026-03-03 13:52:08 +03:00 by kerem · 4 comments
Owner

Originally created by @mattkenefick on GitHub (Mar 18, 2024).
Original GitHub issue: https://github.com/jehna/humanify/issues/9

You wrote "Un-minify" but this is just meant to decompile other people's code

Originally created by @mattkenefick on GitHub (Mar 18, 2024). Original GitHub issue: https://github.com/jehna/humanify/issues/9 You wrote "Un-minify" but this is just meant to decompile other people's code
kerem closed this issue 2026-03-03 13:52:08 +03:00
Author
Owner

@jehna commented on GitHub (Mar 18, 2024):

I think decompile would mean that there would be a code compilation step; compilation at Wikipedia is defined as:

In computer programming, the translation of source code into object code by a compiler

In Javascript land there's no different object code from source code, as Javascript is an interpreted language. Javascript talks more about transpilation (translating from one source code to anohter, such as Typescript ➡️ Javascript or ES6 ➡️ ES5). One step that many build processes in Javascript land take is to minify the source code, which Wikipedia describes as:

...the process of removing all unnecessary characters from the source code of interpreted programming languages or markup languages without changing its functionality

One of the most significant parts of minifying Javascript is to discard the function and variable names and replace them with shorter ones. This project's most significant part is to reverse that renaming process of the minification, which I think is pretty well described by calling it un-minifying the code.

Please let me know if I got something wrong, happy to change wording if you can point out how decompilation would be better term!

<!-- gh-comment-id:2004672019 --> @jehna commented on GitHub (Mar 18, 2024): I think decompile would mean that there would be a code compilation step; [compilation at Wikipedia](https://en.wikipedia.org/wiki/Compilation) is defined as: > In computer programming, the translation of source code into [object code](https://en.wikipedia.org/wiki/Object_code) by a [compiler](https://en.wikipedia.org/wiki/Compiler) In Javascript land there's no different object code from source code, as Javascript is an interpreted language. Javascript talks more about [transpilation](https://en.wikipedia.org/wiki/Transpilation) (translating from one source code to anohter, such as Typescript ➡️ Javascript or ES6 ➡️ ES5). One step that many build processes in Javascript land take is to [minify](https://en.wikipedia.org/wiki/Minification_(programming)) the source code, which Wikipedia describes as: > ...the process of removing all unnecessary characters from the [source code](https://en.wikipedia.org/wiki/Source_code) of [interpreted programming languages](https://en.wikipedia.org/wiki/Interpreted_language) or [markup languages](https://en.wikipedia.org/wiki/Markup_language) without changing its functionality One of the most significant parts of minifying Javascript is to discard the function and variable names and replace them with shorter ones. This project's most significant part is to reverse that renaming process of the minification, which I think is pretty well described by calling it un-minifying the code. Please let me know if I got something wrong, happy to change wording if you can point out how decompilation would be better term!
Author
Owner

@mattkenefick commented on GitHub (Mar 18, 2024):

Please let me know if I got something wrong, happy to change wording if you can point out how decompilation would be better term!

Minifying refers to making something smaller, and while it's true shorter variable names achieve this, it's more common to occur due to obfuscation; obfuscation at Wikipedia is defined as:

In software development, obfuscation is the act of creating source or machine code that is difficult for humans or computers to understand. Like obfuscation in natural language, it may use needlessly roundabout expressions to compose statements. Programmers may deliberately obfuscate code to conceal its purpose (security through obscurity) or its logic or implicit values embedded in it, primarily, in order to prevent tampering, deter reverse engineering, or even to create a puzzle or recreational challenge for someone reading the source code.

Minifying JavaScript code is about reducing the overall footprint. Obfuscation, changing variable names and similar, contributes to that even though a significant purpose is to deter others from reverse engineering and stealing their work.

It's one thing to use a code formatter to restructure minified/non-obfuscated code, like in developer tools, but this project seems to try and rename intentionally misnamed objects using AI which seems to more accurately be unobfuscation. Yes, JavaScript isn't "compiled" in the traditional sense, but the general idea of "decompiling" something to gain access to source that was intentionally obfuscated still fits; a term from when not everything was on the web.

So I guess the suggested alternate term would be "Unobfuscator" or "Deobfuscator". Not sure which is more correct.

<!-- gh-comment-id:2004700604 --> @mattkenefick commented on GitHub (Mar 18, 2024): > Please let me know if I got something wrong, happy to change wording if you can point out how decompilation would be better term! Minifying refers to making something smaller, and while it's true shorter variable names achieve this, it's more common to occur due to obfuscation; [obfuscation at Wikipedia is defined as](https://en.wikipedia.org/wiki/Obfuscation_(software)): > In [software development](https://en.wikipedia.org/wiki/Software_development), obfuscation is the act of creating [source](https://en.wikipedia.org/wiki/Source_code) or [machine code](https://en.wikipedia.org/wiki/Machine_code) that is difficult for humans or computers to understand. Like [obfuscation](https://en.wikipedia.org/wiki/Obfuscation) in [natural language](https://en.wikipedia.org/wiki/Natural_language), it may use needlessly roundabout expressions to compose statements. Programmers may deliberately obfuscate code to conceal its purpose ([security through obscurity](https://en.wikipedia.org/wiki/Security_through_obscurity)) or its logic or implicit values embedded in it, primarily, in order to prevent tampering, deter [reverse engineering](https://en.wikipedia.org/wiki/Reverse_engineering), or even to create a [puzzle](https://en.wikipedia.org/wiki/Puzzle) or recreational challenge for someone reading the source code. Minifying JavaScript code is about reducing the overall footprint. Obfuscation, changing variable names and similar, contributes to that even though a significant purpose is to deter others from reverse engineering and stealing their work. It's one thing to use a code formatter to restructure minified/non-obfuscated code, like in developer tools, but this project seems to try and rename intentionally misnamed objects using AI which seems to more accurately be unobfuscation. Yes, JavaScript isn't "compiled" in the traditional sense, but the general idea of "decompiling" something to gain access to source that was intentionally obfuscated still fits; a term from when not everything was on the web. So I guess the suggested alternate term would be "Unobfuscator" or "Deobfuscator". Not sure which is more correct.
Author
Owner

@jehna commented on GitHub (Mar 18, 2024):

I do agree that miniying javascript variables is a mean of obfuscation, and reversing obfuscated code would IMO be called "deobfuscating".

Humanify does internally use a deobfuscator called Webcrack, which does make Humanify an efficient deobfuscator too.

Historically I think the README was written before Webcrack was introduced, at which point the project was indeed just a one trick pony without any other functionalities than restoring the variable name, but I do think it would be better to call it deobfuscator now 🤔

<!-- gh-comment-id:2004726746 --> @jehna commented on GitHub (Mar 18, 2024): I do agree that miniying javascript variables is a mean of obfuscation, and reversing obfuscated code would IMO be called "deobfuscating". Humanify does internally use a deobfuscator called [Webcrack](https://github.com/j4k0xb/webcrack), which does make Humanify an efficient deobfuscator too. Historically I think the README was written [before Webcrack was introduced](https://github.com/jehna/humanify/blob/5d0b5582cc52e06123c447399fa352e3a6733db3/package.json), at which point the project was indeed just a one trick pony without any other functionalities than restoring the variable name, but I do think it would be better to call it deobfuscator now 🤔
Author
Owner

@jehna commented on GitHub (Mar 18, 2024):

Updated README & project metadata 🎉

Thank you for bringing this up, great to hear an outside view about the project. I think decompiling is a good way to describe the project too and I can see people googling for it who would like to find Humanify, so it's now in the README too.

<!-- gh-comment-id:2004750700 --> @jehna commented on GitHub (Mar 18, 2024): Updated README & project metadata 🎉 Thank you for bringing this up, great to hear an outside view about the project. I think decompiling is a good way to describe the project too and I can see people googling for it who would like to find Humanify, so it's now in the README too.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/humanify#7
No description provided.