corepup

A home for all kinds of Puppy related projects
Message
Author
User avatar
nosystemdthanks
Posts: 703
Joined: Thu 03 May 2018, 16:13
Contact:

#616 Post by nosystemdthanks »

there are of course, a few hurdles to this.

first, the code is very messy right now. im working on that, it can be a lot nicer than it is.



also, it requires a second tool. it requires python and a language translator. the language translator is 60k, the tool itself is 40k, if you put both together into a bundle its still half the size of isomaster-- though thats before you include python.



after you edit the code (or leave it unedited to produce the default) it translates (technically it compiles) like this:

fig46.py mcorepup01.fig
# takes about 2 seconds

./mcorepup01.fig.py
# takes about 30 to 60 seconds to change coreplus into corepup

i intended by the way, to upload it with addpackages having your name only.

its set to addpackages = "wanderer figosdev" but i meant to set it to addpackages = "wanderer" before uploading.



this will make it easier to tell what changes i make, though honestly i designed it to be uploaded with only the parts that youve done.

one thing about the way this works is that you can "adopt" other peoples changes like this:



if theres a section by another person like me:

change = changeforwhom addchanges "figosdev"



you can adopt it to your own (official) changes like this:

change = changeforwhom addchanges "wanderer" # originally figosdev



this way people who dont want all my changes will still get the ones you think should be in the official build. one thing my changes do is add python to corepup. python is sort of large, so if you remove "figosdev" from the addpackages line at the top:



addpackages = "wanderer figosdev"

addpackages = "wanderer"



the second line overrides the first.

this can do everything isomaster does, and it also makes the iso hybrid, so you can just dd to the iso to usb.

but if i work the kinks out, it can even change the core for you. i dont know why that part didnt work already, i did look at mkcore though i was tired when i decided to just go with a copy of core.gz rather than worry what was stopping it from rebuilding core.gz.

considering how small the changes are, it would be so cool to find and fix the bug in cd /mnt/mcorepup/core ; zcat /mnt/mcorepup/coreplus/boot/core.gz | sudo cpio -i -H newc -d

have fun. ive used this tool on puppy tahr and refracta originally, librepup, void linux and others. i originally created it for automatically mixing two distros together.

theres a manual for the language here: https://www.pdfhost.net/index.php?Actio ... 7b2af4316b

skip the introduction and skip everything that doesnt seem relevant. skip the whole manual if you like; it exists, now you know.

the language has fewer than 100 commands. i would be happy to create a version of the manual that only includes the ones used in mcorepup, maybe i will do that today.
[color=green]The freedom to NOT run the software, to be free to avoid vendor lock-in through appropriate modularization/encapsulation and minimized dependencies; meaning any free software can be replaced with a user’s preferred alternatives.[/color]

wanderer
Posts: 1098
Joined: Sat 20 Oct 2007, 23:17

#617 Post by wanderer »

hi nosystemdthanks

holy cow

its like a mini woof-ce for corepup

you are the guru


wanderer

User avatar
nosystemdthanks
Posts: 703
Joined: Thu 03 May 2018, 16:13
Contact:

#618 Post by nosystemdthanks »

wanderer wrote:its like a mini woof-ce for corepup
in a language that is much friendlier than bash. sure, 50% of it is bash anyway.

the parts that arent bash have optional punctuation.

"strings must have quotes" and # hashes make comments

() these are optional
; : these
| this



for mcorepup im working on space-space-semicolon-space-space between commands, and (parentheses) only for function arguments in function definitions.

thats just to keep it simple, but you dont have to use either of those.


you are the guru
my approach is really a lot like yours-- keep things as simple as possible.

even complex things, when possible.

when i was about 5 i taught myself to code in basic using this book: https://www.ebay.com/itm/IBM-Hands-On-B ... 2322446909

it was ridiculously easy:

10 color 10
20 print "hello world" : color 9
30 print "hello world" : goto 10

i tried to imagine something easier.

while
now colortext 10 : "hello" : print
now "hello" : colortext 9 : print
wend



in python this is:

while 1: print "\x1b[1;32mhello" ; print "\x1b[1;34mhello"

but i always think of the little boy learning basic in the 80s when i design things. granted, bash is a little complex compared to the dos commands i learned then.

i thought of some things in the 80s that werent as practical until now. for example, i thought it would be cool if arrays could be addressed by string instead of index. python dictionaries do that.



mcorepup is half a week of adapting the latest mkfigos to work with corepup. mkfigos is 2 years of adapting it to a few different distros.

it can do much, much more. a lot of the code that could be used (or removed) lets it download void binaries. void is the opposite of tinycore; tinycore archives 6.x packages, while void changes packages from month to month. hence the "vpa" routines-- but you only need them if you want to download void packages. (a feature added in the past few weeks)

other code can modifies things in the core or--

the next feature id like to work on is something that builds simple corepup-style tczs.

like tell it paths and filenames or urls and it will build those into simple tcz and include in /cde/optional.



id also like a better routine for changing onboot.lst more dynamically.

your ideas are very welcome if you want to throw some in too. i cant promise to code them, though your ideas for mcorepup are welcome.

youre also very free to adapt it into your own version of mcorepup.

i make one for each distro. for example, this one makes corepup-6. it is 53k.

i daresay for corepup-7 i can make another mcorepup for that.

id also like to build corepup.tcz ; right now it just adds it, but id rather have it build it.

id like to keep it as simple as possible. even complex things.

if you want to make your own version and split it into different programs you can do that too, im happy to help you do that. i like it as one program, though perhaps you imagine it a different way. thats cool. cheers.
[color=green]The freedom to NOT run the software, to be free to avoid vendor lock-in through appropriate modularization/encapsulation and minimized dependencies; meaning any free software can be replaced with a user’s preferred alternatives.[/color]

musher0
Posts: 14629
Joined: Mon 05 Jan 2009, 00:54
Location: Gatineau (Qc), Canada

#619 Post by musher0 »

To make it clear: ;)

(Beginning of joke)

You guys are so spaced out that you are writing everything double-spaced, eh? :lol:
My eye-sockets should be presenting an official complaint shortly... :lol:

(End of joke)

~~~~~~~~~~~~~~~

Careful with those attempts at character assassination targeting bash. As a dynamic
language, bash is excellent and hard to beat, It even has features that static languages
can't offer.

But congratulations on the good progress! When can we except to see screen captures?
Last edited by musher0 on Sun 08 Jul 2018, 18:23, edited 1 time in total.

User avatar
nosystemdthanks
Posts: 703
Joined: Thu 03 May 2018, 16:13
Contact:

#620 Post by nosystemdthanks »

musher0 wrote:But congratulations for the good progress!
thank you. also please note, theres 40 pages of this stuff. in practical terms, the time to complain was before it became the de-facto standard...

but i know people like wanderer, its talk to him like this or dont talk to him-- this is what works. to some degree im like that too. i spotted his text and thought "yep, one of us."

with that said:

"nous sommes désolés pour l'inconvénient"
[color=green]The freedom to NOT run the software, to be free to avoid vendor lock-in through appropriate modularization/encapsulation and minimized dependencies; meaning any free software can be replaced with a user’s preferred alternatives.[/color]

wanderer
Posts: 1098
Joined: Sat 20 Oct 2007, 23:17

#621 Post by wanderer »

hi nosystemdthanks and musher0


i know musher0
i get a lot of complaints
its just easier for me to read and write this way
sorry


nosystemdthanks

i feel what you are doing with your script is very important

not just for corepup

but for puppy tinycore and the linux community

these are very useful ideas
and can improve things for everyone

i will just follow along as best i can
you are way above me
like i said a woof-ce for corepup

and i feel your script
and the ideas of corepup
will be of benefit to everyone

i will watch in awe

wanderer

User avatar
nosystemdthanks
Posts: 703
Joined: Thu 03 May 2018, 16:13
Contact:

#622 Post by nosystemdthanks »

wanderer wrote:
and i feel your script
and the ideas of corepup
will be of benefit to everyone

i will watch in awe
oh, it would be fun if you were right. the truth is, i think the entire concept of a distro is beginning to limit the number of people interested in gnu/linux.

distros create boundaries that make some people comfortable. others feel like "if it could just do this..." but they dont know how.

giving people tools to help people learn how to get power over their computing is great, because computing is more and more ubiquitous. first it was a living room thing, now its in your pocket. (probably a bad place to keep it, by the way.)

the best thing i think we can do is give people more places to start. then try not to keep them from going in whatever direction they want to.

linux itself (the kernel) started with the words:
I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones. This has been brewing since april, and is starting to get ready. I’d like any feedback on
things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).


originally he wanted to call it "freax"; he thought the name "linux" was too egotistical. obviously, people convinced him to go with it.

you said your efforts would be something for (better) developers to laugh at. to me, thats the right attitude. not because of the modesty, just because as long as you can convince yourself of that, it will keep you from making decisions that complicate things where they dont need to be complicated.

the truth is, this goes beyond software. what we do is really about software, about personal freedom (ours and everyones) and about education-- making tools that are easier to teach and easier to learn.

not that people shouldnt make other tools with greater sophistication. if i spent more time with woof, id probably prefer configuring and compiling a kernel with woof than doing it without.

i do however, think pure bash is a language that makes it very tedious to maintain things of that size. python too, has disadvantages.

i have a post where i talk about creating a special, simple language just for remastering distros. is fig that language?

no, mcorepup didnt even start as a tool for remastering. it started as a tool to compare hundreds of different puppy linux versions, and produce a large automated report (so that you could learn about all puppies at the same time.)

give people more places to start. be more open to people trying different things-- and when you can, inspire someone or recognise them.

mkfigos would exist if you had not made corepup. mcorepup would not! so when youre feeling awe, remember its your work that inspired it-- your ideas about making tc friendlier that got us here.

of course you do this all the time, as people have noted in this thread. and you say i am the guru-- ha!

ok, id be happy to stay at your feet a while but if i stay too long, people will mistake the thread for a love letter. so cordially and formally then: "all the best." cheers. im going to work on that shorter manual now.
[color=green]The freedom to NOT run the software, to be free to avoid vendor lock-in through appropriate modularization/encapsulation and minimized dependencies; meaning any free software can be replaced with a user’s preferred alternatives.[/color]

wanderer
Posts: 1098
Joined: Sat 20 Oct 2007, 23:17

#623 Post by wanderer »

i hear you man

but do not underestimate the importance
of a script that builds things
it makes complex things accessible to everyone

thats why woof-ce is so fascinating to people
push a button and out pops your creation

i (and im sure a lot of people who are reading this but not posting)
appreciate what you are doing

now let us all work together for the common good

wanderer

wanderer
Posts: 1098
Joined: Sat 20 Oct 2007, 23:17

#624 Post by wanderer »

hi all

i have uploaded the corepup-7.iso
to the smokey01 site

i am posting this using it now

this is a minimal corepup iso
cut down as much as it can be
without removing essential stuff

only 15 m

it has
xvesa
the corepup core.gz
corepup-jwm and corepup.jwmrc
the corepup logo
wbar
and some settings

it does have aterm and an editor

it can be unmounted
and removed
so the cd drive is available
to erase and burn cds

no wireless
no alternative desktops
no emelfm leafpad or dillo

however if you have wired internet
you can download what you want
and have a full system
by adding tcz to the cde or tce directories

if you need wireless already set up
use the corepup-6.iso

have fun

wanderer

User avatar
nosystemdthanks
Posts: 703
Joined: Thu 03 May 2018, 16:13
Contact:

#625 Post by nosystemdthanks »

wanderer wrote:
this is a minimal corepup iso
cut down as much as it can be
without removing essential stuff

only 15 m
and a script to create it: http://murga-linux.com/puppy/viewtopic. ... &id=117594

will i create a version of mcorepup for every version of corepup? unlikely. if youre going to do a corepup every week, im probably going to let versions of corepup go by.

keep up the good work.
[color=green]The freedom to NOT run the software, to be free to avoid vendor lock-in through appropriate modularization/encapsulation and minimized dependencies; meaning any free software can be replaced with a user’s preferred alternatives.[/color]

User avatar
greengeek
Posts: 5789
Joined: Tue 20 Jul 2010, 09:34
Location: Republic of Novo Zelande

#626 Post by greengeek »

nosystemdthanks wrote:distros create boundaries that make some people comfortable. others feel like "if it could just do this..." but they dont know how.

giving people tools to help people learn how to get power over their computing is great
Very true. This is the exact reason why Puppy became the one Linux I was able to stay with.

Basically - Puppy was successful at booting my hardware, then I discovered it contained all those "wizards" that let me make progress on setting it up the way I wanted.

This is what i found was missing each time i went to try the original Tinycore - no wizards to help the uninitiated to go further than a boot - you had to reach a critical mass of technical understanding before you could work out how to add a new function.

I still feel that Puppy should make further progress in the area of "wizards". Modularity should not stop at the concept of plugging in sfs files. Every aspect of puppy should be driveable and configurable through a wizard. You want persistence? - then run the persistence wizard. You want to format a usb drive? - then run the disk format wizard. You want to discard all of the firmware files that are not in use in your current system? - then run the firmware wizard.

Sure - many functions are built into utilities rather than "wizards" - but they only become helpful later once you know what to look for.

IMHO Corepup will benefit from any method that makes it easy for a user to find the plugin function they want. Doesn't matter too much if a function is written in python, basic, bash, C++ or whatever - as long as it is wrapped in something that flags it's function to the user (ie a wizard label or wizard gui)

Each building block - or "wizard" - should be well labelled, easy to find, and preferably as non-technical as possible.

Just my 2c.

cheers!

wanderer
Posts: 1098
Joined: Sat 20 Oct 2007, 23:17

#627 Post by wanderer »

hi greengeek

thanks for your interest and input

wizards are great

but

I don not have the expertise to write scripts of that caliber

only the puppymaster barry k and his disciples the puppy gurus
possess this great power

another reason is that if you run a script
you don't know what is going on

and one part of this project is to try to learn how things work
so that you can come up with your own modifications

so my solution is to try to write howtos for each topic
and to have this thread and the tinycore forum as backup

I have learned a few things as I have gone along
and if I can learn the basics I think anyone can
I think if people give it a try they will find it is easier than they think

keep the faith

wanderer

wanderer
Posts: 1098
Joined: Sat 20 Oct 2007, 23:17

#628 Post by wanderer »

hi nosystemdthanks

there wont be many corepup isos overall

most mods will be through the corepup-mods files

thanks for all your help

wanderer

User avatar
nosystemdthanks
Posts: 703
Joined: Thu 03 May 2018, 16:13
Contact:

#629 Post by nosystemdthanks »

greengeek wrote: I still feel that Puppy should make further progress in the area of "wizards". Modularity should not stop at the concept of plugging in sfs files. Every aspect of puppy should be driveable and configurable through a wizard. You want persistence? - then run the persistence wizard. You want to format a usb drive? - then run the disk format wizard. You want to discard all of the firmware files that are not in use in your current system? - then run the firmware wizard.
i dont think this is unreasonable. its part of what makes puppy puppy.

i could make you a disk format wizard and a discard firmware wizard tonight. however when it comes to such tools, this forum can be fiercely competitive. id feel like an idiot if i spent time making those tools, because someone would just come write a better one.

id probably just make a text version (blah, half the point of the wizard is a gui right?) and then slap yad on it to make it a "gui." sure, i could use gtkdialog.

i guarantee if wanderer got some really good tools for this, someone would just remaster it with other ones. which is great, i wonder how much that frees up wanderer to make tools that are simple and minimal, knowing that if corepup gets lots of users that theyll just add their own favourites to it.

i know there are people who have made similar tools for puppy over the years. i bet if people recommended them, wanderer could choose them and possibly adapt them to corepup.

so could i. but this is a matter of taste, and rather than "become fashion" id prefer to let someone who appreciates the finer things to run that show. does wanderer adapt puppy tools?

i highly recommend going with tools that the community made-- just because its probably more modular then-- as someone who found out what it takes to run petget somewhere else. and thats just basic functionality-- installing pet packages and giving you the gtkdialog that says "ok" or "cancel"

i imported petget to refracta, but it pulls in a lot of other stuff just to get to the point where it works at all.



the part about distros creating boundaries that make people comfortable is to acknowledge that such people exist and want to be catered to. i dont have anything against those people, or anything against catering to them. that is certainly one of puppys goals.

however, its years since those people are the driving force behind puppy design. im not saying thats a good thing or a bad thing.

whats driving puppy along is mostly the urge for people to redesign things for themselves.

whether wanderer makes a puppy thats easier to customise, or a tinycore thats friendlier or both-- i dont know if he has noticed the change but heres something to consider:

in 2006, ubuntu was new and it was easier to find a pc that it ran really slow on. i design my distro specifically to avoid more e-waste, but very few distros are nice on a pentium ii. im running corepup right now on an above-average p4.

puppy was so much faster than ubuntu, though ultimately i had an easier time with dsl. why? design choices.



for all the wizards, dsl (smaller than puppy, even then) supported the network card i tried to buy out of the box, while fiddling and frustrating trying to make puppy work with it for hours on end. it just wasnt in the kernel, and i didnt know what to do about that. i was very new to this stuff.

for me, dsl just worked-- not that it was as much fun as puppy. there was no wizard to run, all i had to do was attach the hardware and now i had an network card (this was for a laptop that didnt have ethernet.)

im sure it would be interesting (and piss people off) if i started to point out the real direction puppy design (community wise) is going in. i dont think its bad, its interesting.

above all, its different. the niche that puppy took care of in 2006 isnt the same i dont think. people have faster computers, more ram, i was helping people a 4 or 5 years ago refurbish "old junk" with debian. i only stopped doing that because of disgust with the new debian. the new puppy is alright-- puppy is the same, the community is simply higher tech now.



i suppose the best person to make those wizards would be the person who made them and hoped they would be incorporated in woof, but they werent. if someone had wizards they wanted included in corepup, they should recommend them and i hope wanderer will consider them.
[color=green]The freedom to NOT run the software, to be free to avoid vendor lock-in through appropriate modularization/encapsulation and minimized dependencies; meaning any free software can be replaced with a user’s preferred alternatives.[/color]

wanderer
Posts: 1098
Joined: Sat 20 Oct 2007, 23:17

#630 Post by wanderer »

hi all

corepup is not puppy
and i think the only person who can say what puppy is
is its creator barry k

corepup is not meant to compete with or replace puppy
i started this thread (on the puppy forum)
simply to introduce some of the ideas of tinycore
(which are similiar to what i was working on called rampup)
to the puppy community

notably
true minimalism and modularity
adding and removing components at will
and
using symlinks instead of unionfs

i am using (and hopefully developing) corepup for my own reasons
but i hope it will be of interest and use
to others in the puppy community

i however do appreciate any help that is given
and that includes a big thank you to nosystemdthanks
and others who have helped me

if anyone wishes to contribute in any way
in the future
that would be appreciated as well

wanderer

wanderer
Posts: 1098
Joined: Sat 20 Oct 2007, 23:17

#631 Post by wanderer »

i do have one question though

why is anyone interested in corepup at all ?
why not just use one of the puppies presently being developed
and not even read this thread ?

if anyone has the inclination
please post your answer
i really am interested

wanderer
Last edited by wanderer on Tue 10 Jul 2018, 04:32, edited 1 time in total.

wanderer
Posts: 1098
Joined: Sat 20 Oct 2007, 23:17

#632 Post by wanderer »

hi all

i have uploaded the corepup-8.iso
to the smokey01 site

this is the totally minimal corepup
just the core
console only no x

only 10 m

this completes the corepup triad
which are modifications of

core
tinycore and
coreplus

the only other iso that needs to be included is the dcore iso
which is used for downloading and packaging debs

keep the faith

wanderer

User avatar
nosystemdthanks
Posts: 703
Joined: Thu 03 May 2018, 16:13
Contact:

#633 Post by nosystemdthanks »

wanderer wrote:i do have one question though



why is anyone interested in corepup at all ?
why not just use one of the puppies presently being developed
and not even read this thread ?
thats a great question, which i hope people will try to answer. i have some thoughts about it too.

ive watched puppy change from a three year old pup (when i started using it) to the present. since i started using puppy ive learned python, moved across the country, gotten married, nearly had children and also divorced.

ive watched this forum change, mostly for the better and mostly from afar.

one thing that hasnt changed here is that practically everyone is an armchair developer. me too- when i was originally a puppy fan the main thing i wanted to do was make it more modular! i wanted to rearrange everything into 3 sfs files, so you could have a small/medium/large puppy. all youd need to change size is open isomaster and delete one or two sfs files.

this way, puppy could become fully cd-sized without ever affecting people who preferred the size of puppy as it was then, and didnt want it to change.

today, mcorepup (whether used on corepup, or applied to puppy) is capable of creating that iso. i can actually do that with a variety of distros-- i still prefer cd-sized isos to dvd-sized ones.

and corepup is very much like what i wanted from puppy a decade ago, except more modular. when i said that was my hope for puppy back then, they told me it was being worked on. i got the dsl book and told roberts about it, he told me to look forward to the new dsl-like distro he was working on, youre using it now.

so, here we are. im still an armchair developer, only now i have my own programming language and distro remastering tool-- which thanks to corepup, now supports not only genisoimage but two other iso tools (because tinycore uses mkisofs.)

i think many of us are young at heart (im still not 40 yet) but if people want to compare us all to a bunch of crotchety old folks (apologies to non-crochety old folks who have a more active lifestyle than i do, i know barry can hike a lot farther) sitting around and statler and waldorfing every distro on earth from the balcony-- perhaps the shoe fits.

id like people to be more honest and thoughtful about things like that, but some things (like systemd) dont deserve an easy time.

communities change, distros and people change-- even users change, though youd never believe it. (theyre very sneaky.) but what doesnt change is that people like having opinions.

sometimes the opinions are ridiculous, but often they have a point. two things i absolutely look up to you about is that a. you dont let anything stop you from doing what matters to you, and b. that youre very very very open to opinions. we ultimately all want that, even if we think we dont.

its better to be nice when we can. that said, no one cares what i think of debian but im going to say it anyway-- i used it for most of the years i wasnt here with puppy, and i have spent too much time using debian already. no more debian! (curiously, i will gladly use debian packages though.)

whats that got to do with it? simple-- people ultimately want to share their opinions. and thats why theyre here. (now, why do they want to do that? thats what youre really asking, i think...)

not to mention that im not the first person to bring up debian in this thread. personally? as someone who worked on a debian-based puppy in 2016, im glad that someones doing a non-debian one.
wanderer wrote: i have uploaded the corepup-8.iso
to the smokey01 site

this is the totally minimal corepup
just the core
console only no x

only 10 m

this completes the corepup triad
which are modifications of

core
tinycore and
coreplus
and thanks very much for what youre doing. you posted this while i was posting so i thought id add it.
[color=green]The freedom to NOT run the software, to be free to avoid vendor lock-in through appropriate modularization/encapsulation and minimized dependencies; meaning any free software can be replaced with a user’s preferred alternatives.[/color]

User avatar
rockedge
Posts: 1864
Joined: Wed 11 Apr 2012, 13:32
Location: Connecticut, United States
Contact:

#634 Post by rockedge »

I have been following the thread with interest. At the moment I am having trouble getting corepup to boot cleanly... I get stuck at a prompt for a "box login" looking for a password.

perhaps a set of install tips will help the cause...I am using GRUB4DOS and a HDD at the moment to see if I can get the corepup 6.4.1 to go.

any tips here will be appreciated....most OS's I can get going..... :)

User avatar
nosystemdthanks
Posts: 703
Joined: Thu 03 May 2018, 16:13
Contact:

#635 Post by nosystemdthanks »

hi, ive had similar trouble. technically, you are booting properly i think.

a few things to consider:

1. i first used puppy with grub4dos-- it should probably work fine with corepup, theres even a post about it in this thread but you might be the first person to try corepup with grub4dos.

2. if its booting to an ascii penguin logo at the top (are you sure its a login? it should be an active prompt) then its recommended you create a /tce folder and copy the tce files from the cd. im nearly certain theres a way around this.

3. you might look for instructions about boot codes. im not sure the boot cd is the best place to put them...

4. right now, wanderer is mostly using it from cd or usb. im the hard drive user, ive used it with grub (not grub4dos) and syslinux on different occasions. my menuentry is at the bottom of this page: https://softwarefreedom.jcink.net/index ... owtopic=47 i dont know if it will help you, its for booting the iso from grub.

5. corepup-6 is small, 7 is minimal and 8 is the core-- 8 has no gui. if you downloaded the latest, this would be a good reason for the isos to follow this convention:
corepup-6full.iso
corepup-7minimal.iso
corepup-8textmode.iso

i hope you get it working.
[color=green]The freedom to NOT run the software, to be free to avoid vendor lock-in through appropriate modularization/encapsulation and minimized dependencies; meaning any free software can be replaced with a user’s preferred alternatives.[/color]

Post Reply