Changes between Version 11 and Version 12 of Venux


Ignore:
Timestamp:
May 22, 2024, 8:26:51 PM (4 months ago)
Author:
Thanatermesis
Comment:

proofreaded by ai

Legend:

Unmodified
Added
Removed
Modified
  • Venux

    v11 v12  
    33[[Image(/elive/images/tux-lego.png)]]
    44
     5A '''Venux Operating System''' is something very '''simple to create''' with minimal effort because it is based on its own evolution, just like things in nature. I wrote some design concepts on this page that I believe are the best way to create a functional VOS, '''evolutive''' and '''non-destructive'''. If you want to read a functional/real example, go to the ''History Example'' section.
    56
    6 A '''Venux Operating System''' is something very '''simple to create''' and without much effort because it will be based on its own evolution just like things in nature. I wrote some concepts of design on this page that I think are the best way to create a functional VOS, '''evolutive''' and '''non-destructive'''. If you want to read the functional/real example, go to the ''History Example'' section.
    7 
    8 This document describes how we can '''actually''' build a Venux system. Just don't be impatient, start with something basic and let the computational evolution do the rest.
     7This document describes how we can '''actually''' build a Venux system. Don't be impatient; start with something basic and let computational evolution do the rest.
    98
    109=== Core ===
    11 First of all, you need an operating system to install the software (Venux is only a software, it requires an operating system to work in and with). We have it: GNU/Linux
     10First, you need an operating system to install the software (Venux is only software and requires an operating system to work in and with). We have it: GNU/Linux.
    1211
    1312=== Modularity ===
    14 When I discovered modularity in the software, I then understood that it is the real key to making good software. The modularity principles should be applied always and every time we write big software. All my ideas are based on '''modularity'''. Do not forget that.
     13When I discovered modularity in software, I understood that it is the key to making good software. The principles of modularity should always be applied when we write big software. All my ideas are based on '''modularity'''. Do not forget that.
    1514
    16 The idea of modularity is basically to connect things between themselves. Why is this good? Imagine a car in a single piece. If something breaks or needs to be changed, you need to trash the entire car. But by using modularity (pieces), you can change only the required piece. You can create a better piece, but you need to maintain the compatibility to plug it with the other ones. And if you need to strictly change the method of how it is plugged, then you need to change the piece where it is plugged in too. With modular software, the same thing can happen.
     15The idea of modularity is to connect components. Why is this good? Imagine a car in a single piece. If something breaks or needs to be changed, you need to trash the entire car. But by using modularity (pieces), you can change only the required piece. You can create a better piece, but you need to maintain compatibility with the other ones. If you need to change how it is plugged in, then you need to change the piece it connects to as well. The same thing can happen with modular software.
    1716
    1817=== Pieces ===
    19 We can make all the pieces of the puzzle of Venux in, for example, a big C application. C is good, stable, portable, and is the best-optimized language, but we don't need optimization yet. The system is very new, and to write pieces in C is something pretty time-consuming compared to writing them in other languages.
     18We can make all the pieces of the Venux puzzle in, for example, a big C application. C is good, stable, portable, and the best-optimized language. But we don't need optimization yet; the system is very new, and writing pieces in C is time-consuming compared to other languages.
    2019
    21 So, the pieces need to be simply '''applications''', different applications. Every application (piece) does a different type of task. For example, one application retrieves the data, another one adds the data, another parses the data, another does special calculations, etc. Every application returns data as a result of what was asked.
     20So, the pieces need to be simply '''applications'''. Different applications, each doing a different type of task. For example, one application retrieves data, another adds data, another parses data, another does special calculations, etc. Every application returns data as a result of what was requested.
    2221
    2322=== Plug in Pieces ===
    24 Like in a car, to plug piece A into piece B, it needs to be compatible. For that, every application needs to have a header data of how it works (data asked, data returned, options, etc.) and a version number. Think about it like individual programs that understand if they are compatible with each other.
     23Like in a car, to plug piece A into piece B, it needs to be compatible. For that, every application needs to have a header describing how it works (data asked, data returned, options, etc.) and a version number. Think of them as individual programs that understand if they are compatible with each other.
    2524
    2625==== Example: Plug in Pieces ====
    27 Piece B knows the version number of piece C before it connects to it. If the version number of piece C is higher than that of B, then piece B checks if it is available for an update. If there's an update, then update it and ask its parent if it has an update available too. When there are no updates available, piece B checks if the specs of piece C (header of how it works -> data management) are compatible with it. If not, then it uses the old version of piece C that is still available on the system.
     26Piece B knows the version number of piece C before it connects to it. If the version number of piece C is higher than that of B, then piece B checks if an update is available. If there is, it updates and asks its parent if it has an update available too. When there are no updates available, piece B checks if the specs of piece C (header of how it works -> data management) are compatible. If not, it uses the old version of piece C that is still available on the system.
    2827
    2928==== Version Numbers ====
    30 The version number is simply the actual date (day + time + microseconds). By doing this, we ensure that every time a bigger number means a newer version, never the inverse.
     29The version number is simply the current date (day + time + microseconds). By doing this, we ensure that a bigger number always means a newer version, never the reverse.
    3130
    3231==== Updates ====
    33 An update is a package. They are done automatically and very fast when required.
    34 Old updates are never deleted; they are stored in a historical archive that can be accessed by Venux if needed. Historical versions will only be deleted if they have been inactive for a minimum number of years.
     32An update is a package, created automatically and very quickly when required. Old updates are never deleted; they are stored in a historical archive accessible by Venux if needed. Historical versions will only be deleted after a minimum number of years of inactivity.
    3533
    3634=== Packages Technology ===
    37 Packages need to use the ''NIX'' packaging technology. This is a package system that includes the features of both static and shared libraries, so anything that is compiled and packaged with NIX will NEVER be deprecated. It will always work even if a thousand years pass, and you have multiple versions of a package (application) running in the same system. You can use any of these versions at the same time. Never can a conflict between versions or libraries happen with this technology.
     35Packages need to use the ''NIX'' packaging technology. This is a package system that includes the features of both static and shared libraries. Anything compiled and packaged with NIX will NEVER be deprecated. It will always work, even after thousands of years, and you can have multiple versions of a package (application) running on the same system. You can use any of these versions at the same time, and there will never be a conflict between versions or libraries with this technology.
    3836
    3937=== Evolution ===
    40 Evolution is very simple: Somebody has a better idea for a piece—more efficient, faster, etc.—then writes it and '''presents the proposal/result to the Venux Operating System'''. Venux, like all other things on the Venus world, evaluates the proposal. It does a thousand different calculations of the good things and the bad things to know if it is "good" or "bad" compared with the actual system, the specs, the resources required, and maybe even the ''votes'' from the humans about if they like it or not. If it is accepted, then the operating system includes a new version that will be updated automatically by the system itself. The rest of the pieces will connect to this one if it is compatible, and there is no need to wait for an update too. But everything continues working thanks to the packaging technology, simple as evolution.
     38Evolution is very simple: Somebody has a better idea for a piece, more efficient, faster, etc. They then write it and '''present the proposal/result to the Venux Operating System'''. Venux, like everything else in the Venus world, evaluates the proposal. It does thousands of calculations to determine if it is "good" or "bad" compared to the current system, the specs, the resources required, and maybe even the ''votes'' from humans about whether they like it or not. If accepted, the operating system includes a new version that will be updated automatically by the system itself. The rest of the pieces will connect to this one if it is compatible, and there is no need to wait for an update. Everything continues working thanks to the packaging technology, as simple as evolution.
    4139
    4240=== Communication ===
    43 The pieces need to use a standard method of communication. The communication is also just another piece of the modularity. When the communication system evolves to something better, its version changes and its specification changes too if needed. Then all the pieces that use communication (almost all of the Venux system) know that they need to be updated before they can use the new communication protocol.
     41The pieces need to use a standard method of communication. The communication system is also just another piece of the modularity. When the communication system evolves to something better, its version changes, and its specifications change if needed. All pieces that use communication (almost all of the Venux system) know they need to be updated before they can use the new communication protocol.
    4442
    45 As explained in the ''Packages Technology'' section, the Venux system can work with both communication protocols at the same time while there are any pieces that still need to use the old protocol and have not been updated yet.
     43As explained in the ''Packages Technology'' section, the Venux system can work with both communication protocols at the same time. This continues until all pieces using the old protocol are updated.
    4644
    4745=== Interface ===
    48 The interface is just another piece. It is a layer between the computer and the human to communicate in the best way possible. This piece is connected with the pieces that communicate with the data by the communication and also by using the communication it is shown to the human.
     46The interface is just another piece. It is a layer between the computer and the human to communicate in the best way possible. This piece is connected with the pieces that communicate with the data and is shown to the human through the communication system.
    4947
    50 The Evolution rule will use the best interface too. For example, first it will exist in a command-line interface, then somebody will propose a better one graphically. The evolution of the system will use the graphical one after the required pieces are connected to the new one. Then later, an interface that is easier to manage or with more possibilities appears, same process... etc.
     48The Evolution rule will use the best interface too. For example, it will start with a command-line interface, then somebody will propose a better graphical one. The evolution of the system will use the graphical one after the required pieces are connected to the new one. Later, an interface that is easier to manage or has more possibilities may appear, and the same process will follow.
    5149
    5250=== History Example ===
    53 First version of the Venux system: there are 3 bash scripts that were written by somebody in less than a day. They are:
     51The first version of the Venux system has three bash scripts written by somebody in less than a day:
    5452 * data-get
    5553 * interface
    5654 * data-add
    5755
    58 They are very basic and work in a very simple way. Running the interface, you will have 2 options: to get data and to add data. For example, we add the data ''gold'', then we add its specs (composition, category, atomic weight, heat fusion, etc.), and we also add silver. Then later we want to know the specs of the gold and we use ''data-get''. It works, very simple and functional.
     56They are very basic and work simply. Running the interface, you have two options: to get data and to add data. For example, we add the data ''gold'', then we add its specs (composition, category, atomic weight, heat fusion, etc.), and we also add silver. Later, we want to know the specs of gold, so we use ''data-get''. It works, very simple and functional.
    5957
    60 Later, somebody adds a new piece that gets all the data stored on Wikipedia, parsing the HTML pages and getting the values of every element of this world.
     58Later, somebody adds a new piece that retrieves all the data stored on Wikipedia, parsing the HTML pages and getting the values of every element of this world.
    6159
    62 Later, somebody adds a new piece that calculates the impact of every piece with nature.
     60Later, somebody adds a new piece that calculates the impact of every piece on nature.
    6361
    64 With this idea, somebody creates a piece of choices calculation. For example, we need the best material to use in the sea. The Venux system will calculate the best choice, an abundant material for the actual needs. It also does calculations of future probability needs that are considered too. It checks the resistance of the material with the salted sea, the impact on nature, etc. So this piece shows the best choice possible, a lot better, faster, and more efficient than a human with studies.
     62With this idea, somebody creates a piece for choices calculation. For example, if we need the best material to use in the sea, the Venux system will calculate the best choice: an abundant material for the current needs. It also calculates future probability needs, checks the resistance of the material with saltwater, the impact on nature, etc. This piece shows the best choice possible, much better, faster, and more efficient than a human with studies.
    6563
    66 Later, we see that the system becomes very slow by retrieving data because we have a lot of data and we have made ''data-get'' in a very fast way. We just wanted it ''working''. Then somebody creates a better way to store data, compressed data, sorted alphabetically, etc. At the same time, someday somebody will present again a new version of ''data-get'' with a lot more optimized algorithms for faster searches. Then again, a future day, somebody will present a better algorithm that uses probability and usage statistics to retrieve the data even faster, etc.
     64Later, we see that the system becomes very slow at retrieving data because we have a lot of data and we made ''data-get'' quickly; we just wanted it ''working''. Then somebody creates a better way to store data: compressed, sorted alphabetically, etc. Eventually, somebody will present a new version of ''data-get'' with more optimized algorithms for faster searches. In the future, somebody will present an even better algorithm using probability and usage statistics to retrieve data even faster.
    6765
    6866Somebody creates a piece to back up all the data, just like the pieces and everything.
    6967
    70 The interface changes to something better. We can now use '''tags''' and other special features. But for that, we need to update also ''data-get'' and ''data-add'' to use tags too. The interface is presented and accepted, but until there are ''data-add'' and ''data-get'' compatible with the new version of the ''interface'' using ''tags'', it will not be used. Somedays later, somebody finds that the tags are added to the new elements but not to the old elements and writes a new version of ''interface'' that requests to add tags when the element doesn't have any yet. This version of the ''interface'' is updated but has not changed its compatibility, so it is directly used by Venux.
     68The interface changes to something better. We can now use '''tags''' and other special features. But for that, we need to update ''data-get'' and ''data-add'' to use tags too. The interface is presented and accepted, but until ''data-add'' and ''data-get'' are compatible with the new ''interface'' version using ''tags'', it will not be used. Some days later, somebody finds that the tags are added to new elements but not to the old elements and writes a new version of ''interface'' that requests adding tags when the element doesn't have any yet. This version of the ''interface'' is updated but has not changed its compatibility, so it is directly used by Venux.
    7169
    72 The data is stored in XML, which is slow to parse. Then somebody writes a piece that converts all the XML data to something more binary, faster to search by ''data-get''. Someone also writes a feature in ''data-get'' to be compatible with the new structure of the data, and some days later, writes another piece that manages the XML as the original ones, updating the binary versions when the XML is updated.
     70The data is stored in XML, which is slow to parse. Then somebody writes a piece that converts all the XML data to something more binary and faster to search by ''data-get''. Someone also writes a feature in ''data-get'' to be compatible with the new data structure, and some days later, writes another piece that manages the XML as the original ones, updating the binary versions when the XML is updated.
    7371
    74 Some time later, it is found that the binary form can't manage some special features of the XML version. We can still go back to the XML version while the new version of the binary form is being rewritten.
     72Some time later, it is found that the binary form can't manage some special features of the XML version. We can still go back to the XML version while the new version of the binary form is being re-written.
    7573
    7674=== Main Feature Concepts ===
    77  * Filesystem: BTRFS or an
     75 * Filesystem: BTRFS or an equivalent filesystem with special features like snapshots, subvolumes, object-level mirroring and striping, checksums (integrity) of data, incremental backup, filesystem mirroring, etc.
     76 * Development: Use '''GIT''' because it is much more advanced than other distributed version control systems.
     77 * Database: Initially, we need a good way to manage data. I recommend using plain text files since they are the easiest to manage, hack, and convert. We can migrate to databases or other solutions in the future when needed.
     78 * Languages: Since everything is modular at the application level, we can use any language. Sometimes we need optimization (C), and sometimes we need to code quickly (
    7879
    79  equivalent filesystem with a lot of special features like snapshots, subvolumes, object-level mirroring and striping, checksums (integrity) of data, incremental backup, fs mirroring, etc.
    80  * Development: Use '''GIT''' because it is a lot more advanced than the other ones as a distributed version control system.
    81  * Database: We need, in the start, a good way to manage the data. I recommend using just plain text files since it is the easiest to manage, hack, and convert. We can migrate it to databases or other things in the future when required.
    82  * Languages: Since everything is modular at the application level, we can use any kind of language. Sometimes we need optimization (C) and sometimes we need to code it quickly (Python). The evolution will do the rest.
     80Python). Evolution will handle the rest.
    8381
    8482=== EXTRA ===
    85 When creating the Venux system, we need to remember the rules of the ''Art of Unix Programming''. Don't take it as a joke. [http://www.faqs.org/docs/artu/ch01s06.html These rules] are full of wisdom and '''essential''' for a correctly made Venux system. If you like them, [http://www.faqs.org/docs/artu/ the full book is a good read too].
     83When creating the Venux system, we need to remember the rules of the ''Art of Unix Programming''. Don't take it as a joke. [http://www.faqs.org/docs/artu/ch01s06.html These rules] are full of wisdom and are '''essential''' for a correctly made Venux system. If you like them, [http://www.faqs.org/docs/artu/ the full book is a good read too].