• 0 Posts
  • 54 Comments
Joined 1 year ago
cake
Cake day: July 14th, 2023

help-circle






  • WARNING. Everything other than the last paragraph is kind of rude and opinionated, so skip to the bottom if you only want practical advice and not a philosophical rant.

    First of all Free Software don’t need paid developers. We scruffy hackers create software because it’s fun. I have a strong suspicion that the commercialization of Free Software via the businessfriendly clothing “Open Source” is actually creating a lot of shitty software or at least a lot of good software that’ll be obsoleted to keep business going. Capitalization of Free Software doesn’t have an incentive to create good finished software, quite the opposite. The best open source software from commercial entities is in my opinion those that were open sourced when a product was no longer profitable as a proprietary business. As examples I love the ID software game engines and Blender. Others seem happy that Sun dumped the source code of Star Office, which then became OpenOffice and LibreOffice, but then again companies like Collabora are trying to turn it into a shitty webification instead of implementing real collaborative features into the software like what AbiWord has.

    …and back in the real world where you need to buy food. Open Source consultancy, implementation of custom out-of-tree features, support, courses and training, EOL maintainance or products that leaverage Open Source software is my best answer. See Free Software as a commons we all contribute to, so that we can do things with it and built things from it. You should not expect people to pay for Free Software, but you can sell things that take advantage of Free Software as a resource.




  • The C compiler or third party libraries can provide support for parallel execution and SIMD. That article is just used by people in an attempt to argue that C’s strength in being a good low level abstraction is false, which it isn’t. C is the best portable abstraction over a generic CPU that I know of. If you start adding parallel features and SIMD like the article suggest, you’ll end up with something that’s not a portable low level abstraction. To be portable those featues would have to be implemented in slow fake variants for platforms that doesn’t support it. We can always argue where to draw the line, but I think C nailed it pretty good on what to include in the language and what to leave up to extensions and libaries.

    C is not a perfect abstraction, because it is portable. Non portable features for specific architectures are accessed through libraries or compiler extensions and many compilers even include memory safe features. It’s a big advantage though to know Assembly for your target platform when developing in C, such that you become aware fx. that x86 actually detects integer overflow and sets an overflow flag, even though that’s not directly accessible from C. Compilers often implement extensions for such features, but you can yourself extend C with small functions for architecture specific features using Assembly.