11 ms·
>has to download some runtimes As someone who had to develop software in an airgapped enviroment, I'm sending a special "fuck you" to whoever thought this is a
by no_time 5y ago
>has to download some runtimes
As someone who had to develop software in an airgapped enviroment, I'm sending a special "fuck you" to whoever thought this is a good idea. God forbid you have the AUDACITY to not be connected to the internet at all times for any reason whatsoever.
- amelius 5y agoYes, I hate it when software that I thought was fully installed unexpectedly starts downloading more stuff when I run it. What if I installed the software with the intention to run it without internet, or 5, 10 or 100 years in the future?
- visarga 5y agoApparently in those 20GB there was no place for the runtime?
- Dayshine 5y agoThe installer for the sdk is 200MB
- pas 5y agothe default is online now for development, so nowadays by default if you need offline you need to test it :/
- marginalia_nu 5y agoWho gets to decide what is the default?
- marcosdumay 5y agoOn this case, Microsoft. It's their private garden, you are invited by their rules. And yes, this sucks. But if you want freedom, there are other OSes (or even other dev tools) where you can have it.
- NicoJuicy 5y agoI think it started with Android. You can download all versions of Android if you want, but i doubt that you would want that.
- amelius 5y agoI think the first time I encountered it was in some makefile of Chrome or perhaps V8 that automagically downloaded dependencies. It sounds nice in theory, but then I expected the tarball to contain the entire thing which caused trouble and confusion down the line.
- Dayshine 5y agoWell, it caches the packages... So only your CI system needs internet, or your PC the first time you ever publish. And you can likely mention it as an explicit dependency in your csproj so that you can download it on first restore.
- vidanay 5y agoI feel like you are misunderstanding the rules associated with an air-gapped system.
- Dayshine 5y agoPresumably all development frameworks require you to explicitly list your dependencies, download/restore them with internet, then snapshot and copy that to your air-gapped environment? That's exactly what you have to do here.
- sigmaprimus 5y agoIs there a rule regarding developing for a .NET framework from within such an environment? I understand OC issues with the difficulties associated with using M$ tools with limited internet but wonder if the "Air Gapped" example may be a bit extreme. Being required to work from home while still meeting an employers' secure network policies might be more common.
- feldrim 5y agoI developed with dotnet in an airgapped environment. Due to restrictions, you cannot use dozens of nuget packages. So, you create a nuget package repository in your airgapped environment. That's all it is. If you want something else, you use whatever the policy is to get a file from internet to airgapped side. When I wanted a newer version of a Nuget package, it took me 3-4 hours to get it on my workstation. But that's all. Also, when you write something on those environments, you know users cannot install a runtime. So you get in touch with IT teams to ensure which version of runtime they are deploying. If and only if you have to update it for proper reasons, then they can deploy newer versions to the clients. For all or for a specific user base. This is how it works. Without an actual business case or a security concern, you don't just go from a runtime to another, let's say 4.8 to 6.0. So yes, development in airgapped environments is PITA. But it's the same with Java, Python, Perl, etc. That's not the fault of the runtime but the development environment itself.
- stevefan1999 5y agoWell, in .net 6 you have the ability to deploy self-contained application, in a single file manner and even compress the binary [1] The end result is a Golang-like, single binary experience that runs on many platforms easily and rapidly. Though I can master a lot of programming languages, I miss C# the most especially on async/await and LINQ. Rust is what I'm favourited in second places with a lot of similarities of C#. [1]: https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file https://docs.microsoft.com/en-us/dotnet/core/deploying/singl...
- mumblemumble 5y agoIt's really not that big of a deal. You set up a package proxy that is itself behind the airgap, and you're good. Yes, you have to put some extra effort into moving packages across that airgap when you need to add or upgrade one, but then, isn't having to do things like that kind of the whole point of an airgap? I certainly wouldn't want to ask that the other 99% of the world's developers avoid a feature that's useful to them just to assuage my feelings of envy about the convenience they enjoy.
- edgriebel 5y ago> set up a packaging proxy to [connect with a system outside the airgapped computer] Do you even know what an airgapped computer is?
- relaxing 5y agoIt’s not that kind of proxy.
- birksherty 5y ago> isn't having to do things like that kind of the whole point of an airgap? Nope. The exe files are supposed to do it's thing without internet and no extra effort like it was for a long time.
- oauea 5y agoEven in the past files wouldn't magically materialize on your harddrive.
- formerly_proven 5y agoIn the mini-guide above they already moved the SDK ("Software Development Kit") across the air-gap, yet creating a hello world still requires downloading even more stuff, because the .NET SDK does not actually contain enough stuff to create hello worlds, apparently? Contrast this with e.g. Zig for Windows is a ~60 MB zip file which contains the entire Zig/C/C++ compiler with cross-compilation support for basically everything, and also has complete Win32 headers + libraries in it. There's even DDK headers in there, though I'd expect to do some legwork to build drivers for NT with Zig.
- howdydoo 5y agoThis is a bit dramatic. You're a software developer, building an app which has dependencies, so of course you have to download those dependencies to build. Where else would they come from? Literally every language with a package manager does the same thing.
- no_time 5y agoBeing able to make a portable build of the software you are creating is such a basic feature it's baffling you have to fetch extra data to do that. Also nowhere in "dotnet publish -o ./publish -r win-x64" I said "Connect to the internet and fetch megabytes of binaries" What I miss is the old model for installing software. Give me the yearly ISO, optionally provide a service pack or two if some huge problem went under the radar in testing.
- Dayshine 5y ago`dotnet publish` performs an implicit `dotnet restore`. So, yes, you did. If you don't want it to download anything then you use the `dotnet publish --no-restore` flag, which is used a lot in CI/CD pipelines. If you don't have the package dependencies cached it will then simply fail.
- howdydoo 5y agoThe opposite side of that coin is a required up-front install of every package that might ever be needed for every possible scenario... in which case people would complain (even more) about massive installs. The internet exists, the industry has evolved, software has dependencies, and yes you have to download them (just like you had to download the SDK ISOs back in the day). But it's just one command, run it and get it over with, and after that up-front one-time pain you'll have a nice offline workflow.
- Hnrobert42 5y agoYou are welcome to the philosophy that says, “the internet exists. Adapt or perish.” It may serve you well. For many, it is not so black and white. Internet connections are spotty, slow, or expensive. In GP’s case, there is no internet. Like I said, you are welcome to ignore those users. But your ignorance (I don’t mean that in a derogatory way) doesn’t change their situation.
- sigmaprimus 5y agoThings were far more annoying in the past, in Win98 connecting a printer, or any other hardware required inserting the installation CD or having a folder containing the all the cab files on your system and drive space was far less abundant.
- salmo 5y agoI don't know if it's the case anymore, but that's been the state of windows installers for a long time. Usually the easy-to-download one was tiny and just phoned home for the real bits. And that wasn't just Microsoft's own stuff, but even things like Java and whatever. Usually you had to dig a bit and could find an "offline installer". Sometimes an "alternate downloads" link is on the initial download page, sometimes you have to good to find a deeper link on the vendor's site. I always did that just to keep from needlessly reaching out to the internet X times when updating X machines. And of course, make sure you're getting it from the vendor and not some sketchy download site.
- clavicat 5y agoThe worst example I know of is Microsoft Office. When I run their installer/downloader, it installs the 32-bit version on my 64-bit machine—it doesn’t let you choose and by the time you realize, you’ve already wasted all that time and bandwith. I had to go to some janky website that hosts the links to the official ISOs and download that instead.
- deleted 5y ago[deleted]
- jpeter 5y agoYou can bundle the .NET runtime with your app. So the user doesn't need to download a runtime.
- HPsquared 5y agoIndeed, that's why it's called a redistributable.
- earleybird 5y agoYes, however, it will expand the runtime into C:\temp (or similar). What could go wrong? And then you find yourself in a MS induced yack shave because you want to run two different executables. Microsoft is a never ending source of accidental complexity. In this particular scenario, my first thought was "shoulda used golang". I hear tell that since then (1+ yrs ago) matters have improved in the realm of MS standalone apps (well, maybe just cmd line apps). oh, and the exe is round about 65mb compared to a golang ~5 or 6mb
- YetAnotherNick 5y agosame with CI/CD pipeline. Most developers just choose to download the same runtime each time there is a build, which is not just very inefficient but not at all guaranteed to work for the next 10 years.
- rkeene2 5y agoThis is the reason I wrote "bash-drop-network-access" [0]. I use it as part of my package building system so that downloads are only done in the "download" phase of building where I validate and cache all objects. This means I can fully verify that I can build the whole thing air-gapped and far into the future with the set of files identified by the SHA256 in each package's buildinfo. This is important because I support each release of the distribution for up to 10 years, and have some customers who may need to build it in an air-gapped environment. [0] https://chiselapp.com/user/rkeene/repository/bash-drop-network-access/ https://chiselapp.com/user/rkeene/repository/bash-drop-netwo...
- delta1 5y agoSafari is reporting your TLS certificate has expired
- no_time 5y agoVery interesting. First time I heard about loading bash "builtins" from a shared library. How does this compare to LD_PRELOAD? Personally, I just run things in network namespaces with "ip netns exec offline|wireguard $COMMAND" to restrict net access.
- rkeene2 5y agoUsing LD_PRELOAD you only affect dynamically linked executables, where using kernel enforcement using syscall filtering, every process is affected. Also, things are allowed to unset LD_PRELOAD, but not remove filtering. I thought about using a network namespace, but that would make things more complicated since I would need to re-call my shell script to pick-up where I left off (because it requires creating a new process). I initially tried to implement this using network namespaces, but you cannot "unshare" the current process, you must spawn a new process. With dropnet I can do download() enable -f ./dropnet.so dropnet configure() build() install() With "unshare" I would need to do more work to get to "configure()" in a new process.
- throwaway6734 5y agoPytorch occasionally does this as well w/ model weights and it's a royal PITA
- dev_tty01 5y agoOff topic, but this really struck a chord. I arrive at the trailhead for an afternoon of mountain biking in the mountains. I can't record the ride route because my mountain bike specific trail/ride logging app can't get an internet connection to log me in. I don't want to be logged in. I just want to record GPS over time. No maps needed. No server access needed. I guess they never thought someone might want to mountain bike in the mountains! Sorry, but that is an idiotic design decision. Unfortunately, this approach to "personal" computing has become the norm rather than an exception. People are not allowed to exist on their own.
- 0xFluegel 5y agoHamburg, Germany: the public transport services released a new app a few months ago which assumes that the request failed when the app has not finished receiving an answer to a route query after a given time span. The problem: It is normal to have a data cap that, when reached, limits the rate to 64 kbit/s. That is too slow for the answer to be fully transmitted in time... At least the website works, even though it transmits the full site for every request...
- sambull-airways 5y agoFor android users, Strava makes things easy, but OsmAnd has way more features and I like it a lot more.
- anthomtb 5y agoDid this happen with Strava? My usual morning MTB lap has no cell service at the trailhead and it’s never been an issue. But I’ve also never found myself logged out before.
- notnaut 5y agoThe massive 5G infrastructure push should help deal with some of you “occasionally offline” dissidents
- Hnrobert42 5y agoHow so? I thought 5G is mostly coming to densely populated areas, that is, areas that already have decent connectivity. Also, at least currently, I thought 5G is a developed country thing. Lots of folks are still running off 3G.
- quietbritishjim 5y agoWhile I strongly sympathize, in this case it specifically addresses one of the OP's main objections: why did they have to download and install many GB of stuff that they'll never need. The three options I can think of are: (1) install everything (what they objected to), (2) ask the user what things to install (they probably already had this option but didn't know what they needed), or (3) install a minimal amount and download on demand. Although it doesn't work well for you, it seems it would work well for them.
- sixothree 5y agoBecause OP is being disingenuous. 20GB is for the _full_ install of VS 2022. The required components for what he is doing is literally half that.
- austhrow743 5y agoIs it clear to a novice which components they will or will not need ahead of time?
- stjohnswarts 5y agoI would guess because the world doesn't revolve around you? You can download the full installers and bring them over on a USB, it's a trivial operation. You can also build on a networked computer and then bring over the final file(s) to your air-gapped system.
- Waterluvian 5y agoMan… the number of times I’ve had to debug a broken Steam game by installing the Nth .net runtime version…
- sixothree 5y agoFor me it's zero.
- rfrey 5y agoMy guitar tab program, which I pay for, refused to show me my library of tabs when I was supposed to play for some kids at a mountain campfire because it couldn't verify my membership because no internet connection. I'm not a good guitar player, and my memorized repertoire is... well, not of interest to 12 year olds. :) I wouldn't say the campfire was ruined, by my goodwill toward this product certainly was.
- lelanthran 5y ago> I wouldn't say the campfire was ruined, by my goodwill toward this product certainly was. Your goodwill deterioration does not matter unless you switch a new a app[1], and a) Make sure that new app can function without internet, and b) Tell your current app developers why you are switching. So, yeah, your goodwill is irrelevant is you're still giving them money or value. [1] I assume that it's a subscription - most things are nowadays.
- ChrisLomont 5y agoWhat dev system allows you to build things without downloading required components first? None? Like every other dev system, connect, either download offline installers for everything (they exist), or get your system running, then you can dev offline all you like. You don't need to "be connected to the internet at all times for any reason whatsoever". You need it once.
- vaylian 5y agoAgreed. I was very happy when it was announced in 2019 that Cargo got offline support: https://www.ncameron.org/blog/cargo-offline/ https://www.ncameron.org/blog/cargo-offline/ You can even prefetch popular libraries: https://crates.io/crates/cargo-prefetch https://crates.io/crates/cargo-prefetch
- belter 5y agoYou are missing the point. ...We have imaged Black Holes galaxies away, detected Gravitational waves from the other side of the Universe, landed on the Moon. But to this day, nobody knows what data your system telemetries to Microsoft. Not the data they talk about in the 5-10 page license. Instead, the data mentioned in the 55 page doc about what you agree to send them, that they refer to from the MS Software License...
- efdee 5y agoWhat is it that you are complaining about really? You need the latest runtime if you want to develop for the latest runtime. If that's your intention, download the latest runtime anyway you like, and then install it on your target machine. If it's not, don't download it and develop for the last runtime available on your machine.
- Meph504 5y agoits a split game, you can install everything at once, like 60gigs, and then you can happily work offline, but for most people, it is much easier to work from the on demand model, to pull what is needed when its needed.