Date: Tue, 19 May 2015 19:21:34 +0200 From: Baptiste Daroussin <bapt@FreeBSD.org> To: current@freebsd.org Subject: Re: [RFC] Replace gnu groff in base by heirloom doctools Message-ID: <20150519172134.GE52236@ivaldir.etoilebsd.net> In-Reply-To: <20150519165240.TQ0rmV5a_Z-g%sdaoden@yandex.com> References: <20150514000211.GA9410@ivaldir.etoilebsd.net> <201505152342.t4FNgRgq076946@fire.js.berklix.net> <20150519112644.GB52236@ivaldir.etoilebsd.net> <20150519123722.KSZHLtTvPWw8%sdaoden@yandex.com> <20150519153654.GC52236@ivaldir.etoilebsd.net> <20150519165240.TQ0rmV5a_Z-g%sdaoden@yandex.com>
next in thread | previous in thread | raw e-mail | index | archive | help
--wchHw8dVAp53YPj8 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Tue, May 19, 2015 at 06:52:40PM +0200, Steffen Nurpmeso wrote: > Hello, >=20 > Baptiste Daroussin <bapt@freebsd.org> wrote: > |On Tue, May 19, 2015 at 02:37:22PM +0200, Steffen Nurpmeso wrote: > |> Baptiste Daroussin <bapt@freebsd.org> wrote: > |>|On Sat, May 16, 2015 at 01:42:26AM +0200, Julian H. Stacey wrote: > |>=20 > |>|>> I think keeping a fully functionnal roff(7) toolchain part of the > |>|>> base system is very good on a unix. > |>=20 > |>|>> From what I could check I cannot find any regression when \ > |>|>> migrating from gnu > |>|>> groff to heirloom doctools, if there is a particular area \ > |>|>> when you think extra > |>|>> care is needed please share it. > |>=20 > |> It seems you haven't checked at all. > |> It seems to me that e.g. mdoc(7) of n-t-r seems to require quite > |> a bit of work in order to be at all usable. > | > |Lots of work has been done recently on heirloom in particular regarding > |the support of mdoc(7) and I have opened tickets for all issues \ > |I could find and > |they have been fixed. Please point me to issues you can have \ > |regarding mdoc(7). >=20 > .Ns doesn't work right, so is why this strong emphasis of mine in > the first sentence. Carsten has this example of mine (last week): >=20 > .Dd Apr 30, 2015 > .Dt xxx 1 > .Os > .Sh NAME > .Nm xxx > .Nd yyy > . > Read the system mailbox of > .Ar user > (appropriate privileges presumed), and > .Dq assume to be > .Ar user > in some aspects, e.g. in respect to > .Ic file Ns > \(enexpansions of > .Ql % > etc.; also see > .Ev USER . >=20 Thanks I will have a look at it soon > |(Note that I'm speaking of doctools as of latest git, not latest releas= e) >=20 > As of last week right shortly after your mail i guess it was. >=20 > |>|Heirloom in base is a win over groff because it has better \ > |>|support for roff(7) > |>|better font handling etc. > |>=20 > |> The macros i use for myself don't work with n-t-r, too: once > |> i truly looked (a few months ago) i found that i would have to > |> rewrite all traps and other positioning in order to get that > |> right. > | > |Can you tell me more about the macros you do use and a sample \ > |document so I can > |check and see if we can add support for it? >=20 > Well Carsten asked me this too last year and i've given him as > much as i could. But the macros are really rather simple layout > via traps. If i recall correctly the examples i've shown Carsten > where letters. I would have to rewrite the macros before i can > make them public, but it is pretty "normal" troff stuff with > traps and positioning, like e.g. the context-free following, for > an example (i think i have sent Carsten some trap info back then?) >=20 > .MACRO RECEIVER > . S:BOOLIFY \\$1 > . ie \\n[S:#IS_BOOL] \{\ > . vs \\n(.su*\\*[RECEIVER_LINE_SPACING_SCALE_FACTOR] > . nf > . de S:RECEIVER_TRAP EOT > . blm PARA > . ds S:RECEIVER_DIVERSION_HOOK > . sp 1v > \\*[RECEIVER_PREHOOK]\c > .EOT > . di S:RECEIVER_DIVERSION > . blm S:RECEIVER_TRAP > . \} > . el \{\ > . if d S:RECEIVER_DIVERSION_HOOK \{\ > \\*[RECEIVER_POSTHOOK]\c > . rm S:RECEIVER_DIVERSION_HOOK > . \} > . di > . \" Calculate best position for address field and box out > . if (\\n(dnu > \\n[#RECEIVER_HEIGHT]u) \{\ > . WARNING \ > \\$0 address does not fit in address window! Growing window!! > . nr #RECEIVER_HEIGHT \\n(dnu > . \} > . nr #1 (\\n[#RECEIVER_HEIGHT]u-\\n(dnu)/2u > . sp |(\\n[#RECEIVER_START]u+\\n(#1u > . rr #1 > . S:RECEIVER_DIVERSION > . rm S:RECEIVER_DIVERSION > . rm S:RECEIVER_TRAP > . fi > . vs > . \} > .. >=20 > Pretty clean letter stuff like that it is. (You asked for an > example.) Same I'll have a look :) >=20 > |> Despite that you seem to do what you want to do anyway, n-t-r is > |> possibly a usable troff, if you go its way and deal with it you > |> may be able to gain a bit nicer output _faster_ and without > |> converting your beloved special fonts first, but in no way is > |> n-t-r a _replacement_ for groff. > | > |As I said you will be able to use groff from ports. I do not \ >=20 > I will have my own one, then. Enough work for getting old. d^.^b >=20 > |claim that n-t-r is > |a replacement for groff in general I propose it for a replacement \ > |for groff in > |base. > | > |groff in base is stuck at 1.19.2 version while upstream is at 1.22.3 ve= rsion > |which in particular has a couple of fixes for mdoc(7) format and a bit = more. >=20 > The mdoc(7) macros are BSD licensed. Nothing prevents anyone from > taking those from GNU troff [master] branch and integrating them > into their own roff version. I did that for (the one that will > be) mine. >=20 > |Every user of groff will have huge benefit using newer groff versions: = bug > |fixes, full functionnalities available etc. >=20 > The above macros originate from stuff written under FreeBSD 4.9 > and especially 5.3 and ran almost a decade there, very smoothly. > Also i'm not so sure about that "huge" when i compare groff > 1.19.2-574-gecbf4f1 (which is the last GPL2 commit) and 1.22.3. > Also Carsten said that. Until now i have indeed assumed it is > purely rhetoric. >=20 > Out of interest: what do you mean when you say "full > functionality"? I see some improvements in the line breaking > algorithm and support for PDF images, as well as a perl(1)-based > PDF output device. ? Of course i want to have that, but for my > personal German and English use the first isn't "deadly" > necessary, PDF images i've never used (this is EPS then) and the > last, well, time has to bring something. Until then PS to PDF via > Ghostscript has to do the trick. It always did so for me. By full functionnality yes I meant all this + X11 support + things like groffpdf, all the roff2* commands etc. >=20 > (In fact i would possibly have been better off to start my own > troff with a codebase from before the grohtml rewrite polluted > even deepest parts of the troff engine itself instead of that last > GPL2 commit. And things like preconv(1) etc. i will be able to > manage in a different way, too. And MathML support for eqn(1) is > possibly overkill if the normal HTML output is completely broken.) >=20 > Not to be misunderstood. Yes, i dislike the decision to include > n-t-r doctools in FreeBSD. I took maintainership of a MUA that > was written by the same person and the code was completely broken. > (And everybody knew that but myself.) Worse, it was terribly > designed, and still is like this for the most part. Even though > the doctools came up years later, i guess the changes were made on > least effort basis also here. And how is that compatible with > FreeBSD? I do understand that you have been beaten by your experience. The goal here= is to have a working and maintainable roff toolchain, so far heirloom's seems = to do it. Of course it is not perfect, but from all documentation we do have in base, it does a better job (speaking of fully roff documentation not manpag= es). For all manpages that mandoc(1) does not handle, it makes a decent fallback renderer and often gives better rendering that groff(1) if Interested I can= give you a couple of example where the rendering is better than the one from gro= ff. > (Yet surely parts of FreeBSD always smelled like rotten. I don't > know how often i got a hard locked burncd process, for example.) > And of course i like that FreeBSD wants to keep a troff, NetBSD > unfortunately seems to go a different route. But what benefit can > be something that doesn't work with existing stuff, but that needs > to be addressed in a special way in order to get not the desired > but the expected results? That doesn't make sense to me. But it > definetely is not a win, but something different. Maybe it is > a win for those who search the latter, though. >=20 Of course feedback like yours are interesting and taken in account. I will = make sure to harass (in a friendly way :)) upstream to fix all bugs (if I cannot= fix them myself) reported by users. I went the route of proposing this change because doctools is working prope= rly with all the existing stuff we do have in base! (minus a couple of pending fixes) this mail was sent to actually get feedback (like yours) from users = about issue they might have with it so we can address them in time and finish evaluating this tool. I will create a branch soon to make the integration in base happening and testable by more people, then send a call for testing so people can actually test what we would provide to them. Best regards, Bapt --wchHw8dVAp53YPj8 Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iEYEARECAAYFAlVbcR4ACgkQ8kTtMUmk6EzK8wCeOmECVljo9bfi2vljMoLbm9r7 nCgAn26kBPHl7floNDC2R7lcZ/i+MpUx =4V8b -----END PGP SIGNATURE----- --wchHw8dVAp53YPj8--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20150519172134.GE52236>