Date: Wed, 18 Nov 2015 08:32:26 +0100 From: =?UTF-8?Q?Fernando_Apestegu=C3=ADa?= <fernando.apesteguia@gmail.com> To: Mark Heily <mark@heily.com> Cc: Benno Rice <benno@jeamland.net>, FreeBSD Hackers <freebsd-hackers@freebsd.org> Subject: Re: relaunchd: a portable clone of launchd Message-ID: <CAGwOe2ZXBcK2LtoqfjcuXQrOuU8xq9Q5FaHT_tO761r7exzG6g@mail.gmail.com> In-Reply-To: <CAGfo=8=8Np_59AzMwzVS1abm=oJ6VzLuZH1H765s9-fF0SJ2zg@mail.gmail.com> References: <CAGfo=8nPxY6SW%2B04R4sN_a1udOuVRLEownM4p2Yz5Y8YGvheeA@mail.gmail.com> <F18891B6-5375-46DC-A781-3CA4B1C211DE@jeamland.net> <CAGfo=8=8Np_59AzMwzVS1abm=oJ6VzLuZH1H765s9-fF0SJ2zg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Nov 18, 2015 at 4:27 AM, Mark Heily <mark@heily.com> wrote: > On Mon, Nov 16, 2015 at 10:32 PM, Benno Rice <benno@jeamland.net> wrote: >> Hi Mark! >> >> Are you also looking at constructing equivalents to things like notifyd, configd and asld? > > I've written something which blends some of the concepts behind > notifyd and configd. It's called "stated" (state dee) and it's > available here: > > https://github.com/mheily/stated > > I also submitted it to the ports tree here: > > https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204172 > > In a nutshell, it is a generic publish/subscribe mechanism for > programs running on a single host to share information about their > internal state and receive notifications about interesting events. I > was inspired to write it by listening to Jordan Hubbard's talk about > the problems that notifyd was trying to solve, such as programs that > constantly call stat(2) on /etc/localtime to see if someone changed > the timezone out from under them. > > I haven't written any of this yet, but I'm hoping that stated will > present a unified view of all the important OS configuration > settings, so that programs can subscribe to the ones they care about > and get notified when they change. For example, similar to how people > can run "sysctl -a" to see all kernel tunables, I'd like to be able to > run "statectl -a" and get back some JSON like this: > > { > hostname: "myhost", > hostid: "e38a248b-8da1-11e5-b5da-382c4abedb0b", > sshd.enable: "true", > network.defaultrouter: "192.168.0.1", > time.zone: "America/New_York", > dns.fqdn: "myhost.example.com", > dns.domain: "example.com", > dns.nameservers: ["8.8.8.8", "8.8.4.4"], > } > > Then, if a program cares deeply about using the most up-to-date > timezone setting, it can subscribe to notifications about changes in > the time.zone key, instead of constantly polling for changes to > /etc/localtime. > > Notice that the above JSON isn't specific to FreeBSD, so programs > don't need to care about operating-system details like what file in > /etc is used to define the hostname. On Linux, it can be > /etc/hostname; on BSD it can be /etc/rc.conf; instead, all they need > to know is that the current value of the hostname is stored in a key > called "hostname" > >> >> What are you using as your comms/RPC framework, if anything? >> > > Nothing yet, but I'm thinking of using D-Bus as the RPC mechanism for > relaunchd, since a lot of open source programs are already using > D-Bus. Including systemd ;) which exposes several interfaces to DBus. If this is intended to be in base at some point of the future, it shouldn't rely on third party software from ports. Anyway, I agree that if we are going to replace a key component of the system we may want to discuss which approach is best (launchd, relaunchd, OpenRC, svc, etc...). Cheers. > >> >>> On Nov 15, 2015, at 18:55, Mark Heily <mark@heily.com> wrote: >>> >>> I've written a clone of the launchd framework found in Mac OS X [1]. >>> It's called "relaunchd" and I would like to some help improving it and >>> getting it added to the FreeBSD ports tree [2]. >>> >>> Here's the source code: >>> >>> https://github.com/mheily/relaunchd >>> >>> One of the coolest things I've been able to do with it is to use >>> socket activation to launch an unmodified version of Apache inside of >>> a jail, pass it a socket descriptor bound to port 80 from the primary >>> network interface outside of the jail, and have it "just work" and >>> start serving web content using the pre-existing socket descriptor. >>> This eliminates the need to setup a cumbersome NAT and port forwarding >>> mechanism for each jail [3]. >>> >>> This is a completely separate line of development from the work that >>> the NextBSD folks are doing to port the published Apple source code >>> for launchd and all of it's dependencies. >>> >>> I'd be happy to answer questions about relaunchd, and welcome >>> contributions from anyone who wants to help make launchd on FreeBSD a >>> reality. >>> >>> Regards, >>> >>> - Mark >>> >>> [1] https://en.wikipedia.org/wiki/Launchd >>> [2] https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=204240 >>> [3] Example: http://kbeezie.com/freebsd-jail-single-ip/ >>> _______________________________________________ >>> freebsd-hackers@freebsd.org mailing list >>> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers >>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" >> > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > https://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAGwOe2ZXBcK2LtoqfjcuXQrOuU8xq9Q5FaHT_tO761r7exzG6g>