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!
This is not at all obvious to me.
I think more context is needed.
Within the context I mentioned (commercial software development).
Previous discussions:
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?
@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:
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!
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.
@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).
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.
@oxinabox Interesting. But is anything commercial developed in Julia? This is what I’m asking.
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?
Yes, there’s quite a bit. You can look at at Julia Computing’s case studies for some examples, but yes, many of these are internal or SaaS. One example of shipping code is Pumas — it’s a commercial Julia package.
@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!
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.
Ah, interesting. It seems that code uses an honor system and is free for some users. Neat!