From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id kKy5NrSi7mPtiQAAbAwnHQ (envelope-from ) for ; Thu, 16 Feb 2023 22:40:04 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id sHkNN7Si7mPyDQAA9RJhRA (envelope-from ) for ; Thu, 16 Feb 2023 22:40:04 +0100 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 6E96A39B5C for ; Thu, 16 Feb 2023 22:40:04 +0100 (CET) Authentication-Results: aspmx1.migadu.com; dkim=none; 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"; dmarc=none ARC-Seal: i=1; s=key1; d=yhetil.org; t=1676583604; a=rsa-sha256; cv=none; b=NoiwQbC4zNtA7HRaRQ4xE5faDbJLoZrwGEuOuOkunC6qdLgNLGaUg7w4bniBRbOn2+NZng nSLEDL/pDYBLeuakvdCRJ8LigqGvxcfl62zpaKGJDP79A/k9yvNDpHNVVpxZ+rhyABSiW+ 2IOwvpDcB11qFbjGRyjtTVbSKb9h8GKCvvxvjfDzxfPUxtjez/0i1czkRx6tN9VsdWKbWY ziirKxMDV40inM+x7JofWkjxaFdM5ZKL49f4IYsl4cyu/7hcLY3n8YijXxE/33efdnzfSG cU3y/edBwdjYB0Xq1IVQEX5fkmfDtoQdBJjjIweCKRZa02tzFd7WYds7iTR5Ng== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; 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"; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1676583604; 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:references:references:list-id:list-help: list-unsubscribe:list-subscribe:list-post; bh=cz9E+ekx3y+SHn/f7WiPh2Uq+66oVValDyrmUyLMzO0=; b=H6JZ94BVAoD7bfyXjCI7LG2fnvYp7fephZsmc+907FdSC3C8mAa1eLkYHHYpmp31qjR+9V FsPCW26mWmoSzJu5hqSpa5/Tp8FGSHjLkiiN2UUZMn/XHn/wBCf6AlBrl0cKFcBTxYwqmy 85W8dzbClviR89BSiVzkoax2mHzvef0ikSIdUe/VWh8w7Awdp4aSTJYqNpSILAFyplpxGm PC7WDx8YDGDGgOJJ2LIN3QdiqmFpYbapAQBisXzZqNMhr8l6zABLW1DzWNXNUq6VjG1jTp bKQno0VxqOBWYSs7QCbyqBoudEGbh2h60EYaSBY5KbKRbZniTX5Lhl3a4qDA4g== Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pSlyE-0006hP-4U; Thu, 16 Feb 2023 16:39:14 -0500 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 1pSlyC-0006f2-4o for emacs-orgmode@gnu.org; Thu, 16 Feb 2023 16:39:12 -0500 Received: from stw1.rcdrun.com ([217.170.207.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pSly7-0004V2-H2 for emacs-orgmode@gnu.org; Thu, 16 Feb 2023 16:39:11 -0500 Received: from localhost ([::ffff:197.239.5.201]) (AUTH: PLAIN admin, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 0000000000103A05.0000000063EEA27B.00005CB7; Thu, 16 Feb 2023 14:39:07 -0700 Date: Thu, 16 Feb 2023 23:40:49 +0300 From: Jean Louis To: Cletip Cletip Cc: Org Mode List Subject: Re: Link type in org-mode, but with org-roam ? Message-ID: Mail-Followup-To: Cletip Cletip , Org Mode List References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/2.2.9+54 (af2080d) (2022-11-21) Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.8 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_SBL=0.141, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_FILL_THIS_FORM_SHORT=0.01 autolearn=no 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: X-Migadu-Queue-Id: 6E96A39B5C X-Spam-Score: -1.22 X-Migadu-Spam-Score: -1.22 X-Migadu-Scanner: scn0.migadu.com List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+larch=yhetil.org@gnu.org Sender: emacs-orgmode-bounces+larch=yhetil.org@gnu.org X-Migadu-Flow: FLOW_IN X-Migadu-Country: US X-TUID: RWe2W0/HQ2Ex * Clément Payard [2023-02-16 13:16]: >  First of all, thank you for your answer. > > Sorry, I am not a researcher :(. I'm just a modest student with a passion > for emacs, org-mode and PKM environment. So I'm not a big thing ^^. But I > think I have a working brain and good ideas... so here I am. > The perfect system as I described it does not exist. I've been "looking" > for... 6 or 7 months ? Whatever, I think I'll get to the end of this > search. I was referring to researcher in the definition of what you do, investigating, researching about note taking. Now I realize that the word is used almost exclusively for scientists. > But, before talking about anything, I would like to know several > things: > - I've heard of Hyperscope before your previous message. I mean, I've looked > at some of your posts and (I think) videos... but I still don't understand > where to find it. Can't use it / test it. I think this is on purpose, you > didn't finish it. Yes, I have that problem that database tables are really very dynamic and not well polished to just give them to people. And software is also not polished, it has some hard coding that I have to modify. Yes, I am very slow in providing public package for RCD Notes & Hyperscope for GNU Emacs. But I am very willing to help you install it and try it all out and make it workable on your computer, in one on one chat or by e-mail, that will work well. I strongly suggest reading and understanding this system: GeDaFe - PostgreSQL Generic Database Interface: http://gedafe.github.io/doc/gedafe-sql.en.html As the database is based on that design. Design of program basically says: - design the database table by GeDaFe schema - let system provide functions like add, modify, delete, duplicate automatically > I only found this: > https://hyperscope.link/3/7/1/5/5/RCD-Notes-for-Emacs-37155.html , > which gives a link to get "rcd-cf", which works at my place (after > installing the "emacs-libpq" dependency). I just don't know how to > use it... Is there a tutorial I can do somewhere? Explanations > somewhere? Ehm. I am not Drew Adams to have it all ready since decades. I am working from time to time on documentation and want to make it exteremely easy to install it. One part of it I almost ported to SQLite for people management, but have to polish functions. It just starts working with the Emacs SQLite built-in. So I need to set it up that for user it "just works" for PostgreSQL. > - Second thing, your system seems extremely flexible and adaptable Which is good. It is based on GeDaFe, which means, user is able to add any table, and continue managing information by using same system. > but it also seems terribly rigid. That may be opinion. What is rigid are only relationships, I can say what is rigid: - column timestamp are rigid, they will accept only specific time stamps, and will be automatically generated mostly - referenced columns are rigid, I can relate note only to person which exist in the database. I cannot relate it to person that does not have an entry in the database. If I wish to do so, than I would write it in the text of the entry. But cannot relate it in the database. - column types are rigid, for example ID is integer, I cannot write it as text, UUID must be UUID and must conform to the format, I cannot write integer for UUID. Apart from those rigid principles, nothing else is rigid that I know, at least by feeling, without knowing exactly what you mean. > I don't know what your goal is exactly, but my goal is to make a > system that is easy to use, where the information doesn't have to be > arranged perfectly. Goals are defined in features: RCD Notes & Hyperscope for GNU Emacs, The Dynamic Knowledge Repository: https://gnu.support/gnu-emacs/rcd-notes-for-gnu-emacs/index.html Some of main goals are sales, or helping people, or moving people from one stage to other stage. Imagine some sales flow like: 10, Client has received the offer online 20, Client engages in conversation and resolves all questions and doubts 30, Client arranges the meeting 40, The agreement proposal is sent to client 50, Client may propose modifications to the agreement 60, Client signs up the agreement and pays 70, Service delivered Then person is moved from one stage to other by using communication and documents. Similar "flows" can be applied with patients in a hospital, or orphan child in Tanzania, or development of a school in Uganda. This system overall is used for planning in order to reach goals and purposes. We manage resources, inventory, their locations, geographic locations of resources, maps, people, their locations, their expenditure, reports, plans, programs, projects, tasks, all with purposes of delivering valuable final product. However, system can be used to play Blues Brothers or Red Hot Chilli Peppers. It may be used to quickly find some relevant information and help others find references, such as from Gutenberg, or knowledge libraries. It may be used as communication center, call center, Customer Relationship Management. Too many things to even describe at once. > The problem is that if I don't set up "templates", things always in > the same place, with always the same structure, I won't be able to > have queryable information (because how find the information if it's > not the same format/place ?). I think with "templates" you refer to structure of database table. You may try using function M-x cf-sql-table as it is Emacs skeleton to help with database table creation. Within seconds I create this below: -- ------------------------------------------ -- ------------ Table notes -- ------------------------------------------ DROP SEQUENCE notes_id_seq; CREATE TABLE notes ( notes_id INTEGER GENERATED BY DEFAULT AS IDENTITY, notes_uuid UUID NOT NULL DEFAULT gen_random_uuid(), notes_datecreated TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP NOT NULL, notes_datemodified TIMESTAMP WITH TIME ZONE, notes_usercreated TEXT NOT NULL DEFAULT current_user, notes_usermodified TEXT NOT NULL DEFAULT current_user, notes_name TEXT NOT NULL, notes_description TEXT ); GRANT ALL ON notes TO PUBLIC; DROP VIEW notes_combo; CREATE OR REPLACE VIEW notes_combo AS SELECT notes_id AS id, notes_name AS TEXT FROM notes; GRANT SELECT ON notes_combo TO PUBLIC; COMMENT ON TABLE notes IS 'Notes'; COMMENT ON COLUMN notes.notes_id IS 'ID'; COMMENT ON COLUMN notes.notes_uuid IS 'UUID'; COMMENT ON COLUMN notes.notes_datecreated IS 'Date created'; COMMENT ON COLUMN notes.notes_datemodified IS 'Date modified'; COMMENT ON COLUMN notes.notes_usercreated IS 'User created'; COMMENT ON COLUMN notes.notes_usermodified IS 'User modified'; COMMENT ON COLUMN notes.notes_name IS 'Name'; COMMENT ON COLUMN notes.notes_description IS 'Description'; -- CREATE UNIQUE INDEX notes_index ON notes ( notes_name ); -- INSERT INTO notes (notes_name) VALUES (''); -- INSERT INTO meta_tables VALUES ('notes', 'hide', '1'); -- Triggers -- For Date Modified CREATE TRIGGER notes_moddatetime BEFORE UPDATE ON notes FOR EACH ROW EXECUTE PROCEDURE moddatetime(notes_datemodified); -- For User Modified CREATE TRIGGER insert_username_notes BEFORE INSERT OR UPDATE ON notes FOR EACH ROW EXECUTE PROCEDURE insert_username(notes_usermodified); So the above is "template" in the database, it defines which types of entries are there. "Notes name" is always string, cannot be number, but it can be string having number. That is simple example. In my workflow, when developing new database table I do this: (rcd-db-create-table "newtable" MY-HANDLE) Then I start adding some items, then if I feel I need new column, I do that interactively in Emacs. I think everything should be interactive and easily integrated for user, I am working on it. It should be M-x rcd-db-create-table interactively, and not only as function. > So I decided that only certain information would be queryable, > information that I judge to be useful. Everything may be queried. With PostgreSQL you may add column for "tokens", and then get full text search, which means, you could push all of the column values into those tokens, and have PostgreSQL handle queries for you. This is very useful feature. Hyperscope full text search with PostgreSQL: https://hyperscope.link/3/6/7/6/8/Hyperscope-full-text-search-with-PostgreSQL-36768.html PostgreSQL: Documentation: 15: Chapter 12. Full Text Search: https://www.postgresql.org/docs/15/textsearch.html Currently I have 64+ ways of searching for information. My experience tells me you should develop in structured way. Do not use "First name, last name", but use: - "First name" - "Middle name" - "Last name" as 3 fields. Same principle shall apply for other information. If you have "Date, note name" as mixed string, better separate "Date" from "Note name". Structure and add properties. After a while you may do intersections and query by means possible ways. It becomes Dynamic Knowledge Repository, when system become capable to represent the needed knowledge for human and help human move in processes of life. > A new piece of information that I don't need to be queryable, but > just need to be found, will therefore be very easy to store. For me I can query anything, I can find anything. I do not know what you mean with "to query" versus "to find". > The problem and the great weakness of such a system is that I have > to define the queryable information in advance. No, you need not think of that. Do you use database? I am not thinking in advance about "queryable" information. I am thinking of structure, or types, and do not worry of future. All types, columns, anything is automatically capable to be queried. Here is example of addresses structure: Table "public.addresses" ┌─────────────────────────┬──────────────────────────┬───────────┬──────────┬─────────────────────────────────────────────────┐ │ Column │ Type │ Collation │ Nullable │ Default │ ├─────────────────────────┼──────────────────────────┼───────────┼──────────┼─────────────────────────────────────────────────┤ │ addresses_id │ integer │ │ not null │ nextval('addresses_addresses_id_seq'::regclass) │ │ addresses_datecreated │ timestamp with time zone │ │ not null │ CURRENT_TIMESTAMP │ │ addresses_datemodified │ timestamp with time zone │ │ │ │ │ addresses_usercreated │ text │ │ not null │ CURRENT_USER │ │ addresses_usermodified │ text │ │ not null │ CURRENT_USER │ │ addresses_people │ integer │ │ │ │ │ addresses_addresstypes │ integer │ │ not null │ 1 │ │ addresses_name │ text │ │ not null │ 'Address'::text │ │ addresses_line1 │ text │ │ │ │ │ addresses_line2 │ text │ │ │ │ │ addresses_line3 │ text │ │ │ │ │ addresses_city │ text │ │ │ │ │ addresses_region │ text │ │ │ │ │ addresses_postcode │ text │ │ │ │ │ addresses_countries │ integer │ │ │ │ │ addresses_datevalidated │ timestamp with time zone │ │ │ │ │ addresses_locations │ integer │ │ │ │ │ addresses_description │ text │ │ │ │ │ addresses_inactive │ boolean │ │ │ │ │ addresses_default │ boolean │ │ │ │ │ addresses_uuid │ uuid │ │ not null │ gen_random_uuid() │ └─────────────────────────┴──────────────────────────┴───────────┴──────────┴─────────────────────────────────────────────────┘ Indexes: "addresses_pkey" PRIMARY KEY, btree (addresses_id) "addresses_addresses_uuid_key" UNIQUE CONSTRAINT, btree (addresses_uuid) Foreign-key constraints: "addresses_addresses_addresstypes_fkey" FOREIGN KEY (addresses_addresstypes) REFERENCES addresstypes(addresstypes_id) "addresses_addresses_countries_fkey" FOREIGN KEY (addresses_countries) REFERENCES countries(countries_id) "addresses_addresses_locations_fkey" FOREIGN KEY (addresses_locations) REFERENCES locations(locations_id) "addresses_addresses_people_fkey" FOREIGN KEY (addresses_people) REFERENCES people(people_id) Referenced by: TABLE "commlines" CONSTRAINT "commlines_commlines_addresses_fkey" FOREIGN KEY (commlines_addresses) REFERENCES addresses(addresses_id) Triggers: addresses_moddatetime BEFORE UPDATE ON addresses FOR EACH ROW EXECUTE FUNCTION moddatetime('addresses_datemodified') insert_username_addresses BEFORE INSERT OR UPDATE ON addresses FOR EACH ROW EXECUTE FUNCTION insert_username('addresses_usermodified') And here is list of address types: 1 Default address 2 Billing Address 3 Shipping Address 4 Registered Address 5 Work address 6 Mailing address 7 Post Box Address 8 Origin addresss Because of the design of tables, and conditional correct entries into the database, it becomes very easy to find for example "POST BOX" address of all people in Mwanza city. But if I would not define address types, I would have more serious problem to find those post box addresses. > Whereas you may have the opposite problem: every piece of > information is queryable, but a new piece of information takes a > long time to put away. I do not understand "put away", is it to "remove it"? I do not understand the problem. > You can't just put information down like that (maybe I am wrong, > maybe you can. But from what I understand, no). And that's the > dilemma: either you make something extremely rigid, but "queryable", > i.e. you can query the system itself with requests. Making database based structure of objects is to many degrees way more beneficial than having it without structure. > Or we do something extremely flexible, exactly like a big org-mode > file where we just put the information, and the user can use his > method (grep for example). For single user that may be fine. For collaborative work, multi-user access is not, or sharing of information, it is not. That is why Org development strive to provide more and more structure, something I said, they try to make it like a database, but because there is no structure, it becomes the never ending story of milions of bugs. > For me, the perfection was between the> two, exactly what org-roam > offers: org-mode + database in the background for some operations. I wish I could try org-roam, but I get error, so I follow instructions and cannot install it. In my work I use meta level. First I am liberated from Org mode, or any kind of mode. And I like flexibility to mix various markups. I can use universal hyperlinks that convert themselves into necessary markup. I don't like being dependent on some "mode". If markup is Org, hyperlink will become Org hyperlink, if markup is Markdown, hyperlink will become Markdown link, if it is text, it will be shown in text. Why do I need to record 3 versions of same document, better one, which can be just represented in different way. > All this to get to the next thing: AI. I can give my notes, which > are very flexible, to ChatGPT, and ask it complex questions about > the notes I would never give my information to outside companies I do not know. I understand you. Though I do not see personal use of it. > So, my big question: aren't our respective (mine with org-roam + > org-roam + metadata, and yours with Hyperscope) systems already > obsolete? Maybe you wish to say how artificial intelligence could replace many systems. Though personally I do not see how present state of AI would know what I need. I can definitely think that my program could get some functions "to see the patterns" and then help me create let us say new sets. And program without artificial intelligence can tell me who has got birthday today, or tomorrow, to help with relationships, or it can tell which person received information X, so that person can be called to be given information Y, moving person from one stage to other. Those simple serial intelligent detection and reminders may be programmed. > Is it useful to make such a complex system when maybe in 2 years > time an open source AI will be able to understand 95% of the > questions asked? Maybe, however, you compared things which are not comparable. > I've chosen my side: I'll wait for the release of an AI, and I > remain flexible, without breaking my head to make the ideal > database, with the ideal links and the ideal notes. There is no ideal. In fact, my side everything started with GeDaFe and function M-x cf-sql-table and it is very dynamic, changeable, over time it get better and better, more useful, perfected. Once system is there so automatically provide interface for ANY kind of database tables, then person can practically do anything with it. On each entry make some function you need, and upgrade with time. It becomes personal extension, cyborg like. > On the other hand, I am capable of listening to you and changing my > mind if you think that your method, rigid and based on databases, is > viable and brings a plus in the long term despite the arrival of the > AI. I can't tell what it brings to you, as I said, it is very personal, though it does go towards common found purposes, such as Customer Relationship Management. > - Finally, I need some clarifications on some points, but maybe I just > misunderstood: >   - you put "types" and "subtypes"... why? To take your example with Music > and Country, why not define, in the "node" / heading / Hyperdocument the > term "Country", and say that it is a subclass of music? (with a particular > type of link for example). A bit like wikidata. I understand you, and that is quite possible. Though not same. Purpose of types is to understand type of object, subtype describes purpose of the object. If type is spreadsheet, subtype may say it is "Financial Plan". On my side, the type: - can have embedded Emacs Lisp, it means, user can say how is this type handled, activated, - it can have different available Emacs mode, that is property of type - it may have multiple minor modes - designation if it is file, or database object for computer to know how to handle it - template - 3 tags that are automatically assigned to all of those objects of that type - priority - embedded key for dynamic keymap (not programmed, but user defined) - "Activity" signal, as what is active is similar to task, meeting, something "TO DO", what is not active is not considered for actions - foreground, background color, fancy name for presentations - next activity type, because some things like task, can be followed up with "follow-up" type, or similar and unlimited other properties that I can add over time. Those properties of the type I cannot add in a single string where I am to write two words, similar like categories. And writing of a name by hand is not my choice, I choose types much quicker. Subtype of document is something like stronger tag, but not floating tag, it is more rigid. For example "Document, Loan Request" would give quite clear intersection of such documents. Subtypes also have properties, though are not considered as strong as types. > - what is the differences between ID and UUID in your system ? ID is local to the database, while UUID is general. By using UUID, it is possible to export the object, without ID, and import to other database, creating there maybe different ID, however, because of the UUID, both parties would know we are dealing with same person Joe Doe, or referring to same object. ID is used as primary key and it is easier to sort items by integer then by UUID. And UUID I use as universal hyperlink, very handy. Think of Org, instead of: #+BEGIN_SRC my-program (defun hyperscope-list-tokens-not-updated () "List Hyperdocuments without full text searcch tokens." (interactive) (let* ((sql "SELECT hyobjects_id FROM hyobjects WHERE hyobjects_tokens IS NULL ORDER BY hyobjects_rank DESC") (id-list (rcd-sql sql hs-db))) (hyperscope-by-id-list id-list "No hyperdocuments found without updated tokens."))) #+END_SRC I could use this: ⟦ (uuid "dccbe9ff-9c5f-4b02-919e-0849cf272707") ⟧ and by clicking on the above UUID I would find me in different object, editing that above function. It would interpolate it's result in the source object. Or I could do this: #+BEGIN_SRC my-program (uuid-link "dccbe9ff-9c5f-4b02-919e-0849cf272707") #+END_SRC and similarly, by clicking on the above UUID, I would find me in different environment, edit Babel program and come back. Or I can use universal hyperlink, like hyperscope:d7c8d51f-ffaa-4ffc-bb3e-627d048b4c02 in Org, or HTML, or in PDF, which brings me back to Hyperdocument in computer. This is very practical, we have already many projects printed, or as PDF, where user can just click back and forth to task, and back to Table of Contents, or just by clicking straight to Emacs to edit the people entry, or Hyperdocument entry. I did not yet make experimental or demonstration of it, but we use it in business managing thousands of dollars and people on different parts of country and world this way. >   - your links have uuid, it's an "own entity", an "Elementary Objects". I > think this is great on paper, really. The problem: Doesn't it become too > complicated to manage the types of links and all the relation possible > between two Hyperdocument ? What is complicated is writing documentation about it. It is not complicated managing relations between hyperdocuments or people. - "c c" is for "duplicate" Hyperdocument, new document get automatically CHILD relationship to PARENT - there is function to relate selected (with cursor) Hyperdocument to other Hyperdocument, by using completion - there is function to relate visible Hyperdocuments in a list to each other - there are functions to relate people to Hyperdocuments I understand that it can all sound difficult, but practically, I can teach new person in 10 minutes the work, and person will perform. There is nothing special to it. It is very integrated now. When I look in the database, I have 8771 not-unique people related to Hyperdocuments, that many relationships are inside. But does it matter? The number sounds overwhelming and it does not matter! What matters is the specific, not general information. - I get idea that I have to inform client about basic principles of business XYZ, and it is associated with word "establishment" by using "C-c h n" - I write "establish" RET and get 32 results - The most referenced Hyperdocument is WWW hyperlink, and it is on first place - I find the set on 2nd place, arrow down and right or "j" and "l" and I enter in the set (key binding similar to Vi) - I find document I want to share to client - but did I share it already? I do not remember, so I press keys "s r" to see relationships to people. - I see that his name is not in list of people who got the document, and I share it to client with "h s" and choosing client's name - Document is now automatically related to that person with relation "INFORMED BY EMAIL" and relation type can be anything It is matter of habit. Just like all other keys in Emacs, one get the habit and it works well. >   - I have absolutely no idea what Hyperscope, rcd and org-mode have to do > with it. I'm trying to understand, watching your video... but nothing. I > understand only the general idea. I can totally understand you. I am well aware that it is so. Even if documentation would be there, I would understand. Let us say I have a technical hobby and 15000 PDF references to various technical articles, nicely indexed. In this case system is used for learning, without reading or wasting time on pages which are not essential. Only what is essential can be quickly selected or referenced, or new lists of PDF or WWW presentations formed out of it. Project assignments can be formed out of it. Maybe I wish to find quicker books in Gutenberg library, so I do that function. Maybe there are teams of people, I assign them tasks, but then system generates automatically the project structure with all tasks inside, so the PDF document can be printed and be given to all people in transparent way, to know which person is assigned to what task. What does Org mode has with it? Nothing fixed. I can write anything in Org mode, or in other markup, it is multi markup system, I can mix markups, as objects are separated, they are not in one file. Write task in simple text, OK, it will be embedded, but maybe not so nice looking as written in Org or LaTeX. It is something that user may define, it is a table of markups. 1 Text to text 2 Text to HTML (body only) 3 Text to PDF 4 Text to text with lines joined 5 Discount Markdown to HTML 6 Discount Markdown to text 7 txt2tags to HTML 8 Org to HTML 9 Markdown (Discount Markdown) to Asciidoc 10 Markdown (Discount) with Table of Content to PDF 11 Text to LaTeX 12 Markdown (Discount) with Table of Content to HTML 13 txt2tags to LaTeX 14 Text to HTML (with full page and template) 15 Asciidoctor to HTML 16 Wikitext to HTML 17 Asciidoc to HTML 18 Asciidoc to LaTeX (body only) 19 Org to LaTeX (body only) 20 Djot to HTML 21 Asciidoctor to Text 22 LaTeX to PDF 23 Org to PDF 24 Text to HTML (preformatted) You can then imagine that objects can have different markups, or none, plain text, and they can be converted to some other main markup. > To take the example of org-roam, we have: org-mode which is > plain-text. For me it is not "plain text" no matter how someone call it. It is structured, and cannot be used actively without being structured. It has deceptive motto that it is "plain text". Then I could say for XML that it is also "plain text", well that is not quite so. It must have expected structure to be Org text. Plain text has no relation to a program, it is plain. > org-roam allows to store in a database some information present in org-mode, > like the title, the links etc. Then, when searching, we rely on this > information and this database. But the useful information itself is often > underneath this database layer: these are the org-mode files. I can't assimilate to those approaches. I have tried and used Org successfully until the point of realization that it does not scale well. My needs are different. Number of my Maildirs is 59934. That is number of people I have communicated to or number of conversations. The program "mu4e" can't handle that, it does not work, it gets stuck forever, author admitted it can't. There is 240676 people in the database. I cannot handle that with any other software, and they are tied to marketing efforts. 53131 Hyperdocuments are there. GeDaFe taught me to go with easy approach, and so I use the principles of GeDaFe for long time. Create database table as I wish, manage it automatically. > I was going to launch into a paragraph of theory but I don't think > that's useful: it will be wrong and will waste writing time for me > and reading time for you. Anyway: what is the link between your > differents "layers", that is : Hyperscope, rcd, databases, org-mode, > etc ? Who does what, and how? They may be layers for you, I do not see it as such. Database is for ordered storage, I do not think of it. Org mode is just one of multiple markups which I can use, I can use any markup. Major point is communication with people that is why all those Hyperdocuments are there and people management. I can give practical example: - local chairman is found on ground - we greet chairman, and collect full contact information (CRM + Hyperscope) - we find his house, and record GPS position (not all countries have street numbers) (geographic locations table) - team member quit and goes to other company - new team member is assigned - chairman and all actors in the village are exported and given as information to team member - team member knows background of the chairman, could be mean person, or get information how to handle him In that practical example knowledge is used to smooth the future processes of the business. Design is described here: TECHNOLOGY TEMPLATE PROJECT OHS Framework : https://www.dougengelbart.org/content/view/110/460/ Reasons or purposes are described here: About Dynamic Knowledge Repositories (DKR): https://www.dougengelbart.org/content/view/190/163/ The CODIAK Process Cluster: Best Strategic Application Candidate6: https://www.dougengelbart.org/content/view/116/#6 ,---- | The concurrent development, integration and application of knowledge. `---- ,---- | Intelligence Collection: An alert project group, whether classified as | an A, B, or C Activity, always keeps a watchful eye on its external | environment, actively surveying, ingesting, and interacting with | it. The resulting intelligence is integrated with other project | knowledge on an ongoing basis to identify problems, needs, and | opportunities which might require attention or action. 6g1 `---- ,---- | Dialog Records: Responding effectively to needs and opportunities | involves a high degree of coordination and dialog within and across | project groups. This dialog, along with resulting decisions, is | integrated with other project knowledge on a continuing basis. `---- ,---- | Knowledge Product: The resulting plans provide a comprehensive picture | of the project at hand, including proposals, specifications, | descriptions, work breakdown structures, milestones, time lines, | staffing, facility requirements, budgets, and so on. These documents, | which are iteratively and collaboratively developed, represent the | knowledge products of the project team, and constitute both the | current project status and a roadmap for implementation and | deployment. The CODIAK process is rarely a one-shot effort. Lessons | learned, as well as intelligence and dialog, must be constantly | analyzed, digested, and integrated into the knowledge products | throughout the life cycle of the project `---- That description is accurate, that is exactly what is taking place. It is evolving, dynamical knowledge, that results with the purposes. ,---- | The Community's basic knowledge products could be viewed as dynamic | electronic handbooks on "how to be better at your improvement tasks," | with two customer groups: its B-Activity customers; and the C | Community itself. Pooling resources from the member organizations | enables a more advanced and rapidly evolving prototype CODIAK | environment, which serves two very important purposes: | | 1. It provides for the Community getting better and better at its | basic "C Activity;" | | 2. It provides advanced experience for its rotating staff of | participants from the member organizations. They thus develop real | understanding about the real issues involved in boosting CODIAK | capability - this understanding being absorbed by "living out there in | a real, hard-working CODIAK frontier." `---- By looking into principles of Doug Engelbart, I can see how it has to be developed. And I am not doing it for sake of development per se. I must do it for sake of getting things done. My "things" involve handling complex relationships with people, meetings, understanding people's goals, purposes, policies, complying to their viewpoints (it involves good dose of pretending), solving issues, and making agreements. I can track it on paper, but I get some problems with it, so that is why we track in the database, and move people and processes from one stage to other stage towards goals and purposes. -- Jean Take action in Free Software Foundation campaigns: https://www.fsf.org/campaigns In support of Richard M. Stallman https://stallmansupport.org/