1 (edited by ffh4ck32 2024-07-21 14:26:57)

Topic: Ideas that could improve GNU systems.

Hello everyone!

I have a couple of ideas that could improve GNU systems and, in particular,
Hyperbola. These ideas need discussion, and I also have some questions about
them. The ideas are arranged in the order of their ideal implementation
chronology, but that's already utopian.

1. Standardization of Programming Languages

At some point, I wondered why Python developers make so many stupid changes
with each minor version. Then I noticed that C and C++ have standards, Ruby has
a standard, and why can't Python have a standard to follow and just fix errors
in the interpreter? I asked this question in a Python IRC channel, and it also
concerned how to write books about Python if they become outdated in six
months. A few contributors replied. Some complained that the ISO would do
everything themselves and not listen to people's wishes. But the question that
struck me was, "Don't you want Python to evolve?"... F**k, we need to write
software, not track Python changes. This problem could be solved even without
the ISO and other standardization organizations by thinking through a standard,
for example, PY224 (Python 2024), and if changes in the language are necessary,
just update the standard to PY227. Currently, technically, Python is not a
language.

2. Chains of Writing -> Testing -> Packaging

We need to come up with a software development chain. Here's what happens now:
I am a developer of something (it doesn't matter what), and I have CI/CD
systems, I have a version control system, but I don't have a system for
tracking changes in my project's dependencies, nor a security testing system (I
mean fuzzing). Suppose I am writing a project in C and want the changes in the
libc API that concern my project to be sent to me by email, for example:

From: system.myhost.xyz
To: Me
Subject: Your project X

Developers have released a new version of libc 1.2.3.
Detailed changes: ftp://libc.host.org/1.2.3/ChangeLog.txt

The current version of libc used by your project is 1.1.1:
The following libc entities used in your project have changed:
int strcpy(char *dest, char *src); : Added new error value ERR_XFXF.

To switch to the new version, you need to change the use of the entity in these 
places:
ProjectX/src/srcfileA.c in line 1337
ProjectX/src/srcfileB.c in line 1338
ProjectX/src/srcfileC.c in line 1339

But all this works only if there is a development server, and what if there
isn't? For such cases, we need to think through interfaces for local use. At
the same time, everything described above should adhere to the Unix philosophy.
That is, the fuzzing program is separate, the change tracking system is
separate, and the CI system is separate.

I have thoughts on implementing a change tracking system:
First: every software that provides an API should provide a projectA.api.yml
file (for example). It describes the entire API provided. As a developer of
ProjectX, I add it to the ProjectX/usingapi/projectA.api.yml directory.
Second: I think that tracking the places where the API is used will be
implemented through ctags or something similar. Then the Change Tracking System
- cts.

Now, when I am in my project's directory, I execute:

$ cts news --no-changes-show usingapi/
libc: newest 1.2.3 current 1.1.1
libtls: newest 0.9.0 current 0.8.0
libgmp: newest 1.0.0 current 0.9.1
$ cts to-update "libc" "1.2.3" # What needs to change to update libc from 
current to 1.2.3
*** int strcpy(char *dest, char *src); ***
Description of the API in 1.1.1:
    <short description>
    params:
        ...
    return:
        ERR1
        ERR2
        ERR3
Description of the API in 1.2.3:
    <short description>
    params:
         ...
    return:
        ERR1
        ERR2
        ERR3
        ERR4
    Changes:
        return:
            ERR4
This libc API is used in:
src/file1.c:1337
src/file2.c:1338
src/file3.c:1339
src/file4.c:1340

It doesn't matter if your project is written in C, Bash, or JS; drivers can be
created for cts for any programming language to track dependency changes based
on entities.

Questions:
1) What existing systems can you recommend for CI/CD, fuzzing tools, and CTS?
2) Your suggestions.

3. Idea of Standardizing AI Systems in GNU

Sometimes I imagine using LLM as a standard GNU utility. These thoughts
intersect with thoughts about the Rockchip 3588 chip; I watched a video where
they ran a couple of LLMs on the Orange Pi 5. I think it would be cool to make
a kernel module for working with the NPU, and in userspace, create libai that
would provide an API for working with AI. But I've never even run AI myself.
And as I write this paragraph, I expect you to thoroughly critique my post so I
can think further.

4.Typesetting Language Instead of Heavy LaTeX

This project is related to the fact that LaTeX is simply impossible to use
adequately locally. It's an absolutely non-intuitive system. This project is in
progress, and there are already some developments for the interpreter.

My current projects:
httpoke - a free clone of BurpSuite with full compatibility with HyperbolaBSD,
using FLTK as GUI and libtls from libressl for the HTTPS proxy server.

smile

2

Re: Ideas that could improve GNU systems.

ffh4ck32 wrote:

Hello everyone!

I have a couple of ideas that could improve GNU systems and, in particular,
Hyperbola. These ideas need discussion, and I also have some questions about
them. The ideas are arranged in the order of their ideal implementation
chronology, but that's already utopian.

1. Standardization of Programming Languages

At some point, I wondered why Python developers make so many stupid changes
with each minor version. Then I noticed that C and C++ have standards, Ruby has
a standard, and why can't Python have a standard to follow and just fix errors
in the interpreter? I asked this question in a Python IRC channel, and it also
concerned how to write books about Python if they become outdated in six
months. A few contributors replied. Some complained that the ISO would do
everything themselves and not listen to people's wishes. But the question that
struck me was, "Don't you want Python to evolve?"... F**k, we need to write
software, not track Python changes. This problem could be solved even without
the ISO and other standardization organizations by thinking through a standard,
for example, PY224 (Python 2024), and if changes in the language are necessary,
just update the standard to PY227. Currently, technically, Python is not a
language.

2. Chains of Writing -> Testing -> Packaging

We need to come up with a software development chain. Here's what happens now:
I am a developer of something (it doesn't matter what), and I have CI/CD
systems, I have a version control system, but I don't have a system for
tracking changes in my project's dependencies, nor a security testing system (I
mean fuzzing). Suppose I am writing a project in C and want the changes in the
libc API that concern my project to be sent to me by email, for example:

From: system.myhost.xyz
To: Me
Subject: Your project X

Developers have released a new version of libc 1.2.3.
Detailed changes: ftp://libc.host.org/1.2.3/ChangeLog.txt

The current version of libc used by your project is 1.1.1:
The following libc entities used in your project have changed:
int strcpy(char *dest, char *src); : Added new error value ERR_XFXF.

To switch to the new version, you need to change the use of the entity in these 
places:
ProjectX/src/srcfileA.c in line 1337
ProjectX/src/srcfileB.c in line 1338
ProjectX/src/srcfileC.c in line 1339

But all this works only if there is a development server, and what if there
isn't? For such cases, we need to think through interfaces for local use. At
the same time, everything described above should adhere to the Unix philosophy.
That is, the fuzzing program is separate, the change tracking system is
separate, and the CI system is separate.

I have thoughts on implementing a change tracking system:
First: every software that provides an API should provide a projectA.api.yml
file (for example). It describes the entire API provided. As a developer of
ProjectX, I add it to the ProjectX/usingapi/projectA.api.yml directory.
Second: I think that tracking the places where the API is used will be
implemented through ctags or something similar. Then the Change Tracking System
- cts.

Now, when I am in my project's directory, I execute:

$ cts news --no-changes-show usingapi/
libc: newest 1.2.3 current 1.1.1
libtls: newest 0.9.0 current 0.8.0
libgmp: newest 1.0.0 current 0.9.1
$ cts to-update "libc" "1.2.3" # What needs to change to update libc from 
current to 1.2.3
*** int strcpy(char *dest, char *src); ***
Description of the API in 1.1.1:
    <short description>
    params:
        ...
    return:
        ERR1
        ERR2
        ERR3
Description of the API in 1.2.3:
    <short description>
    params:
         ...
    return:
        ERR1
        ERR2
        ERR3
        ERR4
    Changes:
        return:
            ERR4
This libc API is used in:
src/file1.c:1337
src/file2.c:1338
src/file3.c:1339
src/file4.c:1340

It doesn't matter if your project is written in C, Bash, or JS; drivers can be
created for cts for any programming language to track dependency changes based
on entities.

Questions:
1) What existing systems can you recommend for CI/CD, fuzzing tools, and CTS?
2) Your suggestions.

3. Idea of Standardizing AI Systems in GNU

Sometimes I imagine using LLM as a standard GNU utility. These thoughts
intersect with thoughts about the Rockchip 3588 chip; I watched a video where
they ran a couple of LLMs on the Orange Pi 5. I think it would be cool to make
a kernel module for working with the NPU, and in userspace, create libai that
would provide an API for working with AI. But I've never even run AI myself.
And as I write this paragraph, I expect you to thoroughly critique my post so I
can think further.

4.Typesetting Language Instead of Heavy LaTeX

This project is related to the fact that LaTeX is simply impossible to use
adequately locally. It's an absolutely non-intuitive system. This project is in
progress, and there are already some developments for the interpreter.

My current projects:
httpoke - a free clone of BurpSuite with full compatibility with HyperbolaBSD,
using FLTK as GUI and libtls from libressl for the HTTPS proxy server.

smile

1.
You can set any standard you wish for Python you like.
I saw TempleOS set it's somewhat odd one with what was called "Holy C" or "C+".

https://en.wikipedia.org/wiki/TempleOS

You also do not have to "update" your python each time there is a change in any upstream Python.

I think each time Python updates upstream it could just be a new standard people could use, but you can keep any one you like, or make your own.

2.
I think a virtual machine could help with testing. Also git may help.

You can use git to track anything, so you can also track a file listing the dependencies you wish to use.

I do not know much, if anything, about fuzzing.

You can also look at the repository of the "upstream" developers or ask them to send an e-mail to you. But than the "upstream" developers will also need to know what you are using, and also wish to send an e-mail to everyone who asks.

There may also be "chroot" for somethings.

Each person will also have to wish to use your system, but as some may not wish to, you can track "upstream" by just checking an "upstream" repository.

Here are Hyperbola's packages

https://www.hyperbola.info/packages/

3.

If the AI you wish to use is darknet, I think it may have some non-free "optionally dependencies(as far as now)"

In the src folder there is a cuda.c and a cuda.h file in it. At least last time I checked.

https://pjreddie.com/darknet/install/

https://trisquel.info/en/forum/darknet-floss-program

https://github.com/pjreddie/darknet.git

But there are some problems with "machine learning"

https://www.hyperbola.info/news/hyperbo … or-people/

Rules for teamwork (look at point 12)
https://wiki.hyperbola.info/doku.php?id … t:teamwork

as most systems are trained with non-free material, so the output also may be non-free(as in freedom), and also it may use much more energy than just making code/art/anything yourself.

So it may use less energy, be more easy to license works made under a free license, and also could be even more easy to make things yourself than to train a machine to do it.

I also looked at/tested darknet on Trisquel, and I think it may be more easy and have more accuracy in the end result just to make something myself than to "train" machine learning to do things.

As it is more easy for me just to do things myself than to "train" a program to do it.

Though anyone can program a program to do something without much, if any, extra/non_free data or electricity.

4.
I mostly program or type using ASCII/plain text/html.
Mostly the first two.

What like is to the "Typesetting Language" and is it free as in freedom?

https://gnu.org

Part 5.
Thank you for telling me and others about you current projects.

3

Re: Ideas that could improve GNU systems.

To underline here: Hyperbola has no interest to use any "machine learning" now or in the future. We reject any generated data through "machine learning" as this is in no way created through ethical ways and will never be ethical. So there is also no need to debate this point further. Hyperbola is also no GNU-project. We are oriented on the values and share some common principles with the GNU-project. But in fact we are not further engaging into GNU/Linux or plan doing this. Same for the GNU-project itself!

We want to stay independent as much as possible: Including GNU-packages and projects is the only point where we do such alike. But the rest is to be seen exactly the opposite: Hyperbola GNU/Linux-libre is using the GNU/Linux-libre kernel, therefore the naming-scheme. HyperbolaBSD has no reference further to the GNU-project, following the FSDG nevertheless is by all means our exact statement. But the GNU-project has its own problems to be solved for the moment and in the near future, so we have no further point to engage.

You can surely propose changes in the corresponding projects upstream and engage in further enhancements also for GNU-software or free software in general. But Hyperbola is oriented on its own development: Thanks for the interesting thoughts.

Human being in favor with clear principles and so also for freedom in soft- and hardware!

Certainly anyone who has the power to make you believe absurdities has the power to make you commit injustices: For a life of every being full with peace and kindness, including diversity and freedom. Capitalism is destroying our minds, the planet itself and the universe in the end!

4

Re: Ideas that could improve GNU systems.

Other_Cody wrote:

What like is to the "Typesetting Language" and is it free as in freedom?

I should have typed "link" not "like".

bmkdep in tk Pacman shows

description : NetBSD mkdep: construct Makefile dependency list

so maybe that could also help you keep track of some dependencies.

Also maybe a PKGBUILD for httpoke could be posted at the Packaging Community Groups area

https://forums.hyperbola.info/viewforum.php?id=98

like the other packages at

https://git.hyperbola.info:50100/packages/core.git/

and

https://git.hyperbola.info:50100/packages/extra.git/

have PKGBUILD files.

There is development information at these links

https://wiki.hyperbola.info/doku.php?id … guidelines

https://wiki.hyperbola.info/doku.php?id … guidelines

https://wiki.hyperbola.info/doku.php?id … rds_syntax