From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Adam Porter Newsgroups: gmane.emacs.devel Subject: Re: Improving Emacs' iCalendar support Date: Sat, 19 Oct 2024 00:44:49 -0500 Message-ID: <0bacd69a-7941-44d2-ac5e-3ae3f256481a@alphapapa.net> References: <87ed4dss2x.fsf@ohm.mail-host-address-is-not-set> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="9252"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: emacs-devel@gnu.org To: rwl@recursewithless.net Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Oct 19 07:45:58 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1t22Hl-0002EM-6y for ged-emacs-devel@m.gmane-mx.org; Sat, 19 Oct 2024 07:45:57 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1t22Go-0006wn-AY; Sat, 19 Oct 2024 01:44:58 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t22Gl-0006wR-Ag for emacs-devel@gnu.org; Sat, 19 Oct 2024 01:44:55 -0400 Original-Received: from fly.ash.relay.mailchannels.net ([23.83.222.61]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1t22Gj-0000qa-KA for emacs-devel@gnu.org; Sat, 19 Oct 2024 01:44:55 -0400 X-Sender-Id: dreamhost|x-authsender|adam@alphapapa.net Original-Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 881622C2955; Sat, 19 Oct 2024 05:44:51 +0000 (UTC) Original-Received: from pdx1-sub0-mail-a266.dreamhost.com (100-98-223-68.trex-nlb.outbound.svc.cluster.local [100.98.223.68]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 248DF2C2F35; Sat, 19 Oct 2024 05:44:51 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1729316691; a=rsa-sha256; cv=none; b=kQYKCT5TqprUGwqCM3I95MGCDIxURolswsV1yJ/Zc2fFWEA4hrjsU3VedDyT3nlIKy8q9w zGyfLrPyqRTk8tsBlJZMeWUFIjwShswWwv02m3h+mTTNjfqBf/7Ih9M7i81gXtSjVr/1I4 4cHRNBiJTnMRJeTrLX6dh5Oca7dLrhfKKZA2OxswoEs/0amrZGZRdvhUbQGfkTJ21vzmXy GiR3CW24QdmUhMly6qqy8DLwVxsdM6PCVsJOeZIzU1/bhC5bXBErf71Ls04GNyptr8GaCZ bdbVn9MzkYd+J1t6SiyVKUH2vkooptVlmZ6M+LLRrblmkG65yTdQhk+ULg7UwQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1729316691; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=WeP9LLg4oVnLqoBbjeeGn604r+oeu3k+/T38kcFcac8=; b=H9vi0KOc2XoSKeJ9raX/0/1pzkK5YGGrxgH+l/tgPdHNjSPG6N/nDkpv4BXQ9r4ktc5Sft v4gCb5AkSb+E8qPn2GNxgUHbPKLQ71ivQaVOwZns4t73keZSdfz05AYtJjyqYB7WgjwBw8 latcE9sb7SHR6AdPzZwA04pJ198oirtZghSmlqk/5z6/EhH0GA+yCxCbJraOqB7iKqVJ1m 50ZBZEOpoinaO6fefWK1ogKpNV7h+8TAoqGizX1tQ5fFJQjNUkt94M+zvwXwLR2jmOUYEX x/sL+jI7hHTVvt05CFTGTfAvrF0u/tX5KzEN09w1nXPCRWaIaIxxCFl2yK2BNA== ARC-Authentication-Results: i=1; rspamd-75d86777c9-7msqt; auth=pass smtp.auth=dreamhost smtp.mailfrom=adam@alphapapa.net X-Sender-Id: dreamhost|x-authsender|adam@alphapapa.net X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|adam@alphapapa.net X-MailChannels-Auth-Id: dreamhost X-Zesty-Robust: 1b266b69178fb240_1729316691364_1580891034 X-MC-Loop-Signature: 1729316691364:3415645251 X-MC-Ingress-Time: 1729316691364 Original-Received: from pdx1-sub0-mail-a266.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.98.223.68 (trex/7.0.2); Sat, 19 Oct 2024 05:44:51 +0000 Original-Received: from [10.130.92.89] (unknown [45.92.229.138]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: adam@alphapapa.net) by pdx1-sub0-mail-a266.dreamhost.com (Postfix) with ESMTPSA id 4XVrBB4Ry2z2R; Fri, 18 Oct 2024 22:44:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alphapapa.net; s=dreamhost; t=1729316691; bh=WeP9LLg4oVnLqoBbjeeGn604r+oeu3k+/T38kcFcac8=; h=Date:To:Cc:Subject:From:Content-Type:Content-Transfer-Encoding; b=Ax7WdhCUR/c7yRg41zgglfhfrQZ34gwCHfLSiEijeX/6EUCQM5/r+qRmQtcC/x5GZ b1pylrgVEBcipcL32oGVZRNcdtVObXl93uPRpJ1K7uttmpFLicIe43tZFcDyTFlIV6 zrSQy7yirZe6R26Nih7XJYo9MyhXubZ3o46b2SUZpCxCbSjgSddz+ZXaUpGlIMymNN jZrYztF2Wg/iH7hqziH3dfpSipoXg1uXrLRnxguI0qb4DTx2JTBSNdJpy40OP774v+ 8x+Crqe0/9YuV+tVk4jK/MvM5XpumOBxNUMlxDxoFZNE8igElXgy7RsgvEjema0vdz JsXexX+4r7FlQ== Content-Language: en-US In-Reply-To: <87ed4dss2x.fsf@ohm.mail-host-address-is-not-set> Received-SPF: neutral client-ip=23.83.222.61; envelope-from=adam@alphapapa.net; helo=fly.ash.relay.mailchannels.net X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:324669 Archived-At: Hi Richard, I don't have much to add to what's been said, but my first thought is that a robust iCal library would probably be most useful for importing and exporting between the iCal format, obviously. So I'd suggest that its API should help with transforming iCal data into other formats, probably by converting it into a simple Lisp data structure that other libraries could work with. And then, it should also provide a function to transform that data structure back into an iCal file. Also, it would be good if it were designed to be extensible in case the standards receive updates, or in case vendor-specific functionality is needed by users. So I'd suggest looking at the existing Emacs/Org applications that use iCal, and designing your API so that such applications would find it easy to use (not that it should directly imitate what already exists, unless such APIs are already ideal). Finally, I'd suggest that you consider using structs as the primary internal data structure, because they provide setter and accessor functions, which are helpful to developers (e.g. they help catch some mistakes at compilation time). If you do, I've found it helpful to define an "etc" slot in various structs to which an alist or plist can be attached, which provides the ability for the structs to carry additional data that wasn't foreseen during its design. --Adam