Return-Path: Delivered-To: rainer Received: from h2774747.stratoserver.net (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) by h2774747.stratoserver.net (Dovecot) with LMTP id judGOJCZGV8xXgAA4+3H6A for ; Thu, 23 Jul 2020 16:07:12 +0200 Return-Path: Received: from mout.gmx.net (mout.gmx.net [212.227.15.15]) by h2774747.stratoserver.net (8.15.2/8.15.2/Debian-3) with ESMTP id 06NE7B3O024111 for ; Thu, 23 Jul 2020 16:07:12 +0200 Received: from relay.uni-heidelberg.de ([129.206.100.212]) by mx-ha.gmx.net (mxgmx015 [212.227.15.9]) with ESMTP (Nemesis) id 1N7B2U-1kseNq0Uto-017QEK for ; Thu, 23 Jul 2020 16:07:06 +0200 Received: from listserv.uni-heidelberg.de ([129.206.100.94]) by relay.uni-heidelberg.de with ESMTP; 23 Jul 2020 16:07:07 +0200 Received: from listserv (localhost [127.0.0.1]) by listserv.uni-heidelberg.de (Postfix) with ESMTP id BB91F12825C; Thu, 23 Jul 2020 16:06:55 +0200 (CEST) Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 17.0) with spool id 44356745 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Thu, 23 Jul 2020 16:06:55 +0200 Delivered-To: LATEX-L@listserv.uni-heidelberg.de Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (Postfix) with ESMTP id 95DC2125BA6 for ; Thu, 23 Jul 2020 16:06:55 +0200 (CEST) X-IronPort-MID: 75531671 X-IronPort-RemoteIP: 5.35.249.60 X-IronPort-SenderGroup: UNKNOWNLIST X-IronPort-MailFlowPolicy: $ACCEPTED X-IronPort-Reputation: 5.2 IronPort-PHdr: =?us-ascii?q?9a23=3Al96VDRWLkMuEZnWZVulNHJNVtmjV8LGuZFw894?= =?us-ascii?q?YnhrRSc6+q45XlOgnl6O5wiEPSBNWAuehJj+PH9b3mWCkA7JeNvXQIfYZDER?= =?us-ascii?q?MI2o0NhwJ1JsmDBAXgKeLyKTQgFZFMTlZj/De+MFRJFcL0blbSinm78TMCXw?= =?us-ascii?q?3lMgh4LfizHZTd3Iysz+7nw5TIeE1TgSalJ7Z7LRG4twLU48cMiI1hbKMw1g?= =?us-ascii?q?fEpnFBcOR+wWp0KELWhwz75Mq74Nhk6SsD8+k5+ZtmVqP3N789UaQeDDkiND?= =?us-ascii?q?Ut49b3sBDYUQaVznAbV2gag1xECg7Z4Vf2U86r4BH3ved8xiSWePbOY+toBW?= =?us-ascii?q?aE6KFmAF/yhSMOJngk9mCSisFxgK9fqh+7qFpzztycZobdL/d4cq7HGLFSDW?= =?us-ascii?q?NcQsZcUTBACYKgfsMOCeQGJ+NRs4j6oRMHsxK/AQCmAO6nxCVPgzf62qgz0u?= =?us-ascii?q?JpFg+jvkRoEcgHtneSqdTpKKoWW+m+zIHMxCnOf7ZOwzD/5YPUNBc7rrDEXL?= =?us-ascii?q?59d9bQ1Vh6DxnM3TDy4cTuOzKY0PhIsnDOsqw7CKT11z9h9Vki6iKizcotlI?= =?us-ascii?q?TT05gYzlnVszh/wcM1KNy0RUpxbMSrVpdd5ET4f8N7RN0vR2ZwtWM00LoD7N?= =?us-ascii?q?S1ZiEMy9IixgLDZviNeoOIyhbqSOuBZC9ig3Boc675gAy9uxvFqKW0Royv3V?= =?us-ascii?q?BGozAQ2NfWv3YOkRnS9tSKTvF09UeJ3T+T2hCW8vtDI00/iezcMZFrkdtS3t?= =?us-ascii?q?ID9E/EGCHxgkD/iqSbI14l9uaf4OPierz6p5WYOtYu2DvzOakvhMGzRN8AHF?= =?us-ascii?q?RWBjqj8P+nnP358EnwUfNXiPxzkqTYvJ3eL8kBqei1Dl0d3oEm4he5RzCotb?= =?us-ascii?q?ZQ1XcdJVRGPheGk5TkP1vHK/DQCf6jjkTpiC1sxf3NIvvmGJqFInXYkbjndK?= =?us-ascii?q?pw8AYBjlFui4oDttQKUvkIO5eREgfpucbdDwMlPgD82OvhBNhnl8sfVW+JHq?= =?us-ascii?q?6FIfbXuF6M6PgoJrrEb4sUtTDhbvk9sqOo1iJ/wwNMO/fxjv51IDiiE/9rIl?= =?us-ascii?q?uUey/2j9MIACEXuAt7TOHrhFCGWzNJaDC+UvFZhHlzBYS4AIPEXo3ojqaG2X?= =?us-ascii?q?LxEIdfYGMAD1GQDXrsfYyPW98IYT6fMop5iDsGWLO9DYg72lv90W2yg6oiNe?= =?us-ascii?q?fS9iAC4NjtztFz5KvWlA0u+Dh+Bs+d+2WEU2xk23sSQD0717w5plZygATms+?= =?us-ascii?q?Awk7lTEtpd4OlMWwExOMvHzuB0PNv1XxrIYtaDTFv1CsXjGzw6Scg9hsMfe0?= =?us-ascii?q?soUcv3lQjNhmD5Zt1d36zOHpE/9bjQmmT8N9oogWiTz7Ev1hEjUoMKPGmizP?= =?us-ascii?q?clpTLeDIPIjUiV0p2SW/9GjXzr82GOhSqUsUVRQUhtV6SAXX0eakbSp9nj6Q?= =?us-ascii?q?XOQu3mD7NvKQZHxcOYT8kCItT0kVVLQuviM9XCciqwnWm3HxOB2rKLasLjZW?= =?us-ascii?q?wc2CzXDEVMnRoU+D6KMg03ByHppGy7bnQmDVX0f0bl6vVzsluwSUo5wxDMY0?= =?us-ascii?q?Rny7fz9hNUzf2QRvUP364V7ScsrzIneTT1l9nSCteGu09gZPABJ4hgpg0bhC?= =?us-ascii?q?SH7181JJGrIqF8i0RLaQlztlKoyhN2T4VNkMQnqHkn1gU0Ja/LtTEJPz6ew5?= =?us-ascii?q?30PaXab2fo+xX6IaDM01fdltOX5rsC7P4xoFXLuAi1G1pn629g0dRezz2b/J?= =?us-ascii?q?qAX29wGdrhF1068RR3veSQei4m+4bdzmFhK4G/tTrP18NvCOIj1hvmc9oVY8?= =?us-ascii?q?bmXEfiVsYdAcapMukjnVOkOwkFMO5l/6kxJ8q6dvGC1ff3btYlpyqviCF82K?= =?us-ascii?q?44yliFrnsuTufU0oZA2+uf3AaMS3H7lljz6pmmy7ABXikbGy+E8QahAYdQYq?= =?us-ascii?q?NoeoNSWDWqKtG61pBmnZnvVnVEslm5CAFfgZL7SV+pd1X4mDZo+wEXrHigwH?= =?us-ascii?q?TqxDtxnj046KaW2jDDhejvJkIK?= X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: =?us-ascii?q?A0BAAgAgmRlfmDz5IwVgHgEBCxIMQIM?= =?us-ascii?q?cIy6BSyMECyyEM4kBiBgPm3sLAQEBAQEBAQEBBgEBLAECBAEBhEwCghoCHAc?= =?us-ascii?q?BBDQTAgMBAQEDAgUBAQUBAQECAQMDBBQBAQEBAQYNCwYphWMMhXIBAQECAQE?= =?us-ascii?q?BIQ8BBQgBATIGBAsLGgImAgJXBQENCAEBFYMNgl0hAwGtZYEygwEBAQWCSoN?= =?us-ascii?q?NgTcJgQ4qjHQPfk4/gREngjsuPoEXhjyCYI9GpW0pB4JggQgEC5hGBSiCe45?= =?us-ascii?q?AjiCTdp0kAgQCBAUCFYFqgXp9gyxQGQ2OHhqIa4VEPzM3AgYBBwEBAwlPCgE?= =?us-ascii?q?BjzQBAQ?= X-IronPort-AV: E=Sophos;i="5.75,386,1589234400"; d="scan'208";a="75531671" X-MGA-submission: =?us-ascii?q?MDET/FEZuzaFWLOW+2RHEkoV4uT1BvCVK6AoEz?= =?us-ascii?q?jiPR6JzkXxdA87qR1b0kvbgaZ55vuOMhn1PR/WVbt9gG9IhxvgZIHK0h?= =?us-ascii?q?1VulvaQDyEijyiqBH6M5cXwo0Q1RxzmFfuLiweUos2fR2HSKu0GqfL2s?= =?us-ascii?q?Q8RRWgsaXbjG5J/ERa1ghxxA=3D=3D?= Received: from comedy.dante.de ([5.35.249.60]) by relay.uni-heidelberg.de with ESMTP/TLS/ECDHE-RSA-AES128-GCM-SHA256; 23 Jul 2020 16:06:56 +0200 Received: from Franks-MBP.fritz.box (p200300cbaf441c0079554bfcac460869.dip0.t-ipconnect.de [IPv6:2003:cb:af44:1c00:7955:4bfc:ac46:869]) (authenticated bits=0) by comedy.dante.de (8.15.2/8.15.2/Debian-8+deb9u1) with ESMTPSA id 06NE6qlo013718 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Thu, 23 Jul 2020 16:06:54 +0200 References: <20200723020053.jq6lnwl7k23htouz@vento15post8> User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit X-DANTE-Spam-Score: 1.17 (*) KHOP_HELO_FCRDNS,NICE_REPLY_A,SPF_FAIL,SPF_HELO_NONE X-Scanned-By: MIMEDefang 2.78 on 81.169.212.23 X-Scanned-By: MIMEDefang 2.79 Message-ID: Date: Thu, 23 Jul 2020 16:06:52 +0200 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Frank Mittelbach Subject: Re: Guidelines on the new hook management To: LATEX-L@LISTSERV.UNI-HEIDELBERG.DE In-Reply-To: <20200723020053.jq6lnwl7k23htouz@vento15post8> Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: Envelope-To: X-GMX-Antispam: 0 (Mail was not recognized as spam); Detail=V3; X-Spam-Flag: NO X-UI-Filterresults: notjunk:1;V03:K0:9SsReW3BhyY=:2YSy7IyKO7khaWxJWndiytVPzC 8HGRTx41FUujhqe9DSy8y1v6AHHfz2oh+AVVvtttxl7UpnHO54urTcFNE5FBOJtDhlSYhdlVa PBJUZWQxSHTXI7u2dDB8sHovhpiIOn+TMPWOYwVdTMx9gemePqgWwP81PfkLnjzkoYX1UDVYx vEp2IQKgpdImnifXc5hNsPZOC1ZDCUweO9NcvjVaYJawbSA/Uqn8FOSV3UkK6oW8Ctr3ak/PL UQgv2xlPeteGdBSVuSWYLi9D7N4LnA/9C+adlaKhAyk6hPv+OE3Be8WG9+0NJU04zgSHw/t+p Bafl2s3b2lZPbgPSmBN4YeG2nE80o8sCGkGMmLPVIJ+AGfYkFp0rOc80Iaw3g+LTYMtSOmDBX WlMKEOuLQFvsCtP1y+B1Lt1hL3jBgGksrsSRMd25QdvfUnoZxjHsbsz0qE2jSl2NNWAG7DOl0 Zn/loqYzCRXaHq8Tb3JVDUg3Wf1AA9k6b7Eu8ORPVNNzoT88VYD5ZSflo3p5LQ4fjuSNTKdG0 AGMDnfki4MtklPDEsj90XMmeDXYd6BLwR0d7h/T/7dkY3fb7yaO0ML55Aznfr8GrBuA+hkrlo hm3dtL7AmYhxCn2NNzYGBtB3DXVL/1ixLX8BN4fep0NJ1sn3XRK9drgQhEaydN6Zm6wlVwdSQ VVSovny/17wkvbblKotPomiMclv3rFCEZ8hp/HPkvc8QZTMhlILlc00Kx30XTgGU0OeQ1h7a9 BvNZ1ssxLKvXDWTj28GUOZ89pv38lhknOM+8x9E+RQIa5JJ0R4U+rXg7lph6RuxzHrRQsTg5U tyuMANcMGD1sn/LtT1ex5SLeUMey5ubVLvWN4wm4VDlST7093JLMHph/t7VIscgn74mfIQeMb Paz+nY6bSKay+XVmV/AElwHM7sM/LNunZf+46ztG5WFquR5sCZN2XqbxXkYrfbWZdhFcr4n2d ETlBlkvTxZx+HIMrQ0yGnre9MmfK7W8zb4/HjbSE02E983f6j77O9k+3tLjGFpRZ2HRzBIqQk 4dGdvZRvxOvfR52X/ISwqx6qI9ikEfTJyb3Tag+yejlkUs2JDaR/mq4VVsOswaPhtsQDcxlXy TTIPPLhf6WaGeHX0f0kf2UVrjeAlRR1NtZKdWKHltIFIV2jZRxn99zzFXxB1nSPiGuCLt8Xbv murZswCuncYlAl5MMC7YMPG0fIcWrj6rieOzvBm01znqagi+IGeoiOhTZqUwm995uH6BaPKlg c/an8F9yHy+SHNIWAiMxLXW+K9Cbh/SX5QJ3xSKHLHwh1f36PLFF4JqpiVetBInZaZkcFLs9a xYEmg5Sb6qUKASXjRAks1uIcDH3K+qBHPYsEd8Na2lGI2B86kziAgJsHhcFgFumsHbCpIpt7p 74Koeifp9qPkqS05zHxcRqXE6uBfkXOVuEgPnAfS/ZXSf7dFtfBFovScZKCdpPjrKl4oQz53k 0agBzkgG88LIecx+pJJzSa9bOz8Ij2/xmLqXYzL8nXb2ZvRIsp3487PO+Yu8SLQZ9IarnCc4B juDo3u4Dq8f1MHn0UgaEAay8vvqK5T4Gwd+98YZgbZOuiYzSEl6dKLiYv/u/rZGDHrBZRJI/P k70ZqxPsNoBhp0pRhnSDAHn6QN85kOS9meIvv0deWb4Vx7dgQ/Z2gy96MFrkidHivHgk5yfrh KgKHGeeKthp3tVXzOq55Iy9Evk3FsCyuWut7WwTHjHXmZ0VW6tNujVApwZxWCA4269T3EiE0O XPulDyFR5mST4iAmi1NpCJoLG3PTBtISHoskDPG6Ic59aKPbrjI6Bd2pGZOaCa5iRWOxvnoUH zUQZJoLJUdRgtLdAOv9FX8IRK6zwVoz9VmYauogQ/qUnuIU0e9SU/ZKB58DyffEzxSNhl3Yy/ gJ+dqvDWzvSSGSubGkWwLUa0OWFxeI9gVFDBn6neVyahl8L2Ip22SrpH1Mke8hun/FO4A1d7k zmkb4A++HxC9jHtjwNGy9/FeOPLkQyU9TPBjqpESoSwJbKbUbAtYCbEccPWV084+EFiAozQG5 Ki8+NxkpcC+VBM8WqBAoTuc6seiFkxmwUBjRmhMsn2+oZQ5VhLbbGA/22oL+tL+C+7/aa5UX9 jMJC2tK7caDULadhWscxV0BvrtCsLxCre/b128XHBGAmK+/IzTuuWPJbw45pnpvkluZsVbZ9Y bop1wXAUroRnOReeTyVWUyroMJzogKS29elcBbUB0AibdIAnYbeLyVDVQDamiuQnIiSF6duMa x0KUnb9wreoFI6d6LYZ5UujdpU4VGWWPTH+oabwMKGgOnf7Xf1P/z3+PR44sDvRwnQvZNGKXD YQHPCxGNoCVPQazrq9656a22/NcYdlwRxyd52dpOMBNvUCtnwZoLkV5E/SfedReFDY792Hqbz Dt1t0s8SvvuDzec8KrPwJYvF9acIWZpLYk2wD9KIUzQ4YzeQWG1qs9hIvK/sfFxS7KV5hzisy XCQTRb5Cn2Tij8LwBcRcj6iaioGkdttQ2+j5Yby5mQgSG/3oD5fyJm+zVO9w8eiXVeJbsb9wV FV5a/UU5dpPQDkNmNK4Osz5YLXVvfYK5183KcdGTvS+hHgim0CIM2Lkq2l6XXlUbEnzplfCvO WU9A+dfVqgMVl3U+CGgn+9NrnsVlkb7+EVORJKZIdAu/l++hgZqseAawzmVl1ndWnylFfmlpC gCfmypuDfw6A9apA/UHOptwp0nTd1gWGLfXH1mJSfoPZ1i2Gs5ViUQx+XchDfIcE0jTOANC6J 2K3fvh3AwdGjGLr3KHmGcYBBBGfkkJDutj6b5O2rqPFSCpArDB+C3dydj7uVUnMWQte7eP/9J y6MI50azyscbDeg1ecgq+ve2TtZNlG51i2zwPWLnV2FinUpaHMjR68A7N8828j5aVNeSo5O3E 5L4f799sGWxm4S4Ik8SnUYpD9pxsqm0UyVqxZn8pqwAg6dpgtP5UZHIqfhRkdvi2zN/xYlP0j GtgwfsYDkRfhllJX9hwA0eRbvKZAa455eEIbCEGeoIOnHEzrkyj+hv+L6PNTus5RBctH/excG enq23o3JSVtTeRpsKL6xPThyvmkX+YwrWzlabWerQyHTBfLo+PSi6ki/6iWi9DWu/0lPIH/sx vBM15TH+7Sc+vbxgwZQvS2l+Nur5RIAn1UnLnONhllhr6/yIh7VolBNqoqJj6n9L7y7aCtQD+ RtixW9YogdVk2L+LhbI1gVei5NoOgJ6HV7vcTR9/ATpUghrZssdx27zWSsYIZ9eXjttIp9n9Y pLmzekXmmO6T6E/Bwm91JUDYmiLGOLLkpHIuounvBRrv6xv3DGCnhnSFt8p302DwMTY/vc8bk VW/CgHm8cN2fRQ1rQ45vJTTMDfKZaWyPFzVBw+2IqKIQjOYbO6Yt1LHbqxn3wxDGgTyvWE/3O hzFT2BMONfMIVsEKV0Y1VlQU2UIncCgb0Q3d+NY1vd4KYpr+Y+BBXD6FuUSdCaxFqNKEN61j5 SqaBlTMtmQlBRyO9iMsDSZwpfg4DhrkWuzf70rCzJsaWEP+Kxgho4WePiK1dmQcODEe/hZNhv Y7qjSjInZ+FDwzdLlZnDdO410ewBeJXNh+DUlYdZhN+3MiME9nvgMiLkApViMkUAmmDheiiTH sNXI5a4JHa2VIjosjarHLgERvLVl8T6Tbsc6rw8cAe89RFsJUhB0oV6liH7PVbwt73+nDEyWq iICC5hMjb1hSFAo2GSSRJWAWqV/M9Fx0yFKQEz9JdIg1v+scnxTwhrOtwLjBvgsuLfYu8TroQ kzB0nQ0UTUItLl/S/ThXICzh1ngvHvKgRn6wEg+XitEiYl1eP3gjQAN6nZEhXlVH9Y1XY5/W5 KMiAVw0VVTCwsJjNZGn+tw85487dEFMm9ushzU4sZQp0+6JDEN7vCMoB6PBEZDR1dh/F2n9QT u9/R4dhjxa7lEcA8pOqmkMKywsU4h6WZDMc/qx9mNOaSrn3S6XIWqOv3M5yan2GHr6YoDGZmb qVYYlPL5wJaQYshUb1LbYC9Db7tah0B90wR+WeZFs68o9CEFfiv5Mk1vIUYOWST+O7WOZVLPS ZzccvdUxJpXaAF0eZVCQWJy5Clyv/oCBsc/Ka3DI/VIrBJ61MGN04l3KZ/p5Z+ndcgDidAq8i N8C/VFMOeetZzBu+y6SsfH7JXmClgF5f5vSVWvW2WV3b1DiQS8ZH4dnc9dy/AOpXLX/gibroi 9h1mVy5JwlsFjaZSY3lqRh0OVFQCVEk+M6Y8/MjfzFZHpXtAR+llXd+ojqrFUTGeW2+B1W5zD pave7ief1b2E0fxAmoudGGpui2rTAU2FLofbH87+fqR41lOm9WIhmKsF+CRZUwaNGgJ+pGAs+ He64Enk8SxEAru/EHdXhnwRrsJD8bMcNUqG8flrOjqpo3VmwxyHmUiW2ExxN5UqLFfKjnp6zz G X-UI-Loop:V01:5vZ6ID/djYY=:HRaxaLg/WuQ0Jz+staYflzVMeNGdDirbCdbjrhS3OtA= X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:GBdITi6a0U4=:rxLwwFsj/MIlA2EPm+tbub B4PpXbn54ry08F947ZWyNIgSgvlYUKslqI29B9bz6DitlRc0vC5ZpHx+2o8cFwYyOMoQ608lj VuAo702F6r4Aiq4J5OifYNAxxZnIY7xawjlBteOTWZfu0YHXHos3gYllWMYwAIlWJxjTLbeb7 CflyGfUHWEcMuhEd7wUcmIUzEHBFZBXk5u6Rbe9XwwUUP78lpfjiwk6vh1uZSkTZrZTFFbMTF PYcGHVmCmDcmzzWK0j0SGBaNA5C/9/fHhlR26QL/hpxBEjhaI32Z6+DoKEpHOwiM05uOp+QAc TWncMphu1U0gXtcafJ7hGLhARhRc1oCFvHYafLgPR9HCtE2icB2+HDU8o77SSdFMuxSOFt7AK 0X7L6pxG8LoXTP1EAu0y3eYeo1h2QbCRH0uWLP4o6ONBoJsbm3hXyfhqDuvoAWTGtIZqTjb24 23U+CYlcE56vaxy/IAGgwDGONCAgDo8= Status: R X-Status: X-Keywords: X-UID: 8215 Hi Henri > Inspired by issue #900 on the PGF/TikZ repo [1], I'd like to kick off > the discussion on how to correctly integrate the new hook management > system into existing LaTeX package codebases. > > In a naïve adaptation, two code branches would be maintained, with and > without the new hook management. This is quite tedious for maintainers, > especially when trying to integrate this properly into existing CI. > As you say there has to be some transition time and that puts some burden on maintainers if they want to provide compatibility with different versions of LaTeX out there in user installations. Life would be easy if people would update their installations as a whole but as we know some people run some very old TeX distribution but then try to upload individual packages from CTAN. ------------ When it comes to a large functionality increase (like the hook management offers) then it really depends on how (or if) a package makes use of it for the best kind of approach. Case A: you don't use it or only through already existing legacy but supported interfaces If the package just uses \AtBeginDocument, or say the hooks offered through etoolbox etc, then everything should be transparent Case B: you intend to use the new functionality in earnest, e.g., by adding your own hooks or add code to hooks not available in the kernel previously In that case I think the best approach is to consider the earlier implementation of the package as "frozen for older kernels" and structure your package as follows: % this because it is also fairly new: \providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} % load frozen version for older kernels \IfFormatAtLeastTF{2020/10/01}{}{\input{mypackage-yyyy-mm-dd.sty}} % needs to be separate to apply to right file \IfFormatAtLeastTF{2020/10/01}{}{\endinput} % code for current version This way all actively maintained code is in one place without code branches other than at the very top to pick up the frozen version. ------- If the package in this form would be now placed on CTAN it would work both in latex-dev and latex (running any older kernel) After release of 2020/10/01 there is then the option to keep this version of the package or at some later stage replace the top by \NeedsTeXFormat{LaTeX2e}[2020/10/01] to declare that the package on CTAN needs at least this kernel version. Frank