OpenBSD Journal

pkg_*: the road forward

Contributed by n/a on from the all-the-world-is-a-package dept.

An anonymous submitter reminded us that Marc Espie (espie@) posted a summary of the state of OpenBSD packages in a message to the tech mailing list with the subject pkg_*: the road forward.

Marc writes,

Subject:    pkg_*: the road forward
From:       Marc Espie <marc.espie.openbsd () gmail ! com>
Date:       2023-07-10 19:04:04

I spent some time during the last hackathon, talking to various people over
where we're going.

Read on below the fold or take in the whole thing here (including any followups) -

I'm a bit afraid that people are going to see the ports/package framework
as "not invited" (because some of the subsystems of OpenBSD are not exactly
outside friendly)

Right now, I got one student directly working with me on the tools, and
I must say it is a good thing: I have waaaay too many idiosyncrasies.
And I'm trying to get better at documenting ?`

So where are we going ? there are lots of pieces missing, some of them
trivial, some really annoying.

- the level of testing is abysmal. I would really like for someone to
have fun with regress and make it manageable.

Right now, it's a pain ! More tooling to make pkg_add "fully" regression 
testable would be very helpful.

- likewise register-plist needs some tests. I have made some progress in
options to make that happen.

- I would love to get some Devel::Cover stats... zero progress about this
during this week (well, the main progress was that it does not work)

- I converted ALL my code to perl 5.36. Having signatures is a HUGE change,
not wrt actual code, but with readability. It makes perl code look like
"other" programming languages, in a good way, thus making it sooo much easier
for new people to get in.

As for the actual code changes:
- we need more code to deal with "global state", mainly /etc/rc changes and
messages.  Those files are going to move around, which means it's going to be
GLOBAL state, because it can move from package to package. I would really 
really love to have regress test cases first.
- we still need better Vstat code that deals with symlinks.
There's one test that actually fails... and writing more tests should be
simpler.
- the code dealing with "old libs" is still incredibly ad-hock and needing
some love.
- there's something fishy in pkg_create wrt dependency handling... figure it
out, AND make it work with tags as well.
- fragments building is oversimplified, that's the main thing holding back
ocaml "smart fragments".
- texlive wants some love. That one is pretty much mine: a bit of targets in
bsd.port.mk, a bit of "hints" code in update-plist, and also the ability to
say "oh, don't package this, it's already in". Nothing really difficult,
it's just that texlive is large...
- displays and codes from pkg_add/pkg_info. The main culprit right now is
FETCH_PACKAGES, it could be better.

- "libsets". Updating wantlibs is really a pain for big changes. I have a
keyword called libset to deal with that. It requires changes to bsd.port.mk
and to pkg_add. Simply put: a libset would have a version and say "we need
those libs to work". If a libset got bumped, then we wouldn't  say the
affected libs are a problem if they change !  This is mostly a question of
writing the code.

- lib-depends-check: the script AND its dependent libraries need a lot of
clean-up, so that an average person can understand them. Then we can deal
(probably) with subdirectories (which we don't)

- dpb changes: the "files needed" change. 
I have all the pieces to figure out which files and directories a given
build requires:
in the ports tree, MAKEFILES_LIST + PKGDIR + PATCHDIR + FILESDIR + package + \
distfiles would be enough. I need to actually provide this.
This would enable TWO huge things:
-> disconnected builds, with a cluster that doesn't use nfs, but runs openrsync \
                instead
-> separate builds into separate chroots (roughly 6000+ links per build)

- regress tests: should be much easier now that diskspace is (mostly) not an issue

- roaching while fetching: the main part would be to figure out which part of roach \
we actually need to plug in after fetch.   Having a sqlite database is actually a \
huge hindrance. dpb could output "decent" logs, and it should be easy to coerce them.


I probably missed some entries, but this is what occupies my ports/pkg* 
thoughts. Help welcome. Not perl solutions NOT welcome.

As Marc says here, help is welcome, and there are plenty of things to dive into for the qualified and/or adventurous.

So if you feel that you belong in one or more of those categories, please dive in and check what you can do!

(Comments are closed)


Comments
  1. By Marc Espie (espie) espie@nerim.net on

    To complement my own email:

    in recent years, I've tried real hard to NOT be that guy who writes his tools in the cellar, and manages to push away everyone who wants to help.

    I will readily admit that my code is somewhat complicated, and I understand that not everyone will like perl.

    That's one reason why the move to 5.36 function signatures was so important to me, even though it brings exactly ZERO new functionality to the tools.

    Over the recent years, I have forayed into various other areas of OpenBSD development, and I will readily admit: we're not the most welcoming bunch of developers. Now, there's one good point to it: we will hate you in person. You don't have to jump through hoops and get through a convoluted set of admission procedures to submit an issue.

    Nooo, you just submit to the mailing-lists, post some issue, and get yelled at.

    Maybe we should market "GIAAS" (Getting Insulted as a Service) because we are very good at that.

    So... I don't want to be that guy. I won't name people, but I don't think we're the best project when it comes to enlisting new guys and helping them get their feet (the ports tree bunch is somewhat better than the rest in my opinion)

    Replying to some well-meaning guy about the state of so and so "just wait, it's going to happen" is NOT something that scales. And frankly, it's not the image I want to give.

    So, yeah, making things easier to understand, and welcoming other visions, and heck, managing to get other people to do part of the work for me is what it's all about.

    I acknowledge that PR and talking to would-be developers is an activity that takes a lot of time (and if you're a noob, please do your homework as best as you can so you don't waste our time OR don't get ignored), but we have to think about the next generation (and hope we don't get any bald guys with an affinity for earl grey, hot)

    Comments
    1. By Chris Bennett (chrisbennett) webmaster@bennettconstruction.us on bennettconstruction.us

      I just spent a little over an hour looking at this, getting a handle on my negative emotions about all of this.
      I don't know how emotional others feel, but I sure did receive over the years quite a few emails from others "off list" who specifically requested that I not even mention them online. Sounds a lot like cancer that ever so slowly creeps in.

      >I will readily admit: we're not the most welcoming bunch of developers. Now, there's one good point to it: we will hate you in person. You don't have to jump through hoops and get through a convoluted set of admission procedures to submit an issue.
      >Nooo, you just submit to the mailing-lists, post some issue, and get yelled at.
      >Maybe we should market "GIAAS" (Getting Insulted as a Service) because we are very good at that.

      Extremely good. So good that at least 3/4 of my time dealing with emotions about things that have been said to me on every mailing list was related to that. I don't know if I really want to explain the last 1/4. I cannot unsay that, but my father also suffered indirectly.

      >So... I don't want to be that guy. I won't name people,

      Well, why the hell not? I keep seeing "I won't name people" over and over. All of the unimportant people get told they are stupid, lazy, didn't RTFM, should go away and never come back, etc.

      Is the social dynamic at the developer level so fragile that another developer can't be told publicly on a mailing list reply that they are being an unhelpful jerk and should improve their behavior or just not reply?
      I doubt that there is any single action that could be taken that would help out new people more than seeing that. I mean recent new people, like maybe around a year or two.

      >but I don't think we're the best project when it comes to enlisting new guys and helping them get their feet (the ports tree bunch is somewhat better than the rest in my opinion)

      IMO, not very good at all. The opening window for new people is very short. Too short.
      Ports is better in a sense, but it seems to be made up of a small number of helpful people who are really good.
      They are very helpful, but where are the people who could be helpful who aren't porter super heroes?

      I also have noticed that it seems like the expectations that new people should know increasingly more technical details about OpenBSD in every sense seems to be climbing. Perhaps that is a reflection of the fact that existing developers are getting better and better at understanding the innards of OpenBSD? I don't know, but I think it is a reasonable guess.

      Finally, I think that "the developers are too busy" has become a bit of an excuse not to participate in the group as a whole.
      OpenBSD is working pretty damn good right now. Sure, new devices and security are very important. Always!
      But does project X really have to make it to this next release? Could it wait until the release after that?
      Meanwhile, maybe that or those developers could put in a few weeks of work helping new people come in? Answering their questions, pointing out problems, telling them exactly what code, manuals and outside material to read in particular. Maybe explaining some obtuse problem that exists because of some hack that was done to fix some problem, etc.

Credits

Copyright © - Daniel Hartmeier. All rights reserved. Articles and comments are copyright their respective authors, submission implies license to publish on this web site. Contents of the archive prior to as well as images and HTML templates were copied from the fabulous original deadly.org with Jose's and Jim's kind permission. This journal runs as CGI with httpd(8) on OpenBSD, the source code is BSD licensed. undeadly \Un*dead"ly\, a. Not subject to death; immortal. [Obs.]