aboutsummaryrefslogtreecommitdiff
path: root/blog/rss.org
blob: 9de496219c471648b4677708d5613d3af3a74eea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
#+TITLE: Carbs Linux blog
#+DESCRIPTION: a simple Linux distribution

* First Year of Carbs Linux
:PROPERTIES:
:RSS_PERMALINK: 20201210.html
:PUBDATE:  2020-12-10
:ID:       91a73ba0-bd3c-437c-94af-fe767c3dcc02
:END:
December 10, 2020 marks the first year after the initial release of Carbs Linux.
When I forked the KISS Linux repository on the 9th of December, I was fairly new
to package management. Carbs Linux used to be almost identical to KISS Linux. A
lot has changed since then:

[2020 Jan 13] Replaced default init system to =sinit=
[2020 Jan 15] Packaged =WebKit2GTK=
[2020 May 17] Added =bearssl= on the testing repository
[2020 May 28] Added =rsync= repository support to kiss
[2020 Jun 03] Replaced =bison= with =byacc=
[2020 Jun 11] Replaced =libressl= with =bearssl=
[2020 Jun 24] Replaced =kiss= with =cpt=

I have really enjoyed maintaining and developing this distribution, and I want
to thank everyone who was involved in some way or another. While I have slowed
down in development due to college workload, I am still actively maintaining all
the packages on the repository. I do have some ideas that I am thinking of
implementing during the semester break. Hope to see you all in January.
* August 2020 News Post
:PROPERTIES:
:RSS_PERMALINK: 20200803.html
:PUBDATE:  2020-08-03
:ID:       20184071-45d1-4af3-b679-63610e737f82
:END:
We are having some stalls during this summer, as I am currently working on
university-related stuff. Nonetheless, there are some important changes that I
want to share in this month's post.

#+toc: headlines 1 local

** Carbs Packaging Tools
   :PROPERTIES:
   :ID:       fe405200-c791-40bb-af90-55b14328c901
   :END:

This month I have reworked =kiss= into a new package manager, now renamed as
=cpt=. Updating =kiss= will now bootstrap the new package manager, so you don't
have to manually edit your system. If you don't like the idea of this, you can
look up the =post-install= script on =core/kiss= and apply the changes manually.

You will also need to rename your =KISS_*= variables to =CPT_*=. So, =KISS_PATH=
becomes =CPT_PATH=.

The rework changes the previous commands on the package manager into standalone
tools, and move the package manager functions to a library. This makes it easier
for a user to import functions and variables from the package manager, and
extend the package manager with their own intended way. Previously this required
ugly hacks and workarounds to use the package manager functions. I will be
making use of these changes to re-implement binary package management functions
as well.

If you want to use the library on your script you can simply do this:

#+begin_src sh
  #!/bin/sh
  . cpt-lib
  (...)
#+end_src

There are obviously some clean-up and simplifications needed in this new
tool-based package management method.

** Docs
   :PROPERTIES:
   :ID:       9a665dbf-7a5a-4e66-88a6-b95b27fd0f08
   :END:

I have added documentation for the distribution, and finally updated the guide
for installation. It is now /almost/ complete. These docs can be installed to
your system for online viewing. I will also add a documentation crawler similar
to how werc works (but as an offline viewer). You can find =carbs-docs= from
the repository. Currently, the documentation lacks but I will be adding new
stuff. These will solely be distribution specific documentation and will not be
a wiki-like source. If anyone would like to contribute to a wiki-like
documentation source, I would happily re-open the distribution wiki. You can
find the source on [[https://github.com/CarbsLinux/docs]].

** Re-opening the Carbs Linux server
   :PROPERTIES:
   :ID:       d2ede03b-5386-48f9-9349-27ad6972558e
   :END:

Back in May, I had shutdown the Carbs Linux server due to financial issues, but
I am slowly reverting to the self-hosted model. Back then, the git repositories
were mirrored to GitHub, and the management was overall much more flexible. The
server used to run Carbs Linux as well (that was fun and horrifying at the same
time). Now, I will be relaunching the git server which will be the upstream
source before August 5. You can switch your remote, but GitHub will stay as a
remote nonetheless.

*EDIT:* The git-server is up!
* June Newspost
:PROPERTIES:
:RSS_PERMALINK: 20200617.html
:PUBDATE:  2020-06-17
:ID:       e0ddba22-7d55-4830-895a-5d02e1f41f90
:END:
This will be an active month for Carbs as major changes to the base and the
package manager will be coming up.

** Statically linking the base
   :PROPERTIES:
   :ID:       ca2f0783-0484-42d6-8f19-1b16330f474e
   :END:

For the past couple of weeks I have been trying to simplify the base and
statically link the core (mostly binaries rather than libraries). I usually see
some people extremely opposed to static linking as I also see the opposite on
people.

I believe that binaries on the core should always be linked statically. This
ensures that an SONAME bump to =libObscure.so= will not break the core
functionality of your system, forcing you to use external resources to recover
from such an issue. As long as you can compile, use core utilities, edit text,
and access the web, you can solve any given issue on your system.

However, I don't think that removing shared libraries is sensible either. Not
every piece of software out there is good quality enough to be statically
linked.

** Major changes on the core repository
   :PROPERTIES:
   :ID:       7bcf3f1b-1341-485d-a28a-3dedc24d1eee
   :END:

There have been drastic changes to the core repository and the base rootfs this
month (with more on the way). Right now changes are as follows.

*** Removed from Core
    :PROPERTIES:
    :ID:       29d41729-1428-44dc-b315-cd9c3070e7c5
    :END:
=git=
=libressl=
=grub=
=bison=
=dhcpcd=
=ubase=

*** Added to Core
    :PROPERTIES:
    :ID:       9935f194-03c4-4e83-b6f1-fd8e35adb51e
    :END:
=bearssl=, as a =libressl= replacement
=byacc=, as a =bison= replacement

*** Statically linked
    :PROPERTIES:
    :ID:       445af4be-741c-41a4-b983-a1ffb71c3476
    :END:
=kiss=
=neatvi=
=mandoc=
=byacc=
=m4=
=e2fsprogs=
=make=
=pkgconf=
=sbase=
=libnl=
=wpa_supplicant=
=bearssl=

** Making the wiki available offline
   :PROPERTIES:
   :ID:       02f68296-e84b-4a60-9af6-efc5b72a262e
   :END:

Soon, all documentation regarding Carbs Linux will be avaialable to be installed
from the core repository in a =carbs-docs= package along with its own document
crawler. Currently, the documentation regarding the installation process is a
little outdated which will also receive some important updates.

** ISO image for Carbs
   :PROPERTIES:
   :ID:       503ea473-9001-4080-9073-628f4cddaedc
   :END:

I am thinking of releasing an ISO image in order to provide a standardized
environment for installation along with installation helper tools in the spirit
of =arch-install-scripts=. Let's see how that's going to play out.
* kiss 2.0.0 and Overall Changes
:PROPERTIES:
:RSS_PERMALINK: 20200528.html
:PUBDATE:  2020-05-28
:ID:       757f34bc-c510-4a93-be60-80ac355ad6d3
:END:
Carbs Linux kiss version 2.0.0 has been released which introduces rsync
repositories.

Git is no longer a mandatory dependency for the package manager, every git
source on the core repository has been replaced with https sources (sbase,
sinit), and rootfs tarballs will no longer ship with git. Repositories in the
upcoming tarball will be rsync repositories.

Git is now on the =extra= repository and is still (optionally) used in the
package manager.

The idea behind this change is size reductions and increased speed with rsync.
As I said on the previous post, git repositories get larger and larger over the
time span. Currently my personal copy of the git repository is around 77MB and I
have forked KISS Linux (as a shallow copy) around December. Obviously, I have
commits that I ommitted. I tend to create commits I dislike, which I change with
=git reset --soft HEAD^=, which doesn't actually remove the commits, etc. A user
will have a repository much smaller than mine.

This is a precaution with the added bonuses of speed and dropping a mandatory
dependency.

You can see the rest of the changelog [[https://github.com/CarbsLinux/kiss/blob/master/CHANGELOG.md][here]].

** Binary Repositories
   :PROPERTIES:
   :ID:       d34206ef-dac4-4fa7-8a24-6beeb2376615
   :END:

A few days ago, I have also published [[https://github.com/CarbsLinux/kiss-bin][kiss-bin]], a first version for managing
binary repositories. Currently, there are some caveats that I'll be fixing along
the way. I decided not to include this in the package manager natively as
managing the source based and binary based packages together adds levels of
complexity that we do not want. Instead, this is an extension for kiss which
sources the package manager as a library. I hope to see it being adopted by
others interested on the matter as well.
* The Relation of Carbs and KISS
:PROPERTIES:
:RSS_PERMALINK: 20200508.html
:PUBDATE:  2020-05-08
:ID:       258ca25e-b053-4c53-a86d-c067346461e3
:END:
Since I have forked KISS, I have received many questions that can be summarized
as "Why?". I have realized that I never truly answered this question. That's the
reason I am writing this post, to give some background on Carbs, and some
differences between KISS Linux and Carbs Linux for anyone who may be wondering.
Perhaps I could make this a "FAQ" page later on.

** History
   :PROPERTIES:
   :ID:       12457ae2-b958-479d-906c-4ec5c333b7a3
   :END:

I had the idea of creating my own Linux distribution since the May of 2019. Back
then, I had my own [[https://linuxfromscratch.org][Linux from Scratch]] build, and I wanted to slim it down my
own way and replace the software (with musl,sbase,etc.). The name Carbs Linux
was in my mind since then. I wanted to write my own package manager, but I
wasn't satisfied with anything I had built.

I had written some incomplete package managers (all named =fat=) and I quickly
threw them into the trash can, where they honestly belonged. I would want to
share them with you for laughs, but my hard-drive got wiped and I have a problem
of not doing an "initial commit" until a program I write is in a usable state.

I have obtained the 'carbslinux.org' domain name in September 2019, but then
life got on the way, and I stopped for a long time.

One day on Reddit, I saw Dylan's post on [[https://reddit.com/r/unixporn][r/unixporn]] about KISS, and I really
thought that it was interesting. Here is my [[https://www.reddit.com/r/unixporn/comments/ducd34/sowm_kiss_d/f7lua7x][comment]] to Dylan on that post. I
checked out the package manager and the repository. The packaging system was
extremely clean and well-thought. I decided to give it a go and fork KISS.

** Differences between KISS and Carbs
   :PROPERTIES:
   :ID:       aa9e4559-0afd-4bdb-8993-006a9f16927c
   :END:

Now, I still baffle when people ask me this question. My intention was never to
create a distribution with specific differences between KISS. My intention was
being my own BDFL of a distribution I maintain. There are lots of differences
between the main repositories, but they are subtle and not worth talking about.
I personally never even installed KISS Linux on my system. So Carbs, isn't
something like a downstream fork of KISS, it is just a distribution that was
initially based on KISS.

I try to contribute as much as I can to KISS Linux. I think that it is a
brilliant distribution, and it was a great starting point for Carbs. I am really
grateful to Dylan and all the other contributors.

** What I'm working on now
   :PROPERTIES:
   :ID:       293684f2-3b65-42a0-8011-8441a963194c
   :END:

Currently I have a few projects that I'm working on for Carbs. These are,

A BSD port for Carbs. For a while, I have been working on BSD compatibility on
my fork of the [package manager]. I have tested, without any more issues, on
OpenBSD and FreeBSD. The biggest issues remaining are choosing a vendor for BSD,
packaging the BSD source, and providing a minimal base (like busybox for BSD).
If you aren't familiar with BSD, it has a single source code for all of the
utilities (kernel, command line programs, etc.). Contributions (even chipping in
ideas) are very welcome.

Adding binary package distribution support natively to the package manager.
Biggest issue in small/old computers are compile times. This feature is for the
bigger packages such as webkit, clang, llvm that take a considerable amount of
time. Some computers with low memories cannot even compile firefox/webkit.

Adding rsync repository support to the package manager. This is not a current
issue, but rather a futureproofing. As time passes, distribution repositories
grow larger. KISS and Carbs are young distributions without this problem right
now. But in something like 5 years, this size will presumably increase to
hundreds of megabytes. At that point it will be pointless to have the repository
sources unless you specifically need them.

** What's up with all the init/service daemons?
   :PROPERTIES:
   :ID:       8de3a6dd-b66f-4da3-baae-efb264461a67
   :END:

If you have ever checked the [[https://github.com/carbslinux/repository][repository]], you may have noticed that there are
lots of init/service related packages. I have had my fair share of time with all
of them, and it is an area that I am really interested in. I have even written
my own [[https://github.com/cemkeylan/shinit][init daemon]] and [[https://github.com/cemkeylan/sysmgr][service supervisor]]. I maintain all those packages on KISS
Community Repository as well with the exception of busybox. Those are, =busybox
  init/runit=, =runit=, =sinit=, and =sysmgr=. I would definitely recommend
checking out =shinit= and =sysmgr=.

** Why I don't publicize Carbs
   :PROPERTIES:
   :ID:       15a9f5cc-3e2f-495d-8075-3213bcebe237
   :END:

There are a couple of reasons I don't publicize Carbs a lot.

KISS is the better alternative in terms of support and community. I work on
maintaining this distribution just as hard as Dylan, but in the end, Carbs is
based on his original hard work, and I believe that he deserves the recognition
more than I do.

Since I cannot answer questions like "What is the difference?", I prefer staying
as the silent sibling project of KISS Linux. Plus, there is no point in dividing
the newly-emerging community in half.

That's not because I don't have ideas for the future of Carbs, I do. I just
think that I will deserve the recognition once those above lists are checked.

I think that's about it, if you have questions you can send me a mail, ping me
on IRC (my handle is =merakor=), and I will be happy to answer. Maybe your
question fits this post, and I can update it to thoroughly give an explanation.
* Outsource Repository Concept
:PROPERTIES:
:RSS_PERMALINK: 20200410.html
:PUBDATE:  2020-04-10
:ID:       b70d712e-dfd8-46ba-8519-2102b0506551
:END:
In April 3rd, I have added submodule support for Carbs Linux's fork of =kiss=.
Now, from that sentence, it really doesn't sound exciting at all. But in
reality, it opens a path to lots of creative output, and a better way to manage
multi-user repositories (such as KISS Community).

When managing a repository of submodules, the repository maintainer's only job
is to deal with adding packages. A package maintainer doesn't have to wait for
the repository maintainer to update their packages, as they are only making the
changes to their own repositories.

This way, an end-user can also track from their preferred maintainers, and do
that with the tidyness of a single repository in their =KISS_PATH=.

Carbs Linux now has an outsource repository for some packages. Firefox and its
dependencies have been purged from the main repository, but can be found on it.

[[https://github.com/CarbsLinux/outsource]]
* Roadmap for Carbs
:PROPERTIES:
:RSS_PERMALINK: 20200406.html
:PUBDATE:  2020-04-06
:ID:       ab41c584-5be1-46b0-99e2-4d9eef2091aa
:END:
It has been a busy week. There are lots of changes in direction, and more to
come. I want to talk a little about all of them.

** Carbs Linux Server Going Down
   :PROPERTIES:
   :ID:       7b2135a9-122c-495e-9bb0-b79fc39ef098
   :END:

It became harder to maintain and pay for the server, and I will be shutting it
down in May. I am currently in the phase of carrying over everything to [[https://github.com/CarbsLinux][Github]].
The repository and the website is served on Github now. I have also moved the
[[https://github.com/CarbsLinux/wiki/wiki][Wiki]] to Github and anyone can edit it there. There are some outdated posts that
I will be fixing around this week.

I am not quite sure where to store the downloads page now. But I will be
switching that to a new source as well. (Maybe SourceHut?)

I feel a little sad for switching, but serving on Github is faster, cheaper, and
hassle-free.

** Forking KISS
   :PROPERTIES:
   :ID:       037cba41-3be3-4714-9512-ff896d600dae
   :END:

I had a personal fork of KISS, which I enjoyed thoroughly. I didn't intend to
make it the default when I started it, but it has matured enough to be so. The
package manager can now be found on [[https://github.com/CarbsLinux/kiss][this repository]]. See it for the added
changes.

This will be a change for the better, as I can develop the package manager as it
fits my views.

** Small Changes on the Website
   :PROPERTIES:
   :ID:       b33e18eb-6f15-49e2-9c2b-473af26030f4
   :END:

I have made some small changes on the website. The build is not dependent on
Plan9 utilities anymore. It was fun messing around with =rc= and =mk=, but they
are quite limited compared to POSIX shell.

RSS feeds are finally working as intended, both for the [[https://carbslinux.org/news.xml][news]] section, and the
[[https://carbslinux.org/rss.xml][blog]] section.

You can see every page's =.txt= output at the end of the page by clicking 'View
Page Source'. Meanwhile, I will be updating some pages to be a little more
'human-readable'.

** Outsources Repository
   :PROPERTIES:
   :ID:       1856485d-22c8-4c58-b710-ee4fa4374f9d
   :END:

I have opened an =outsource= repository, which I will be pushing this week. I
will add a new post when I am ready to push it. I think it will be interesting,
it will also make more sense about the changes I have added to the package
manager. The now empty repository, can be found [[https://github.com/CarbsLinux/outsource][here]]!

** New Tarball
   :PROPERTIES:
   :ID:       63a8a514-af1b-46d1-a4fe-c4e84d47d256
   :END:

Finally, I have released a new tarball today, which can be obtained from the
[[https://dl.carbslinux.org/releases][downloads page]].

I am planning to add more of these update posts as I'm feeling better about the
website structure overall.
* Switching to New Website
:PROPERTIES:
:RSS_PERMALINK: 20200128.html
:PUBDATE:  2020-01-28
:ID:       b8735f8c-441c-45f2-ba47-73daf7ed511a
:END:
In case you haven't seen it before, this website was powered by [[http://werc.cat-v.org][werc]]. And even
though I liked it really much, it was too powerful for a small website like
this.

So I have decided to reimplement this website with my own static generation
scripts. The source will probably be on [[https://git.carbslinux.org/website/log.html][its git repository]] when I decide to
publish the website.

The generation requires Plan9 programs, although I have used them just for my
enthusiasm. I have built the site with a combination of mk (instead of make),
rc, and POSIX sh. I am not yet exactly familiar with rc, but I will replace the
shell scripts when I feel like I can.