• 2 Posts
  • 23 Comments
Joined 1 year ago
cake
Cake day: June 1st, 2023

help-circle
  • Yep, streamlining the process to write a new compiler. Most compiler development utilize something like Bison/Flex or by handwriting their own lexer/parser, but those things doesn’t generate AST tree and you still have to read/modify that AST tree before reading it to generate the final resulting code.

    The sheer absurdity in scale of development increases when you realizes that you also have to do the same for LSP server.

    Melosynthos is came up with to think about streamlining all of this in one unified workflow.



  • Yeah, but when someone is completely new to programming, it’s best to start somewhere easy where there are quite a lot of tools to help them fix bugs in code. In C# IDE, it have a lot of visual indicators to help them identify bugs, debugger is pretty comprehensive and integrated, and there are quite a lot of resources to introduce them to programming in forms of videos and documentations and community. The goal of learning C# is not to only program C#, but to get them acquaintances with general programming such as for loop, memory management like using disposal in C#, recursion functions and so go on. They can use C# as a starting point to just basic programming and then once they are comfortable, they can move on to other language that they are curious about.


  • One of the thing I recommends is to start small. Going from Python to C is quite a leap, because C language requires some fundamental computer science understanding when you write codes that offers no railing or safety net when you make mistakes. I would actually suggests that you start with C#, it is very forgiving when you make a mistake and have various tools to help you identify the bug in your program.

    Big part of C# is that there is available video tutorial on an introduction to C# provided by Microsoft and it have subtitles. The biggest reason why I would recommend C# to beginner is simply that they offers a lot of resources to help beginners understand the fundamental of programming in general. They have tons of books, video tutorials, vibrant community, and so forth. Also C# can run on wide range of platforms, Windows, Linux, Mac OSX, Raspberry Pi, and so forth. Once you master C#, you’ll find that a lot of the knowledge you gained from it is transferable to C, C++, Rust, DLang, and so forth.



  • That’s an interesting dilemma when you bring up Android. I have always considered android device as a hardware compromised device and that it shouldn’t be used for highly confidential data to an extent that you might be using PGP/GPG for.

    But you could have all of your PGP/GPG centrally managed on a Linux system with android device having it’s own unique keypair that is signed by your root PGP/GPG keypair on your Linux system. As for software for managing GPG/PGP on Linux system, I just simply use KGPG which does the job plenty well. If you have to use PGP/GPG on Android Phone, then I recommend sticking with f-droid repository for PGP/GPG key management app, not Google Play Store.

    OpenKeychain Source Code

    OpenKeychain Package on F-droid

    Few use-cases for GPG/PGP on android is encrypting email or chat, but application integration is limited to select few software like K-9 Mail or Conversations.

    –Edited to add–

    Why the heck did server spam duplicates of my comments? :(


  • Currently early atm, but generally, I got the backend code sorted out where we have cross-platform windowing context, vulkan code, accessibility protocol, and so forth. The challenges are the front end GUI, making it looks pretty, it’s still have a way to go.

    And of course the documentation which is still WIP. I wrote other docs sometime like this for C language development community which I have put off for a while since I worked on few projects:

    1. Finish making deliverable for AI Framework to replace Pytorch/Tensorflow that uses IREE Compiler for my client. (IREE Compiler basically takes in your MLIR code and compile that to either SPIR-V shader code, CUDA code, ROCm, or anything else really rather than just mainly CUDA on Pytorch/Tensorflow.) I should have this done by tomorrow, it just making a web for my client that is 90% done and I just have to plug my AI into it.
    2. Work on Melosynthos which is basically a Compiler Generator, it’s about 60% done and can help a lot on building unit tests for GUI Toolkit.
    3. Finish up GUI Toolkit and try to make GUI that takes some inspirations from this
    4. Finish up documentations for that GUI Toolkit
    5. Build a web to demonstrates GUI Toolkit and let people go nut with it.

    The best part is… I solo-develop all of it… facedesk


  • I don’t think it’s that revolutionary, but there are some things that doesn’t exist in current GUI Toolkit worlds.

    The GUI Toolkit I wrote utilize few things:

    1. It runs on Vulkan and the pipeline use custom developed 2D rendering context, not 3D so there is a significant boost in performance and reduction in computation requirements on both GPU and CPU. Vulkan allows GUI to work on just about any devices made in the last decade and can fallback on CPU using Swiftshader.
    2. I established FFI-JSON to simplify binding for any programming languages to bind to my GUI Toolkit as well as extending the GUI Toolkit itself.
    3. Designed for Buffer-based controls - If you want to load up a 2GB text file into a textbox, it offers a way that it would work without freezing up the program.
    4. Accessibility protocol in IPC - Similar to DBus, but documentations are provided to simplify the process of utilizing such protocol and it’s focusing on cross-platform conventions where Dbus might not be available.
    5. Library itself is Cross-platform and written in C Language, enabling the larger cross-section of compatibility
    6. The project is built for IR linkage purposes hence why the code should be open source, because the code is already open by IR anyway. By offering IR linkage by default rather than Object files or dynamically linked library, IR allows everyone to gain immense performance boost through compiler’s features of auto-vectorization, dynamic dispatch converting to static dispatch when possible, internalization pass and more aggressive dead code eliminations. It’s not unusual to see a 80% reduction in code size through this process and see as much as 10x performance improvement compared to dynamically linked libraries.
    7. Conventions for stylizing/theming the GUI through CSS (the goal is to offer a permanent theming capability in GUI even though it can be a challenge to maintain.)

    That on top of my head, I wanted to have a GUI that focuses on making it easier to extend while keeping it conventional for those familiar with Windows Forms on Microsoft Windows and eventually WPF if time allows.

    That the gist of why I wrote my GUI Toolkit and I have spend 4 years working on it, it’s reaching the point that it could be ready for prime time basically.

    The licenses you brought up is interesting and it could work too.






  • That a pretty interesting license, I distinctly remember that there were an argument on the internet over that license. So I took the time to review what happened, there were few criticisms for it:

    Conflict over “Open Source” Definition - Open source license must allow the software to be freely used, modified, and shared. The SSPL adds additional restrictions, particularly the requirement to open source not just the software itself but also the software used to offer the program as a service.

    Restricts Freedom to Use the Software - It requires that anyone who makes the software available as a service must release the source code for their entire stack.

    But none the less, this license is an interesting one and an inspiration could be drawn from it to not go to that extreme stipulated by SSPL, but to have some lines drawn to address some of the concerns around AGPL loopholes.





  • Absolutely, your understanding mirrors mine. The re-licensing process is a complex one, particularly in the context of FOSS projects with multiple contributors. It requires unanimous agreement from all contributors, unless a Contributor License Agreement (CLA) or Copyright Assignment Agreement is already in place, which can simplify the process.

    As for the scenario where a distro continues to maintain a hard fork of the project from the point before re-licensing, it’s certainly possible. However, as you pointed out, it would place a substantial burden on the distro in terms of resources. They would need to maintain and update the code independently, which might not be feasible or desirable.

    In regards to the proposed license conditions, “Sources must be publicly available if repackaged” or “Cannot be packaged for sale”, it’s worth noting that the first one is already embodied in the principles of GPL/AGPL. The second proposal, however, raises more complex considerations. This approach would indeed help address the issue of commercial exploitation that I initially raised. But as you’ve mentioned, the challenge lies in navigating the re-licensing process.

    If a FOSS project is already licensed under a different license, a re-license would require obtaining permissions from all contributors, which might prove to be a logistical challenge. Therefore, any change in the licensing model needs to be thought through carefully, taking into account not only the potential legal complexities but also the broader implications for the open-source community.

    Disclaimer that I’m not a lawyer.