# How do most people get around (not) compiling?

**URL:** <https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016>\
**Category:** New to Julia\
**Created:** [February 25, 2021, 2:10pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016 "2021-02-25T14:10:26Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ribeiro](https://avatars.discourse-cdn.com/v4/letter/r/d9b06d/32.png) [@Ribeiro](https://discourse.julialang.org/u/Ribeiro)\
**Post date:** [February 25, 2021, 2:10pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/1 "2021-02-25T14:10:26Z")

</div>

This is more of a curiosity. Are most people using Julia to create scripts, in-house codes, and open source projects?  
Is there a significant group of people working with Julia for commercial software development? If so, how are those people getting around not being able to compile? Shipping source code is obviously a no-go. Maybe the software developed with Julia typically runs on servers or other environments where customers don’t see the file system? Or maybe people are using PackageCompiler, though that seems a bit complicated with the huge package sizes that get created.  
Thanks!

---

<div class="post-metadata">

**Author:** ![oxinabox](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oxinabox/32/206603_2.png) [@oxinabox](https://discourse.julialang.org/u/oxinabox)\
**Post date:** [February 25, 2021, 2:23pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/2 "2021-02-25T14:23:52Z")

</div>

> [@Ribeiro](#):
>
> Shipping source code is obviously a no-go.

This is not at all obvious to me.  
I think more context is needed.

---

<div class="post-metadata">

**Author:** ![Ribeiro](https://avatars.discourse-cdn.com/v4/letter/r/d9b06d/32.png) [@Ribeiro](https://discourse.julialang.org/u/Ribeiro)\
**Post date:** [February 25, 2021, 2:41pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/3 "2021-02-25T14:41:15Z")

</div>

> [@oxinabox](#):
>
> This is not at all obvious to me.

Within the context I mentioned (commercial software development).

---

<div class="post-metadata">

**Author:** ![nilshg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nilshg/32/2283_2.png) [@nilshg](https://discourse.julialang.org/u/nilshg)\
**Post date:** [February 25, 2021, 2:48pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/4 "2021-02-25T14:48:16Z")

</div>

Previous discussions:

> [@Hidden code](https://discourse.julialang.org/t/hidden-code/16232/26):
>
> Pretty much anything is possible with julia. The only reason anything becomes easy to do in any language is because some person put in a lot of hard work towards making that feature run well and also be accessible. In Julia, many things are easy to do because there is a devoted group of developers who spend their time making their dreams come true in their favorite programming language. The point is, they pick a problem they want to solve and create and abstract environment to facilitate the so…

> [@Commercial codes using Julia - code obfuscation?](https://discourse.julialang.org/t/commercial-codes-using-julia-code-obfuscation/12429):
>
> Forking from the discussion on static compilation in Julia. One of the arguments for static compilation seems to be the commercial code and obfuscation argument. When shipping a commerical and paid for code the company does not want its work to be easily pirated. But that has changed with open source. I am familar with systems installation, systems management and installing both open source and commercial compiled codes. I worked for one company who had venture capital, and I was told they …

---

<div class="post-metadata">

**Author:** ![oxinabox](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oxinabox/32/206603_2.png) [@oxinabox](https://discourse.julialang.org/u/oxinabox)\
**Post date:** [February 25, 2021, 2:50pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/5 "2021-02-25T14:50:22Z")

</div>

Still not enough context as to why it is obviously a no-go.

For example, Google Docs and Office365 are both commerical software.  
People pay a bunch for enterprise liscences.  
They ship javascript source code to me.

There a number of commerical applications that ship perl scripts (and interpretters with them); when i last looked at GitHub Desktop it did that. I am sure there are commercial latex distributions that do two. (I only know this because i counted how many perl interpretters were on my windows machine a while back. It was 6. Only 2 of which I recall installing)

To answer your question, need to know why for you it is considered a no-go.

- Is it about keeping the code secret? (I have a bunch to say about that)
- Is it to do with the difficulty shipping he compiler?
- Is it to do with time to first plot?

---

<div class="post-metadata">

**Author:** ![Ribeiro](https://avatars.discourse-cdn.com/v4/letter/r/d9b06d/32.png) [@Ribeiro](https://discourse.julialang.org/u/Ribeiro)\
**Post date:** [February 25, 2021, 3:11pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/6 "2021-02-25T15:11:29Z")

</div>

@nilshg Thanks. I had read those, but they are a couple of years old (which is a lot for Julia) and my question is not about it being possible to do compile or obfuscate, is about how most people use Julia in a commercial context.

@oxinabox I am using Julia to do some research and that works great for me. I’m not full time programmer. However, I work for a large company that does have a ton of programmers and that sells software that does not ship with source code (probably mostly C++). There are bash and Python scripts that get shipped along with the software and I know some companies share a lot of source code. But my assumption is that _most_ people doing commercial software development ship _mostly_ executables. So my question is:

> [@Ribeiro](#):
>
> Is there a significant group of people working with Julia for commercial software development? If so, how are those people getting around not being able to compile?

The answer could be “no” and it could be “they work on software that does ship part of the source code”. Or something else. I’m just curious.  
Thanks!

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [February 25, 2021, 3:12pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/7 "2021-02-25T15:12:57Z")

</div>

The problem you’re after isn’t really compilation — it’s obfuscation. Yes, compiling some languages can lead to a slightly obfuscated output to ship (especially with some simple steps like name stripping), but decompilers are _really_ good these days. PackageCompiler _doesn’t_ obfuscate at all. It’s really easy to attach a REPL to the output and use all sorts of introspection.

Obfuscation isn’t really something that’s high on the priority list for an open source language, as you might imagine. It’s something that we have on our roadmap at Julia Computing, though.

---

<div class="post-metadata">

**Author:** ![Ribeiro](https://avatars.discourse-cdn.com/v4/letter/r/d9b06d/32.png) [@Ribeiro](https://discourse.julialang.org/u/Ribeiro)\
**Post date:** [February 25, 2021, 3:16pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/8 "2021-02-25T15:16:50Z")

</div>

@mbauman Thanks for the answer. It’s about shipping code. So if you tell me most people ship their codes as source and don’t care about obfuscation, then you’re right. If you say most commercial applications use PackageCompiler, then the follow up would be how they do that within manageable sizes (and the answer could be that the stuff they ship is so large that the 150MB-NGB that PackageCompiler adds is fine).

---

<div class="post-metadata">

**Author:** ![oxinabox](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oxinabox/32/206603_2.png) [@oxinabox](https://discourse.julialang.org/u/oxinabox)\
**Post date:** [February 25, 2021, 3:19pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/9 "2021-02-25T15:19:18Z")

</div>

> [@mbauman](#):
>
> The problem you’re after isn’t really compilation — it’s obfuscation. Yes, compiling some languages can lead to a slightly obfuscated output to ship (especially with some simple steps like name stripping), but decompilers are _really_ good these days.

A good example of this is:

**Office365/GoogleDocs:** ships source code in javascript, but it is so obsufucated you can’t do anything with it.

**Minecraft:** ships compiled Java exectuables. It has been decompiled completely and utterly. And has an extensive modding compunity based around that.  
In general decompiling compiled java is _really_ easy, I have done it before for a minecraft mod that was closed source and had accessbility problems.  
C code I guess in general decompiles less well, though I haven’t tried.

If you are liscensing highly specialized software at low volume, then you can very reasonably expect to solve this with contracts. Less so if you are selling thousand and thousands of copies.

---

<div class="post-metadata">

**Author:** ![Ribeiro](https://avatars.discourse-cdn.com/v4/letter/r/d9b06d/32.png) [@Ribeiro](https://discourse.julialang.org/u/Ribeiro)\
**Post date:** [February 25, 2021, 3:24pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/10 "2021-02-25T15:24:35Z")

</div>

@oxinabox Interesting. But is anything commercial developed in Julia? This is what I’m asking.

---

<div class="post-metadata">

**Author:** ![oxinabox](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/oxinabox/32/206603_2.png) [@oxinabox](https://discourse.julialang.org/u/oxinabox)\
**Post date:** [February 25, 2021, 3:25pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/11 "2021-02-25T15:25:03Z")

</div>

> [@Ribeiro](#):
>
> But my assumption is that _most_ people doing commercial software development ship _mostly_ executables.

I think it is probably reasonable to define commercial software development that way.  
Or that + SaaS.  
As you noted this is not a problem for SaaS.

I suspect most professional software development (both in julia and not) revovled around producing internal software.  
For companies that make money not directly though there software (but where software is core their business).  
But that software is never used by people who don’t work for the company and so never leaves the building.

But I guess that can probably be excluded from “commercial software development”?  
to focus on thing where the software is the product?

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [February 25, 2021, 3:28pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/12 "2021-02-25T15:28:06Z")

</div>

> [@Ribeiro](#):
>
> But is anything commercial developed in Julia? This is what I’m asking.

Yes, there’s quite a bit. You can look at at Julia Computing’s [case studies](https://juliacomputing.com/case-studies/) for some examples, but yes, many of these are internal or SaaS. One example of shipping code is [Pumas](https://pumas.ai) — it’s a commercial Julia package.

---

<div class="post-metadata">

**Author:** ![Ribeiro](https://avatars.discourse-cdn.com/v4/letter/r/d9b06d/32.png) [@Ribeiro](https://discourse.julialang.org/u/Ribeiro)\
**Post date:** [February 25, 2021, 3:33pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/13 "2021-02-25T15:33:45Z")

</div>

@mbauman I’d consider most of those examples to fall within “in-house codes”. My original post wasn’t clear in what my definition of in-house codes are.  
Based on these comments, it sounds like people aren’t selling Julia code for people to execute on their computers and instead use their Julia codes in-house. Then that might answer my question! Thanks!

---

<div class="post-metadata">

**Author:** ![mbauman](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbauman/32/31082_2.png) [@mbauman](https://discourse.julialang.org/u/mbauman)\
**Post date:** [February 25, 2021, 3:39pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/14 "2021-02-25T15:39:34Z")

</div>

I ninja-edited my comment to include Pumas — which is _definitely_ a commercial package that is getting shipped for local use. I’m quite certain there are others that I’m not aware of or am forgetting.

---

<div class="post-metadata">

**Author:** ![Ribeiro](https://avatars.discourse-cdn.com/v4/letter/r/d9b06d/32.png) [@Ribeiro](https://discourse.julialang.org/u/Ribeiro)\
**Post date:** [February 25, 2021, 3:45pm UTC](https://discourse.julialang.org/t/how-do-most-people-get-around-not-compiling/56016/15 "2021-02-25T15:45:07Z")

</div>

Ah, interesting. It seems that code uses an honor system and is free for some users. Neat!
