From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp12.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id eG8mOBL/t2LCPAAAbAwnHQ (envelope-from ) for ; Sun, 26 Jun 2022 08:39:14 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp12.migadu.com with LMTPS id OPP2NxL/t2J3ygAAauVa8A (envelope-from ) for ; Sun, 26 Jun 2022 08:39:14 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 6BE212F041 for ; Sun, 26 Jun 2022 08:39:14 +0200 (CEST) Received: from localhost ([::1]:51922 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o5LvN-00040y-3I for larch@yhetil.org; Sun, 26 Jun 2022 02:39:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58374) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o5LuD-00040p-MO for emacs-orgmode@gnu.org; Sun, 26 Jun 2022 02:38:01 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]:39523) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1o5LuB-0007JJ-SW; Sun, 26 Jun 2022 02:38:01 -0400 Received: by mail-pl1-x634.google.com with SMTP id a17so5556446pls.6; Sat, 25 Jun 2022 23:37:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=message-id:subject:from:to:cc:date:in-reply-to :content-transfer-encoding:user-agent:mime-version; bh=vPbY9b9EMxWRvCl/Ks8w8eH3bOF3fol8m17rfGsY/r4=; b=V0pMMe85sHSL0nXKO6LRP4OcxKXcvaa49nTpuD7y5SiXoWqC2GiHLT6QMssoMhuNoa L4uNb/YslBxZEx5Qk6dGW3eo1TQaxUNSCZBAk+Kp0RhZXto+fEc/GJjchQVIsMWf9U+p X1SfFGE74QDJqKKYFIwOojYdVx2bGJkJj/BvF4cVkLQMU/SSfCH6YqZdK9UGS5EOqgKw 8uTts0+JLlOU/YrVUcxBPa9uujcTI2JTnzWToQUt9pF0jE4/SZgS5Zr+7Dmoeou8M2/k ddywCSzwmlDRevrVHS9xzEBFTY07Vd1YOy2/iNB/B/ZS3B/jVLLFXhBEnZdVkcra/QDi xCyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :content-transfer-encoding:user-agent:mime-version; bh=vPbY9b9EMxWRvCl/Ks8w8eH3bOF3fol8m17rfGsY/r4=; b=fXh4bHrgyY/AU4Gm7nZQhC9VYtelmHPv0B2BYBnI3TTe9mgAJKRwuDHNpmYAfTYkGI rplseIhk5/KJZF+fT8lD/+z+AVcxUKMsCRdUkgvuL1V3CkVkYqVqiCTjC2LakSGjZeh9 JJXCPZ8wkIVqLyMBJ/yA+12f8GEE8KKK6ajdWKjWfxOJJJErwoO3f8ov8mqe1VwXKmno T9bbTiCgEPoKYBHUduhGqPuSODMvHhRxdwf0Qyc2HPP57HyOFBct7FTeaE5oU9LQFlVi XAoNrQt7cSJvzHT/Eyq6O/rnhU1/k8jd6G3lokv4RUL50qD4GlMYfpjHW3Z7/sxiGEXt oztQ== X-Gm-Message-State: AJIora9u6UwypZwpeWPHszRrp3LvlVi+fYPnbk+uhikBHd+bT2/q1R63 bgng49q4EMqgdsvoU0MfcHIKNvYgBeg= X-Google-Smtp-Source: AGRyM1vH7wOyGiYFfbOp7scTFk7SnWyWPqTkYPOP29xMki6NHdPdQPjLGCp0Q53tCMVY+CTL4sbT9g== X-Received: by 2002:a17:90b:4ac9:b0:1ec:9bd1:92ff with SMTP id mh9-20020a17090b4ac900b001ec9bd192ffmr8260577pjb.178.1656225477227; Sat, 25 Jun 2022 23:37:57 -0700 (PDT) Received: from ?IPv6:2601:647:5f00:f350:135e:dc94:1e8a:bdd6? ([2601:647:5f00:f350:135e:dc94:1e8a:bdd6]) by smtp.gmail.com with ESMTPSA id c15-20020a17090a1d0f00b001e2fade86c1sm6838879pjd.2.2022.06.25.23.37.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 25 Jun 2022 23:37:56 -0700 (PDT) Message-ID: <4451244f7fd0ea50bcd2a2270b5e75b320b2feaf.camel@gmail.com> Subject: Re: Org and Hyperbole From: Siva Swaminathan To: rsw@gnu.org Cc: emacs-orgmode@gnu.org, rswgnu@gmail.com Date: Sat, 25 Jun 2022 23:37:55 -0700 In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.44.2 MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::634; envelope-from=siva.rk.sw@gmail.com; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 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, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-orgmode@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: "Emacs-orgmode" X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1656225554; h=from:from:sender:sender: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:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=vPbY9b9EMxWRvCl/Ks8w8eH3bOF3fol8m17rfGsY/r4=; b=Fr0YhNaPvRlAL4XNN07lpHsFrfTIG46F942spkXihP+n69gyyIernvTqF3qXho+7X1mkGO byHXv71Tjci8YMGzkiYI3isswCBcZNaxt+O8x1KbKnRxMHTvY3JWUWkDwjVK8VMG8IlvaN /n6cO6lKDymaYZiqAuL7csL4xGjRB6xvfVmsJxKDjiRlKeEewKN0YqoLq8yzQuMV7UvkBq aqXGTqlIdSMlPD19/N82GHZwQJqRmciZ/Ful79rDJBibfIObKGYQ7hYddH4zxuuOHj9BKQ vBpYHSrzTGGrmuxa6acXsNTgpqzSuHlA53AC9UkKQYx38K8J6+9r1qEoZ84CUw== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1656225554; a=rsa-sha256; cv=none; b=OdA02itlLJ6j3uIO5w1E2ezz+XLACMD5GNC4+cPcTjmm4sBeZPgrLbl46DfHs644m9gqb5 V/vhks+y+tqWLnFjAPtuk0baJ1S7BZ99IPfUSmdG8AWWLQJIp8mB7cZcBSzx8ADZ3jkHgh Gz75ACHotjvOeAZgokWhX33TpQ4IYkqhTNNQ7F58e8FyNg2tqWw/Rh85UpPUcLGGDsRnOn sMBla4d1Auupni7MWBArxy9YGm5ayjwAhvws8Ywvv7+jh0uHArqW2lYQFUjt3JOS+sfC23 svNP+pgelEaO504UqFII+3A2YBP+t2anzFZhIpvCCDy2KtNjXfzZQhSAc0yr9w== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=V0pMMe85; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -8.26 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=gmail.com header.s=20210112 header.b=V0pMMe85; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (aspmx1.migadu.com: domain of "emacs-orgmode-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="emacs-orgmode-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 6BE212F041 X-Spam-Score: -8.26 X-Migadu-Scanner: scn0.migadu.com X-TUID: 6uE2yGcKQq0E Hello, I only recently became aware of Hyperbole (through Bob's demo video available on Youtube), and came across this thread while googling to find more information about Hyperbole. I feel that some of the questions raised here about Hyperbole sound akin to the story of five blind men feeling the elephant, so I humbly offer my perspective on what I consider to be the key underlying ideas. Forgive me if I'm stating the obvious, and I also don't know whether Hyperbole as currently implemented does exactly all this :-) I'd like to think of the key idea of Hyperbole as converting text in buffers into *objects* (aka "buttons") by attaching *behavior* to them. The two actions provided by convention could be thought of as akin to the left-click and right-click which one is familiar with in contemporary GUIs, in this case respectively bound to methods for "do (by default)" and "show metadata". Supporting more behaviors/methods/messages for user-invocation is an obvious next idea (if not already so). The above system would be of quite limited composability if it required objects to be defined explicitly -- because most buffers one operates on are generated without awareness of Hyperbole (imagine the pain of everything needing to conform to something like a Hyperbole framework/protocol!). The cleverness behind implicit buttons is that one can opportunistically use common conventions as "schemas" to "parse / deserialize" the contents which make up an object from any buffer (in this case via regexps) and attach corresponding (expected) behaviors to them! Because of the highly structured nature of such data, even if embedded in a stream of plain text, it can typically be parsed correctly without needing explicit type annotations. The behaviors could presumably depend not just the object, but also the active modes, environment variables, etc. Here are a few made-up example use cases (hand-waving over details): 1. I might embed phrases such as "bug:123" in my code / emails / org task management and have behaviors that respectively fetch the bug report / open some URL in a browser / or update the TODO status based on the bug status, as desired. This would help me interface conveniently with a bespoke bug-tracking tool. 2. On encountering Goodreads links in my reading list org file, I could have a behavior to parse the contents of the webpage and extract desired metadata to add to the item properties (or an entry to some org table). 3. Linking by immutable block identifiers (and fast lookup) of course enables a lot of PKM workflows that have recently become popular (with the addition of bidirectional links). Other aspects such as menus generated from button files seem like convenient affordances bolted on to make up the UI of the system. I still need to wrap my mind around these, but I wonder whether there might be opportunities to compose with other ecosystem tools which have pioneered some nice UI ideas eg. transient menus, hydras, interactive selection lists, etc. But that's a discussion for the Hyperbole mailing list. >From a first impression, I'm really impressed, and also surprised that Hyperbole is not more popular. Much gratitude to the contributors for a nifty tool, and a fascinating design perspective. Best regards, Siva http://sivark.me