Nuno Afonso

2.4K posts

Nuno Afonso

Nuno Afonso

@nafonsopt

Developer of Ark Vcs. a Version Control System for Games

Katılım Aralık 2011
341 Takip Edilen1.1K Takipçiler
Sabitlenmiş Tweet
Nuno Afonso
Nuno Afonso@nafonsopt·
Had the immense pleasure being interviewed by Łukasz for his @wookash_podcast, and it is finally out! It was great to be able to talk about version control systems, go into why decentralization is a mistake for 99% of developers, and also showcase a why Ark VCS is better! :-] @wookash_podcast Thank you for having me!
Łukasz | Wookash Podcast@wookash_podcast

Here is crazy fun talk with @nafonsopt who was kind enough to not only chat with me, but made a demo of the ARK right there during our chat. Git works great for source code, but when you enter the world of projects frequently changing binary data, solutions that Git (LFS) or other VCSs provide are quite mediocre. @nafonsopt, being an observant engineer, watched the pain, extracted the core concepts and made ARK which is a VCS answering this need. And to top it, made it in jai, @Jonathan_Blow's language - hashtag flex. Nuno, thanks a lot for the time! I had lots of fun and it was great to challenge some of my git-oriented mentality. (Who even needs decentralized vcs really?) Enjoy the conversation!!

English
6
1
32
4.5K
Nuno Afonso
Nuno Afonso@nafonsopt·
@Daemin @ElJoputismoDC And all testing that you might have done becomes void, even if it doesn't break it can change behaviour.
English
1
0
0
10
Dominik Grabiec
Dominik Grabiec@Daemin·
@ElJoputismoDC @nafonsopt This also requires that the library maintains a stable ABI so that updating it to fix the bug does not break the existing applications on the system. You can't just recompile all the software on the system and assume it will work, even if you did have the source code.
English
1
0
0
13
Nuno Afonso
Nuno Afonso@nafonsopt·
For anybody saying "Just use Linux", you need to realise that Linux is worse than Windows. Windows has all the bloat, and while you can have Linux without any of that you still don't have tools like Remedybg, RAD Debugger and Super Luminal. Once you have such tools, then Linux is a suitable app development environment. But _it is still trash_ because of the whole Linux model of you needing to compile everything. The fact that you cannot run an app built using a newer version of glibc is an insane decision. I shouldn't have to upgrade my whole machine in order to run something built on a newer version. I shouldn't be worried that an upgrade will break my machine. I shouldn't be forced to compile things from scratch to work on my machine. I shouldn't be forced to install N packages, I just want self contained binaries I can just download and run. I shouldn't be forced to develop with an old distro to have "max glibc compatibility". I shouldn't have to worry about X11 / Wayland / Window Managers. I shouldn't have to worry about asking the user to select a folder, display a dialog or show notifications. Linux is such a huge waste of potential, if they got their shit together they would completely obliterate Windows. I first got into Linux in 2000, and even back then there was this "it will take over Windows any time now!". It's been _26 years_! The same way I'd pay quite a lot for Windows without any bloat, I'd be willing to pay for a distro that gives me all this.
Nuno Afonso@nafonsopt

Anybody who thinks that it is ok for telemetry to use 100% of your CPU should be fired immediately.

English
364
24
422
124.5K
Nuno Afonso
Nuno Afonso@nafonsopt·
@Daemin @kerzandev @fsckd0 Actually the easiest option imo is to just stay on some old distro to maximize glibc compatibility. All the static linking options lead to musl which is a pain. And that doesn't still solve the quirks of the platform specific code.
English
0
0
0
9
Nuno Afonso
Nuno Afonso@nafonsopt·
This is actually one of the areas where Linux is still ahead of Windows / MacOS, it doesn't give you BS about things needing to be signed. Me having to now as a developer to build and deploy an app to N stores / package managers is creating friction that puts off a lot of ppl. What I'm discussing is if Linux makes it easier for people to get their apps on it, then the most likely it is you'll get more and better apps.
English
0
0
0
23
Dominik Grabiec
Dominik Grabiec@Daemin·
@DarthBunker @nafonsopt So the answer to "you can't download programs and just run them on a Linux system" is a proprietary store which is controlled by the OS vendor. What happens when the vendor locks down the store like Google is doing now to Android?
English
1
0
1
28
Nuno Afonso
Nuno Afonso@nafonsopt·
@_BILLDING_ So 1 decade later and still is an issue? And the "solutions" that ppl come up with are to add more convoluted options?
English
0
0
0
50
Nuno Afonso
Nuno Afonso@nafonsopt·
@ForrestTheWoods @fsckd0 I agree, and IMO Linux could take the MacOS route which is a much more polished approach than Windows, have a .app folder that hides all that but still allows you to very easily get in there if you want to.
English
1
0
2
101
Forrest Smith
Forrest Smith@ForrestTheWoods·
@nafonsopt @fsckd0 I think o agree. Either ship static or ship the so. Aka what windows does. /usr/lib shouldn’t exist. Trying to share updated libs across the system is a failed idea. Failed because Docker bypasses it.
English
1
0
0
103
Nuno Afonso
Nuno Afonso@nafonsopt·
@ForrestTheWoods @fsckd0 IMO there's no real gain from having the whole .so symlinks, just make ppl specify the version you should link with.
English
1
0
0
118
Nuno Afonso
Nuno Afonso@nafonsopt·
The problem is that it is a vicious cycle. I've seen many ppl that want to develop multi-platform, so for example they launch their game for MacOS, it was an effort to get it there, to maintain it, there's little market share / sales so that effort is not worthy, and if that's the case then ppl stop / don't deploy for those platforms which also stops adoption. Some times it feels like the salvation for Linux app development will just be emulating Windows, because for decades things are still not much better.
English
0
0
0
32
local urban legend
local urban legend@djpharoh2·
@nafonsopt because they have more market share, duh. what does this have to do with you developing on a Linux machine? how does your DE of choice prevent you from loading an IDE available on Linux?
English
1
0
0
30
Forrest Smith
Forrest Smith@ForrestTheWoods·
@nafonsopt @fsckd0 glibc is a badly architected piece of junk. The solution is probably to compile for Linux from Windows via Zig. Build systems should never ever ever rely on the host system global environment. Catastrophically bad choice.
English
1
0
0
146
Forrest Smith
Forrest Smith@ForrestTheWoods·
@nafonsopt the anonymous anime avatars are not ready to handle this level of truth bomb Linux kernel is pretty good. Linux user space is an unmitigated disaster of horrible, terrible, bad architecture decisions. It’s so poorly designed that Docker was invented to hack around it. 💩 💩
English
1
0
7
342
Nuno Afonso
Nuno Afonso@nafonsopt·
@djpharoh2 It matters from a development pov. Ppl need to think, why do all the cool gui apps appear in Windows and Mac first (or only)? There's a problem at the core, and this is actually making it so that developers care less (or not at all) about Linux.
English
1
0
1
110
local urban legend
local urban legend@djpharoh2·
@nafonsopt I've never had to worry this much about a Linux setup. I've been using Linux for 20 years I've had to compile a package from source maybe 6 times at most. Every DE I've used has been plug and play. keeping my packages updated is two commands in the terminal at most.
English
1
0
1
110
Nuno Afonso
Nuno Afonso@nafonsopt·
@ParnabSanyal Always refreshing to listen it being said by Linux creator, maybe then some zealots pay attention.
English
0
0
2
154
Mario Figueiredo
Mario Figueiredo@fromdevoid·
You should perhaps develop a bit more in Linux before making sweeping statements that are objectively and factually incorrect. There's nothing special or unique about debugging in any of the top 3 operating systems. Interactive debugging, activity tracing, remote debugging, memory debugging, dump analysers, assembly tracing, record and replay, all these things are staples of modern debugging features everywhere. As are user-friendly features like step back, live memory updates, and whatnot. It's your option if you want to go that line of argumentation. But it's only revealing of what you don't know and not of what Linux can't do.
English
3
0
11
988
Nuno Afonso
Nuno Afonso@nafonsopt·
Nuno Afonso@nafonsopt

This sounds already complicated, like "add their flake", "make my flake", "nixos-rebuild switch". Like all this sounds super complicated for somebody that just wants to run something. Not saying it's bad that it exists, but I shouldn't care as a user. A great example of something done right is Mac rosetta, in which I can just double click an Intel binary - even games - and it just works without any issues on ARM. This is the kind of stuff that Linux should move towards, and thankfully Valve has been doing immense to push Proton for this kind of experience. Even if this nixos was a solution, it needs to be adopted by all distros, because it's meaningless if I need to deliver a software that just works for all Linux users. That's why for me the simplest thing is that glibc compilation needs to be sorted _somehow_, and ppl should just statically link binaries. I'll have a look at what flatpaks are and if they solve this, but I just looked at what they seem to be and it feels like just another "extra thing". Like why do I have to do yaml? Why do I have to tell it how to compile? I don't want complication on my build system. Why does it need to run differently / install? Again a great example is doing fat binaries in Mac, you just do a binary for x64, another for ARM, and then run a command that produces the fat binary with the 2 of them. And it just runs as a normal app, you click and on Intel it runs x64 on M-series it runs ARM.

QME
3
0
0
301
Washi
Washi@washi_dev·
@nafonsopt What's the problem with appimage or flatpak for your use case?
English
3
0
0
262
Nuno Afonso
Nuno Afonso@nafonsopt·
As somebody delivering software for others, I have 2 choices: - provide source so that everybody can compile - provide binaries with old distros so that they target an older glibc for maximum compatibility Having packages in a package manager - which popup like mushrooms - means that _somebody_ has to compile them and set them up for others to use.
English
2
0
2
1.1K
Washi
Washi@washi_dev·
@nafonsopt This seems inaccurate - You don't need to compile everything. Most package manager provide binaries, not source. - XDG/Wayland/DBus define APIs standardized across all distros that all modern apps use. - Still need specific libraries? Flatpak, AppImage, containers and Nix exist.
English
2
0
14
1.4K
Nuno Afonso
Nuno Afonso@nafonsopt·
This sounds already complicated, like "add their flake", "make my flake", "nixos-rebuild switch". Like all this sounds super complicated for somebody that just wants to run something. Not saying it's bad that it exists, but I shouldn't care as a user. A great example of something done right is Mac rosetta, in which I can just double click an Intel binary - even games - and it just works without any issues on ARM. This is the kind of stuff that Linux should move towards, and thankfully Valve has been doing immense to push Proton for this kind of experience. Even if this nixos was a solution, it needs to be adopted by all distros, because it's meaningless if I need to deliver a software that just works for all Linux users. That's why for me the simplest thing is that glibc compilation needs to be sorted _somehow_, and ppl should just statically link binaries. I'll have a look at what flatpaks are and if they solve this, but I just looked at what they seem to be and it feels like just another "extra thing". Like why do I have to do yaml? Why do I have to tell it how to compile? I don't want complication on my build system. Why does it need to run differently / install? Again a great example is doing fat binaries in Mac, you just do a binary for x64, another for ARM, and then run a command that produces the fat binary with the 2 of them. And it just runs as a normal app, you click and on Intel it runs x64 on M-series it runs ARM.
English
3
0
10
959
HSVSphere
HSVSphere@HSVSphere·
For example, if I want to run a program made by someone else with the *exact same* configuration (same glibc, etc) as they have specified, all I have to do is add their flake (the packaging unit of nix code) to my flake (which has my system configuration, and maybe more stuff), and add the package(s) or module(s) or anything their flake provides into my system configuration. Then I run nixos-rebuild switch, and within 10sec the whole system has switched to the new configuration. Building is done automatically if the packages aren't cached, in isolated environments. If the packages require different glibc versions, you'll have all those versions at once, running in parallel. It abolishes the lie that's "installing software" too, so you can do `nix shell nixpkgs#clang` and get clang on your path without "installing" it (it'll get garbage collected when you exit the shell + run the gc command)
English
3
0
7
1.2K
Nuno Afonso
Nuno Afonso@nafonsopt·
@ScottChapman I tried PopOS once in a VM, horrible experience, the whole GUI was nightmareshly slow. It may be that if you use it natively it's good, or you need to push a strong VM, but I remember it being not that bad of a VM (i.e. at least up to 4 of my cores).
English
0
0
0
271