Org-mode mailing list
 help / color / mirror / Atom feed
* One vs many directories
@ 2020-11-21  0:33 Texas Cyberthal
  2020-11-21  5:13 ` Ihor Radchenko
                   ` (3 more replies)
  0 siblings, 4 replies; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-21  0:33 UTC (permalink / raw)
  To: emacs-orgmode

Having a tall directory tree with many leaves and branches is against
Org's philosophy.

Here is my argument that such a structure is objectively correct for
personal info management:

https://github.com/cyberthal/10-Bins-template

For the record, Org works fine with this, although I had to do a bit
of config to get around the default philosophy.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  0:33 One vs many directories Texas Cyberthal
@ 2020-11-21  5:13 ` Ihor Radchenko
  2020-11-21  7:56   ` Jean Louis
  2020-11-21  6:12 ` Palak Mathur
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-21  5:13 UTC (permalink / raw)
  To: Texas Cyberthal, emacs-orgmode

> Having a tall directory tree with many leaves and branches is against
> Org's philosophy.

I am wondering what you mean by Org's philosophy. Why would it have
anything to do with directories?

> Here is my argument that such a structure is objectively correct for
> personal info management:
>
> https://github.com/cyberthal/10-Bins-template

If you wanted feedback on this, I believe that Karl Voit's article below
is relevant. I guess you can even directly contact him if you wish - he
knows a lot about theory of classification.

https://karl-voit.at/2020/01/25/avoid-complex-folder-hierarchies/

Best,
Ihor

Texas Cyberthal <texas.cyberthal@gmail.com> writes:

> Having a tall directory tree with many leaves and branches is against
> Org's philosophy.
>
> Here is my argument that such a structure is objectively correct for
> personal info management:
>
> https://github.com/cyberthal/10-Bins-template
>
> For the record, Org works fine with this, although I had to do a bit
> of config to get around the default philosophy.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  0:33 One vs many directories Texas Cyberthal
  2020-11-21  5:13 ` Ihor Radchenko
@ 2020-11-21  6:12 ` Palak Mathur
  2020-11-21  9:04   ` Jean Louis
  2020-11-21  6:36 ` Jean Louis
  2020-11-21 13:41 ` Jonathan McHugh
  3 siblings, 1 reply; 121+ messages in thread
From: Palak Mathur @ 2020-11-21  6:12 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: emacs-orgmode

On Fri, Nov 20, 2020 at 6:34 PM Texas Cyberthal
<texas.cyberthal@gmail.com> wrote:
>
> Having a tall directory tree with many leaves and branches is against
> Org's philosophy.
>
> Here is my argument that such a structure is objectively correct for
> personal info management:
>
> https://github.com/cyberthal/10-Bins-template
>
> For the record, Org works fine with this, although I had to do a bit
> of config to get around the default philosophy.
>

I read through the README but it seems overwhelming to have 10
directories. I am not saying it is not good just that I will not be
able to handle those. Even now when I have just three main files -
inbox, work and archive, I am very bad at refiling items (I do it but
rarely). I mostly rely on Agenda views to make things make sense for
me. With 10 directories, I will surely never be able to refile
anything as half of the time I will just be spending time in deciding
where the item belongs.

It surely will be good for more diligent people unlike me.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  0:33 One vs many directories Texas Cyberthal
  2020-11-21  5:13 ` Ihor Radchenko
  2020-11-21  6:12 ` Palak Mathur
@ 2020-11-21  6:36 ` Jean Louis
  2020-11-21  7:17   ` Texas Cyberthal
  2020-11-21 13:41 ` Jonathan McHugh
  3 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-21  6:36 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: emacs-orgmode

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-21 03:35]:
> Having a tall directory tree with many leaves and branches is against
> Org's philosophy.

Thank you for your nice ideas.

Here is your fellow classifier of information.

I don't know what is Org's strategy but if you mean many deep
subheadings my deepest is with 7 stars ******* and quite I have 7 even
of them in 850 Kb file and there are thousands of Org files on my
system.

Point is that apparently it becomes harder and hard to organize if one
does not have enhanced system of organizing. Org is rather for notes
and it not for everything

> Here is my argument that such a structure is objectively correct for
> personal info management:
> 
> https://github.com/cyberthal/10-Bins-template
> 
> For the record, Org works fine with this, although I had to do a bit
> of config to get around the default philosophy.

Your system is understandable and great idea.

Some of first ideas on filing files and notes and any piece of
knowledge in an organized manner have been presented by Doug
Engelbart, forfather of modern computing and I recommend reviewing his
work for your further thinkering.

Personally I have created similar filing system and now I may upgrade
by using parts of your offered paradigm. Maybe you pick up some of
these ideas as well.

In my life I deal with people including me and groups of people. One
person can belong to various groups of people. As both groups and
people can have same names all of them have their unique ID
numbers. And I work both with the file system and the PostgreSQL
database in background.There are just few directories that I define at
beginning, those are:

- Directories for groups or accounts how I call it since years, for
  example /home/me/data/accounts/By-ID and
  /home/me/data/accounts/By-Name

- Directories for individuals for example /home/me/data/people/By-ID
  and /home/me/data/people/By-Name

Those By-Name directories are symlinks to By-ID/UNIQUE-ID and those
symlinks need to be updated from time to time as people change their
names and there may be duplicate names, so name can look like
John-Doe-1 or John-Doe-2, those are just helpers

After that I forget anything about the above structure, so I do not
work any more with remembering the structure, not at all.

Then there are helper programs in Dired and outside of Emacs that
should work with any file manager. If file manager supports
external scripts such as Rox filer or Midnight Commander or Nautilus,
that is fine.

Let us say that I wish to file something related to the Civil War, at
first such account should exist in the database. So if it does not
exist it is created very quickly at moment of filing.

Accounts have their location in terms of the address not quite in
terms of a continent or they may be without location.

I would press s-f in Dired and choose the proper account by using
completion, normally helm. Then the file is filed under date of filing
there.

During that process I know nothing where the file is located
exactly. That is what program does for me, I am not remembering the
location neither I know where it is but I could find it when I wish.

Files goes there:

/home/me/data/accounts/By-ID/102/2020/11/2020-11-21/file-here.org and
/home/me/data/accounts/By-Name/Civil-War/2020/11/2020-11-21/file-here.org
pointing as symlink to above unique ID

That is all, after that I forget about the file.

When it comes the time to research the subject again, I just browse or
find the account "Civil War" and I say: Go to files

Then the files of Civil War are opened in front of me and I can find
it by using find-dired, I can find it by using system locate tool that
is very flexible as I can search by its specific directory, right?

Let us say I deal with person Joe Doe, normally I look into the
database for the person, and database also have location
information. There are sometimes Joe Does in various countries in
various cities so I have to quickly locate the right Joe Doe.

Once I find the Joe Doe, at a click of the key F4 I am already in the
Org file for Joe Doe. If Org file does not exist it is created on the
file and contains all the basic information I usually need to manage
for Joe Doe.

As if I am sending tasks to Joe Doe and organization X has relation to
Joe Doe, then why should I keep Joe Doe's information in one Org file?
Or few that may be personal?

Personal Org file I keep under my ID's directory. Org file related to
specific person I keep in that specific person's ID directory. My
personal Org file may point or hyperlink to some persons. Though I
find reference to such hyperlinks through communication and various
lists, and not through the list I make in my personal Org file.

I can just save the file and forget about it. But I never remember
where the file is located because that is what computer does for me. I
do not know the name of the file. That is what computer does for
me.

Another user of the computer would not know the location of file but
user would be able to always work with the file and to locate quickly
the file.

The paradigm of the PostgreSQL and general relational database entries
is reflected on the file system that becomes relational file system.

When searching in the database for anything, I am not looking where
such entry is stored, I am looking for the name or other meaning
related to the entry. Then I can find all other pieces of information
related to that entry.

Filing on file system and general filing of any pieces of information
should be related to each other as much as necessary so that by
finding one piece of information one may browse or come to those other
pieces of information through its relations.

When I search for Joe Doe, I can press F3 and one Org file is opened,
constructed on the fly, that shows me all needed relations of this
contacts:
		    ________________________________

		     PROFILE FOR CONTACT ID: 239917

			       NAME HERE
		    ________________________________


		   Saturday, November 21 2020, 08:08


Table of Contents
_________________

1. Profile for Joe Doe, contact ID: 239917
2. Pictures for contact 239917
3. Notes for contact ID: 239917
4. SMS list
5. Mailing list subscriptions
6. Mailings received
7. Interactions
8. Emails
9. Calls

In every subheading of such automatically on-the-fly created Org file
I have hyperlinks pointing to pieces of information related to that
person or actual notes, SMSs inside. Emails are in email folders that
can be quickly opened without thinking where such email folder is
located. 

Treefactor has paradigm of filing into 10 bins. I do not find it is
idiosyncratic even if it is peculiar to your system of filing. It is
so much similar to the ideas of Doug Engelbart how things should be
filed that other users can also access files by X type of queries and
that you as main user can find it easily.

> 1 Make info easily retrievable when needed. The next time you need
>  the info, you will think of it in X way. So file it at X location,
>  to convenience future you.

That is right.

By general principle to make it easily retrievable when needed I agree
on that. My searching goes by group names and by individual names and
locations and other attributes of those groups and individuals. I may
search for the country name and I am ending up in the folder related
to countries. But from countries I may not go to individuals. As if I
file a note about country then it is about legalities like various
laws, security, geology and similar. When the need arises in future I
can easily link information.

The SQL table `countries` is similar to following:

 countries_id 
 countries_name
 countries_code
 countries_prefix (phone prefix)

There are also tables `region` and `continents`, and then there are
groups of countries, for example there is group Europe and there is
group European Union and Schengen Zone.

Then if I need some particular field I can just add it to the table
`countries` such as:

 countries_apostille

to designate if country does provide international legalization by
Hague convention.

Then for reach table there shall be known what is the "name" part of
the able, in this case: countries_name, but sometimes it could be
countries_title or counties_hid (human ID) or similar. Once the setup
is made, the file system structure can be automatically derived.

All I want is to file this law into country profile, but not into
database, so I may invoke filing by country, continent, region or
city, you name it. Program is that decides WHERE it will be filed by
using those various identifiers.

In general I am not filing by location if such information is personal
or belongs to specific group. This is because that specific group
already has its location defined in the database and specific
individuals may have location in their profile and because my files
mostly related to people I interact with, they are many times sent by
those people to me.

If files are sent by specific date, such as image, then I am filing it
by choosing the date. Otherwise files are filed under the currend date
of the today under the file belonging to the group or individual.

Notes of person are filed in the database and they can also be on file
system. When opening the profile Org file I have access to all notes
in the same one view or one file (that does not exist on the file
system). From there I see all notes of the person such as notes in the
database and notes in the file system. If necessary I can save such
meta Org file or automatically update it next time.

> These rules sound complicated in theory, but they're easy in practice:

> 1 Useful stuff goes up.
> 2 Useless stuff goes down.
> 3 Put things where you'll find them.

At time of filing a piece of information it is hard to know what will
be useful in future and it is hard to know what and why is useful in
present time.

For this reason various grouping or lists or subsets are important
where one can file other piece of information.

For example there is group FOLLOW-UP where I put people I have to
follow-up until they are not followed up.Person could be member of the
group FRIENDS but not a friend that I follow up with communication or
bring through certain stage or process. Some people are in the group
of AGENTS and some have been sent BIRTHDAY-CARD, some are relatives of
person ABC and so on, all those relations once established should then
be quickly accessed from one piece of information to other.

My ranking is  thus based on various groups that designate ranking.

There is basic and on the fly created group of last contacts.

M-x cf-last-contacts

shows me all the last 200-300 last contacts entered into the
database by their group, country, by the date they are entered.

> 0-Inbox is first because its existence is a red flag. If it exists,
> then you should stop and refile it before anything else. Otherwise,
> arbitrary headings can be lost indefinitely in bypassed inboxes
> buried in the tree!

Good concept.

My inbox for files is usually $HOME directory or $HOME/TO-SORT or
$HOME/TO-DO

Those files need to be filed and notes created for future, or maybe
deleted. When filed they get its use, become useful.

Example is the mining license pertaining to specific person, if not
filed under that person due to nature that I am looking for people and
not files, I would not find the file that is not filed. When I speak
next time to that person I would not know what the person speaks
about:

"Hey, how do you find the licensed location?"

- now if I know the name or email of person, I can quickly search and
  find all notes, files and the license. I can be able to answer
  quickly. When dealing with thousands of people that is the way to
  go. I will know what to answer if I have filed people, groups, files
  in proper place. If I have not, I am lost and relation may get
  broken because I am not following up and not knowing what person is
  talking about. And that is business that I am losing if I am not
  organized.

> 1-Outbox is next because it is effectively the Inbox for another
> repo. A similar danger applies, although at least you know the info
> doesn't belong in the current repo.

I support this idea though personally I have not get other
repositories. I have external hard disks with videos that I cannot
possibly keep internally and I have external hosting space with
files. They are (should be) all sorted through the dynamic knowledge
repository that is named HyperScope.

If the file is under subject "Hobby" at location of external disk ABC,
then such is indexed in HyperScope. All I need to do is to click on
the file. If disk is not connected, program has to tell me where to
find the disk with the specific designation. If disk is connected and
not mounted it has to get mounted when I need it and file is opened.

All that time I need not know exactly where such file is located. All
I know is either AUTHOR name or SUBJECT of video or VIDEO FILE NAME
that I see in front of me, maybe I can see description and some tags
or marks. But where the file is really located I do not need to see.

So I spare all the time to search for files by browsing the file
system. I search for author or name and files are found
automatically.

> 2-Codex is next. Its content is terse and dense. You don't want your
> code snippets buried in your prose.

Idea is good. Personally not so important.

My software is filed under some directory and various subjects.

If it belongs to person it may be filed under specific person. Let us
say there is group: Emacs Package Authors, it is quite easy to index
authors, to file their software into their place which I do not
consciously need to know where it is, to extract the README or package
commentary and form an index. Then by using HyperScope I can quickly
access the index or update their files let us say by using `git
pull`. Or I could automate the process.

In software world authors are almost invisible as their names are
buried, maybe that is customarily I do not know but not that I agree
to that fact. I do like to know the author's name at least as there is
quite a difference if software is written by Thierry Volpiatto or by
`jtbm37`. The difference is related to trust, quality and familiarity
of software. Especially free software is used often by relation to the
community or by some principles of software creation. Those principles
originate from developers and their philosophies such as OpenBSD or
DragonflyBSD principles or philosophies, or GNU and Richard Stallman's
philosophy, or freedom pushing GNU Hyperbola/Linux-libre and GNU Guix
operating systems.

> Info also varies by retrievability. The more costly the retrieval,
> the less profitable the info.  Maintenance cost also reduces info
> profitability.

Not that I can relate to this. Retrieval is not for me important
attribute to note.

> Stable info has high retrievability and low maintenance cost. The next
> four directories are ranked primarily by stability.

> 4-Time is first, since both money and time are precisely and
> objectively quantifiable. Both are precious.

That is one necessary factor for classifications. I am using it and it
is done automatically by the date of filing or semi-automatically when
I wish to designate specific date to the filing.

> 5-Location is next, because geography is quite stable and
> fundamental, as is architecture. Both are a bit more ambiguous and
> dynamic than time and money, though.

As locations are related to people and accounts (entities, groups,
lists) my search for file under specific location goes over account or
group, not over location to account, but that is also possible.

I am searching for the group "Transport" with country "Uganda", so I
find transporters in Uganda or in city Kampala and their files are
quickly opened without me knowing where the files are, and their
emails are opened without me seeing their email address, it is just by
click as things are hyperlinked.

While I do agree to file by location, I think it is not manageable
without using the database. There are continents, 248 countries in my
database system, there are so many regions, cities, etc. My people are
located in 229 countries. Do I really want their data located under
countries? I do not think so. That would be too much geographical
information on the file system. I can search for country and find
peple in that country or that city, but not that I wish to have too
many geographical attributes on the file system as that is repetition
not necessary. My database of people has 196159 people. Majority of
them have their location, it is mostly country, often state and
city.

I can find a mining engineer in country Senegal if I wish so, that has
some work experience and I can see files pertaining to this
person. But not that I would make file system directory Senegal to
find the files for this person, as Senegal as attribute is already
related to specific subset of people in the database.

While I am using similar system of searching by location, I am not
filing necessarily by location. Unless that filing relates to the
location itself as a group such as USA/Colorado/Laws/LLC-Law.txt

Same for objects.

> 7-Name is next. Names are more ephemeral than objects. Your personal
> nomenclature evolves gradually.

Quite clear.

> The last two directories follow the priority-density rule again.

> 8-Action is next. Plans are more ephemeral than names, but more
> important than background info.

> 9-Background is last. It contains huge quantities of
> poorly-retrievable info, most of it easily replaceable.

I have plans in the database. There are plans as stragegical plans,
tactical plans, projects that fulfill specific plan step, tasks that
fullfil specific project's step, goals, purposes, etc.

When person belongs to project, person is related to that project.

If I then wish to look into the plan or project, I can also see which
people are related to plan or project and act upon it.

Set of hyperlinks in HyperScope can provide me a hyperlink to the file
where by such hyperlink is related to specific contact 123 and
specific project 234.

Hyperlinks belonging to one subset of things are then organized
together.

HyperScope is my main dynamic knowledge repository of many things,
various hyperlinks.

It can create dynamic on the fly meta Org file that points out to all
the other Org files, any kind of files as hyperlinks (not only WWW),
PDFs, movies, images, notes, people and groups, etc.

> This improves iterational velocity, accuracy, creativity, and
> effective intelligence.

While I have expressed some personal preferences and differences, I am
in full agreement that systems of knowledge organizing such as
Treefactor are useful and helpful.

And I think that every person is able to develop such for oneself. It
is not that hard or complex. It is just a paradigm that one wish and
wants to adopt and apply in life.

When used for the benefit of the group such paradigm increases the
collective IQ.

The system of organizing knowledge you have described would be so much
more useful if it would be practically used by people of the same
group. That is where it increases collective IQ tremendously.

References:

Doug Engelbart Institute - Boosting mankind's capability for coping with complex, urgent problems
https://www.dougengelbart.org/

Draft OHS-Project Plan
https://web.archive.org/web/20070704185333/http://www.bootstrap.org/augdocs/bi-2120.html

TECHNOLOGY TEMPLATE PROJECT OHS Framework 
https://www.dougengelbart.org/content/view/110/460/

Addressing Hyperdocument Content And Structure
https://www.dougengelbart.org/content/view/110/460/#2b1

Toward High-Performance Organizations A Strategic Role for Groupware 
https://www.dougengelbart.org/content/view/116/#7j

About Dynamic Knowledge Repositories (DKR)
https://www.dougengelbart.org/content/view/190/163/



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  6:36 ` Jean Louis
@ 2020-11-21  7:17   ` Texas Cyberthal
  2020-11-21  9:53     ` Jean Louis
  2020-11-23  5:40     ` Ihor Radchenko
  0 siblings, 2 replies; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-21  7:17 UTC (permalink / raw)
  Cc: emacs-orgmode

***** Hi Ihor Radchenko,

> I am wondering what you mean by Org's philosophy. Why would it have anything to do with directories?

Org's philosophy is to have one or a handful of directories without
nesting of directories.  Users are not expected to have their Org
files in a deeply nested tree.  Org also prefers big files with large
trees rather than lots of little files.

By philosophy, I mean the dev consensus on the correct way to do
things, and coded configuration and usability biases.

I know this is Org's philosophy because I violated it thoroughly when
writing Treefactor documentation, and was told as much.  I can see how
it wouldn't be obvious to casual users.

Good idea, I'll comment on Voit's article, thanks.

***** Hi Palak Mathur,

> it seems overwhelming to have 10 directories. I am not saying it is not good just that I will not be able to handle those.

I didn't anticipate this problem.  Maybe practicing with Treefactor
and Dired would build this muscle over time.

The rules are written to be straightforward at filing time.  One need
only consider one object at a time.  Cascade filing means one need
only compare the object with one directory at a time.  The first match
wins.  I should emphasize that in the docs.

Having all your headings jumbled into three huge files sounds like a
state of permanent intractable overwhelm to me.

***** Hi Jean Louis,

You are using Hyperscope as your primary PIM but integrating it with
Org, and it sounds like you're using PostGreSQL and the directory tree
together somehow.  I don't fully understand it.

Clearly a database can do more than a directory tree alone.  The cost
is that a database is more complex to use and maintain.  So that which
can be handled by directory tree alone, should be.

> I can find a mining engineer in country Senegal if I wish so, that has some work experience and I can see files pertaining to this person. But not that I would make file system directory Senegal to find the files for this person

Of course not.  You would find a person under his name, not his
country.  The person can move to a different country, after all.  At
most you might link him to the country, as part of a list of people
from X country.  But that is something better handled by a real
database.

To clarify, Treefactor is just an Emacs package with some minimal
opinions.  10 Bins is an opinionated directory tree template.  Neither
requires the other, but they're both part of Cyborganize, my overall
PIM and publishing system.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  5:13 ` Ihor Radchenko
@ 2020-11-21  7:56   ` Jean Louis
  2020-11-21  8:31     ` Texas Cyberthal
  2020-11-21 15:03     ` Dr. Arne Babenhauserheide
  0 siblings, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-21  7:56 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-21 08:15]:
> > Having a tall directory tree with many leaves and branches is against
> > Org's philosophy.
> 
> I am wondering what you mean by Org's philosophy. Why would it have
> anything to do with directories?

Texas will answer on that.

I am just intruding in the conversation.

From Org manual:

"Org keeps simple things simple."

I do think that Org does more than keeping things simple. When it
comes to seriously complex things Org is not there for such.

When there are more than 2000 people related notes, tasks,
calculations, questions arise if such better be kept in one Org file
or multiple Org files in one directory or multiple directories for
multiple Org files?!

With increasing complexities one can see that Org as such is good for
those purposes as written in the manual.

Org mode is not appropriate for meta-level organizing.

The Org paradigm is good for meta-level organizing.

That is where directories come into play.

In my opinion directories should never bother user. User should just
pre-define sets of directories such as: People, Groups, you name it,
and files should be accessible in such directories automatically.

I want Joe Doe's information, I do not need to know where it is stored
to browse to his information. I should be able to say to computer:

"Give me files of Joe Doe" and I would get it. It is 21st century and
we are not closely organized to how it should be.

Org mode paradigm shows that hierarchical tree is useful.

File system is a hierarchical tree.

But people who start working with Org mode will have better
hierarchical system on their file system, then those who don't work
with hierarchical tree of notes and other things.

It means Org mode and its paradigm is teaching people to organize
hierarchically.

But it does not offer meta-level of organization. Where such Org files
should be located? Again we think of hierarchical system, but when
things becomes really complex Org is not there for user as Org keeps
simple things simple. It does not keep complex things simple.

That is where systems of 10 Bins come in. For me it is type of
meta-level paradigm that keeps things organized.

My desire is that base Org package stops its development.

It should define itself and stop being developed due to its achieved
perfection as base system.

The idea is analogous to TeX and LaTeX where I consider TeX being
compact, perfect, finalized system without bugs (author awards people
to find bugs) and LaTeX and others are considered extensions.

TeX - typesetting system
https://www.tug.org/svn/texlive/

In the same way extensions could be added to Org but without base
system being each in a while tackled, changed, modified or
"upgraded".

> If you wanted feedback on this, I believe that Karl Voit's article below
> is relevant. I guess you can even directly contact him if you wish - he
> knows a lot about theory of classification.
> 
> https://karl-voit.at/2020/01/25/avoid-complex-folder-hierarchies/

Thank you for the reference, that is subject of my current
research.

Personally I do not find complex folder hierarchies as main
problem. Not at all.

I find that main problem is when each individual is faced with the
problem of organizing and cannot handle complex thing of
organizing. The trouble is exponential to the number of computer users
on the planet.

If we look at not complex organizing then file system organizing can
be easily left to the user for the user to decide on each filing how
and where files are organized. That is what majority of people on the
planet do.

When we come to somewhat raised or complex level of organizing then
one can see that if such organizing is left to the user is that file
system mostly becomes mess. That is where system as 10 Bins come into
play or any such similar organizing system.

For the simple organizing it is better that users is prepared for
complex organizing as time and number of files on the system
inevitably lead there. So it is generally better for population and
computing to switch to better paradigms of organizing
information. Those paradigms have been already designed by Doug
Engelbart and are followed by various software and concepts of
computing.

Doug Engelbart Institute - Boosting mankind's capability for coping with complex, urgent problems
https://www.dougengelbart.org/

On that meta-level of organizing user should rather define some groups
or subjects such as people, lists, groups, plans, movies, etc. Then
user should define various possible relations between each other. And
template for such relational file system would be given onto each
computer and could be configurable by every user.

Then when it comes to filing of the files user could say:

$ file-file this-file.org

User would answer few questions, like if to file by person, or by some
list, or movie subject, user could select to which movie genre that
movie belong. File would be filed and WHERE it is filed would be
irrelevant for the user. User could find the real path to the file,
but because it is not relevant for the user it would not be of much
importance.

When user wish to access the file, one would find it as:

$ find-file

in the next step user could decide:

- to search for file by using its name

- to search for file by subject, such as movie

- to search for file by genre or sub-group(s) of the subject

- to search by people, groups, lists, etc.

Then file would be found and it would not be relevant if the file is
located in x/x/x/x/x/x/x structure on the file system.

In general when user is searching for the file, when such file is
located file could be launched, edited, viewed or played, or shared to
other people.

How the file system is organized would be left to the algorithm on
computer.

There would be no need for user to browse the file system but in
exceptional cases.

Reference:
https://www.dougengelbart.org/content/view/110/460/#2b1a1

"   Every object that someone might validly want/need to cite or
   otherwise access should have an unambiguous address, capable of
   being portrayed in a human readable and interpretable manner. Most
   common existing spreadsheet programs have provisions similar to
   this for cell addressibility." 2b1a1

The referenced link demonstrates itself: 110/460/#2b1a1 is the
unambiguous address capable of being cited or referenced.

Both filing and finding of files would be kept as history. This is for
hyperlinking and referencing purposes.

After filing of a file, the history items can be used as a reference
for immediate classification. I have filed the file, but did not
designate the name of the file and other attributes. I need those
attributes for later referencing and searching.

$ file-file this-file.org

would automatically create a hyperlink to that file and hyperlink
could be kept in history. If there is some central dynamical knowledge
repository such hyperlink could be automatically inserted into the
database (DKR). 

About Dynamic Knowledge Repositories (DKR)
https://www.dougengelbart.org/content/view/190/163/

Side note: Org file is one type of dynamic knowledge repository.

Then that same hyperlink could be reused in many various Org files. Or
hyperlink in the Org file could just point to the DKR hyperlink, this
way the eventual change of location of the file would not affect many
Org files. All Org files would be hyperlinking to meta-hyperlink that
tells where the file is really located.

When searching for files by any manner, I should also be able to
quickly obtain hyperlinks, as maybe I wish to place such in the list
without me having to search for same file again.

After:

$ file-find

I would find the file but have hyperlink to the file ready in memory
or history to place it in Org file or any other file or database
collection. Or I should be able to share it with people.

I rather expect Org mode to have similar form as OPML so that every
atom or object in the Org file may get its reference.

Example is that I can easily hyperlink to headings but I cannot easily
hyperlink to specific list items under headings. And I cannot easily
link to paragraphs. This is because Org file structure is not finely
grained. I wish it could be so, but it isn't.

For this reason I am considering to convert some Org files that are
useful for referencing to personal structured meta-level dynamic
knowledge repository. org-id tries to handle these problems of
complexities but also makes Org files less readable.

Now back to reading Karl Voit's work.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  7:56   ` Jean Louis
@ 2020-11-21  8:31     ` Texas Cyberthal
  2020-11-21  9:29       ` Marvin ‘quintus’ Gülker
  2020-11-21 10:21       ` Jean Louis
  2020-11-21 15:03     ` Dr. Arne Babenhauserheide
  1 sibling, 2 replies; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-21  8:31 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode, Ihor Radchenko

Hi Jean,

I'll use some of the concepts in the first half of your email.  I
disagree with the second.

> In my opinion directories should never bother user. User should just pre-define sets of directories such as: People, Groups, you name it, and files should be accessible in such directories automatically.

Productivity studies show that navigation dominates search.  Human
animals are natural pathfinders and walking computer paths with
ergonomic file explorers such as Dired increases mastery of the
subject matter.

This value is trivial with retrieval tasks such as a person's name,
which is why 10 Bins stores such names in a flat list of directories,
sorted alphabetically by last name.  It is easy to integrate an
automated retrieval script with such a predictable path.

I think Treefactor is the correct means to refile files and
directories, not a CLI program.  The benefits of incremental inductive
refiling outweigh those of the system you described.  Incremental
inductive refiling isn't compatible with your suggested automation,
history and link features.  Proper repo management is also
incompatible.  For example, text and binary files should be handled
separately.

I document rapid iterative inductive refiling here:
https://treefactor-docs.nfshost.com

I've come to depend on its cognitive benefits.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  6:12 ` Palak Mathur
@ 2020-11-21  9:04   ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-21  9:04 UTC (permalink / raw)
  To: Palak Mathur; +Cc: Texas Cyberthal, emacs-orgmode

* Palak Mathur <palakmathur@gmail.com> [2020-11-21 09:13]:
> On Fri, Nov 20, 2020 at 6:34 PM Texas Cyberthal
> <texas.cyberthal@gmail.com> wrote:
> >
> > Having a tall directory tree with many leaves and branches is against
> > Org's philosophy.
> >
> > Here is my argument that such a structure is objectively correct for
> > personal info management:
> >
> > https://github.com/cyberthal/10-Bins-template
> >
> > For the record, Org works fine with this, although I had to do a bit
> > of config to get around the default philosophy.
> >
> 
> I read through the README but it seems overwhelming to have 10
> directories. I am not saying it is not good just that I will not be
> able to handle those. Even now when I have just three main files -
> inbox, work and archive, I am very bad at refiling items (I do it but
> rarely). I mostly rely on Agenda views to make things make sense for
> me. With 10 directories, I will surely never be able to refile
> anything as half of the time I will just be spending time in deciding
> where the item belongs.
> 
> It surely will be good for more diligent people unlike me.

Thank you for nice description of your file system. In my opinion for
your use case the 10 Bins system looks very appropriate.

One point I wish to present, that is that WHERE the file is stored
need not be known to user. And when file is retrieved this also need
not be known  to user as user may search how Texas said by X methods.

Since Texas have presented 10 Bins now I am eagerly wanting to
organize all of the file system into structure that does not let me
think where the file really is located. My structure is so much more
complex but I do not think about it, computer is filing it for me. I
think of people, groups, lists and I find files by thinking, not by
looking into file system at least not so much. When I think of Texas I
write: Texas, I find 12 contacts related to Texas, then I write
"Emacs" or "Cyber" if I remember Cyber. From there on, I can see
hyperlinks to 10 Bins system, I can find emails of Texas Cyber and
find files and his Org file as well containing notes to Texas. But I
have no clear idea where that file is really located on the file
system. When finding the file I find it by X methods without knowing
where it is located on file system.

Basic structure any filing including emails could be following:

1. INBOX, items are coming here, if inbox is not empty something is
    wrong. Handled items should be filed appropriately. I file emails
    into maildir folders like ~/Maildir/person@example.com 

2. PENDING, those are things that cannot be handled for some reason,
     and because they are not handled they cannot be yet filed.
     
3. OUTBOX, those are things that need to be filed or dispatched. For
     example fax that has to be printed should be there. PDF export of
     Org file can be there as it has to be placed on USB stick to be
     brought to printer. SMS notes to be yet sent to people or files
     to be sent to people could be there. OUTBOX can be also handled
     by other people, not necessarily the organizer of things.

10 Bins system expands that not so related and offers more structure.

There is need for org-of-org.org file that is meta Org file and that
could be created on-the-fly

Meta Org file by imagination named here org-of-org.org would be
created based on information of:

- filing the files and any types of hyperlinks like videos, movies,
  etc. including Org files. Upon filing such hyperlink has its
  structure stored somewhere.

- retrieving of the files, as some files are not filed but are
  retrieved or launched. Retrieving files could then be logged or
  accounted in the file system or database for later on-the-fly
  referencing from org-of-org.org file.

Then org-of-org.org file would be created on the fly:

- it would create hierarchy of all filed files that helps the user
  locate the file easy without even knowing where the file is on file
  system

- it would use the list of retrieved files to create the structured
  hierarchy of the retrieved files by its subjects, tags, groups

Then user can click and get the meta Org file created on the fly and
pinpoint where else to go with attention.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  8:31     ` Texas Cyberthal
@ 2020-11-21  9:29       ` Marvin ‘quintus’ Gülker
  2020-11-21 10:21       ` Jean Louis
  1 sibling, 0 replies; 121+ messages in thread
From: Marvin ‘quintus’ Gülker @ 2020-11-21  9:29 UTC (permalink / raw)
  To: emacs-orgmode

Am Samstag, dem 21. November 2020 schrieb Texas Cyberthal:
> Productivity studies show that navigation dominates search.  Human
> animals are natural pathfinders and walking computer paths with
> ergonomic file explorers such as Dired increases mastery of the
> subject matter.

This sounds interesting. As far as I am aware, search interfaces are
increasingly deployed instead of hierarchical structures (just take the
loss of the classic Windows Start Menu as an example). You suggest that
this is unergonomic, which I, from a personal taste, would tend to
agree. Do you have a source for the "productivity studies" you refer to?
I would like to skim through them and see if I can cite them the next
time someone wants me to convince to use a search-based interface.

  -quintus

-- 
Dipl.-Jur. M. Gülker | https://mg.guelker.eu |    For security:
Passau, Germany      | kontakt@guelker.eu    | () Avoid HTML e-mail
European Union       | PGP: see homepage     | /\ http://asciiribbon.org


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  7:17   ` Texas Cyberthal
@ 2020-11-21  9:53     ` Jean Louis
  2020-11-21 10:15       ` Tim Cross
  2020-11-21 14:44       ` Texas Cyberthal
  2020-11-23  5:40     ` Ihor Radchenko
  1 sibling, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-21  9:53 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: emacs-orgmode

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-21 10:19]:
  :PROPERTIES:
  :CREATED:  [2020-11-21 Sat 12:53]
  :ID:       913ca9e4-17b4-4366-9a35-45838cace538
  :END:
> ***** Hi Ihor Radchenko,
> 
> > I am wondering what you mean by Org's philosophy. Why would it have anything to do with directories?
> 
> Org's philosophy is to have one or a handful of directories without
> nesting of directories.  Users are not expected to have their Org
> files in a deeply nested tree.  Org also prefers big files with large
> trees rather than lots of little files.

Is it? I did not know that. But it is definitely tedious to keep all
Org files in one directory or few sub-directories. That is where 10
Bins paradigm becomes useful or other similar filing software. It is
just good to file it into fixed place with fixed hyperlink that is
easily captured somewhere.

What I mean is when file is filed into

ABC/STRUCT/XYZ/001/2020/11/20/2020-11-20/

is that such link can quickly be captured in some main file like:

* ABC
  :PROPERTIES:
  :CREATED:  [2020-11-21 Sat 12:53]
  :ID:       8459366d-e95e-4a2f-9eac-c093375d733c
  :END:
** STRUCT
   :PROPERTIES:
   :CREATED:  [2020-11-21 Sat 12:53]
   :ID:       5d3b208f-dfec-4916-af7e-be784641d3f8
   :END:
*** XYZ
    :PROPERTIES:
    :CREATED:  [2020-11-21 Sat 12:53]
    :ID:       19705797-19b5-46d4-ab7d-2414589a5e68
    :END:
**** 001
     :PROPERTIES:
     :CREATED:  [2020-11-21 Sat 12:53]
     :ID:       ddf01399-3b6a-40d5-9a8c-55cadd2d08b2
     :END:
***** 2020
      :PROPERTIES:
      :CREATED:  [2020-11-21 Sat 12:53]
      :ID:       5faef432-0abc-4953-bd81-2ffae69ecec1
      :END:

[[file:ABC/STRUCT/XYZ/001/2020/11/20/2020-11-20/file.org][File.org is filed file]]

When such capture is done automatically upon filing then the link may
be reused in other files. By using the Meta Org File user
automatically creates an index of filed files and can search for the
file in the Org file itself and open the file from the Meta Org File
without knowing where the file is really located.

> The rules are written to be straightforward at filing time.  One need
> only consider one object at a time.  Cascade filing means one need
> only compare the object with one directory at a time.  The first match
> wins.  I should emphasize that in the docs.
> 
> Having all your headings jumbled into three huge files sounds like a
> state of permanent intractable overwhelm to me.

That overwhelm I felt myself and found similar way like you Texas to
file the files and I am still expanding into meta-level of organizing
things.

> You are using Hyperscope as your primary PIM but integrating it with
> Org, and it sounds like you're using PostGreSQL and the directory tree
> together somehow.  I don't fully understand it.

My primary PIM is on higher level than HyperScope as HyperScope is
part of PIM which I call CRM or Customer Relationship Management as it
does not manage only my personal information. In the practical sense
it is more or less same thing only that allows work in group. It is
just so similar to various other CRM software around.

HyperScope is not file system. It is dynamical knowledge repository of
hyperdocuments, any kinds of documents. Other similar projects are:

Semantic Synchrony
https://github.com/synchrony/smsn

Hypothes.is Annotate the web, with anyone, anywhere.
https://web.hypothes.is/

GNOWSYS: A Kernel for Semantic Computing!
https://www.gnu.org/software/gnowsys

gstudio
https://gitlab.com/gnowledge/gstudio

Project Xanadu
https://en.wikipedia.org/wiki/Project_Xanadu

Those links I am quickly inserting into buffer exactly by using
Hyperscope. I am just pressing one key W and hyperlink from HyperScope
buffer is creating those hyperlinks above.

In general it is a tree based database that hyperlinks to all kinds of
hyperdocuments. Hyperdocument is also a note in the database
itself. But it can be Org file or any other file regardless where it
is located, be it on the WWW or file system. It can be video that I
have to watch or specific part of video.

Then subtrees or the whole HyperScope database can be expanded into
one Meta Org File if I wish. It is not "export" in the sense but one
could say it is similar to export.

> Clearly a database can do more than a directory tree alone.  The cost
> is that a database is more complex to use and maintain.  So that which
> can be handled by directory tree alone, should be.

File system is database. What I keep in the PostgreSQL database it can
be kept directly in the file system while program can manage various
other relations. There is also EIEIO in Emacs which I found recently
that also may be used as a database and there is GNU Emacs database.

EDB or GNU Emacs database
https://www.gnuvola.org/software/edb/

and various other interfaces to databases.

Database need not be complex. It carries only the structure. I find
it much easier and less complex to define the database table then to
work with program that has to replicate all those algorithms that
databases have built-in.

Database is like storage for custom variables. You have already
defined 10 Bins, the database in that sense could just define more
complexities while program can handle such complexities automatically.

Database does not store files for file system, that is not my
preferred way. It just keeps the structure for filing. Same structure
could be kept with EIEIO or even with defcustom or simple lists. But
when it becomes more complex that is where database becomes useful.

I can keep 100 or 500 people in lists, but searching, indexing, unique
IDs, all those stuff can be handled by the database without me
thinking about it.

Example is with unique Org IDs in the package `org-id`. I do use such
unique IDs. But I have to have the package, somebody has to program
the package and those unique IDs may not be so unique. For example if
I copy the substree I need to take care to change the unique IDs to
something else. If Org file is copied I need to take care that unique
IDs get updated. There is human error involved.

Database can have defined field such as `TABLE_ID SERIAL NOT NULL
PRIMARY KEY` and that is is where I stop thinking about unique ID. It
is unique and it is enforced over all table of items.

If I wish to delete item, fine. If I wish to copy item from one
subtree to other, there will be new unique ID, if I just change the
parent of the item, the unique ID still remains there.

Org development does try to accommodate this principle but it is text
and files are everywhere so I see Org programs try to track the files,
some are not tracked and so on, at some point of time it becomes not
manageable.

In general beyond thinking how a table should be defined there is
nothing so much complex with databases. And that design and planning
is usually programmed so users do not even think about database and
tables.

Your link `template' on the page:
https://treefactor-docs.nfshost.com/

under:

"Here is a template you can use to start your own Textmind. "

is not working, it is asking me to sign up on the third site.

These are all very useful and logical options:

https://treefactor-docs.nfshost.com/2-commands/1-throw/

Myself I write Org files for planning and projects which are then
executed by printing them and carrying such projects in the field. In
that sense the TODO items are always repeated and I do not refile
things, almost never if ever I did so. I do not remember.

Often there are tasks related to people so each person has its Org
file here, I do not mix information pertaining to various people in
Org files. This way I can send whole file to the person for review and
modifications. RCS versioning is enough to keep things simple and to
see differences between the files.

One subject is kept in one Org file. If something is done and not
necessary to be visible it can be archived. More than that I do not
re-file things from one file to other as I simply keep right Org file
for right thing.

Concept of refiling in Treefactor is fine concept regardless of my
personal preferences.

> opinions.  10 Bins is an opinionated directory tree template.

You gave me idea to expand my personal organization into file system
that I can forget about it. 

> Neither requires the other, but they're both part of Cyborganize, my
> overall PIM and publishing system.

Definitely I need to read more about it on your website.


Jean




^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  9:53     ` Jean Louis
@ 2020-11-21 10:15       ` Tim Cross
  2020-11-21 11:18         ` Jean Louis
  2020-11-21 14:44       ` Texas Cyberthal
  1 sibling, 1 reply; 121+ messages in thread
From: Tim Cross @ 2020-11-21 10:15 UTC (permalink / raw)
  To: emacs-orgmode


Jean Louis <bugs@gnu.support> writes:

> My primary PIM is on higher level than HyperScope as HyperScope is
> part of PIM which I call CRM or Customer Relationship Management as it
> does not manage only my personal information. In the practical sense
> it is more or less same thing only that allows work in group. It is
> just so similar to various other CRM software around.
>
> HyperScope is not file system. It is dynamical knowledge repository of
> hyperdocuments, any kinds of documents. Other similar projects are:
>
> Semantic Synchrony
> https://github.com/synchrony/smsn
>
> Hypothes.is Annotate the web, with anyone, anywhere.
> https://web.hypothes.is/
>
> GNOWSYS: A Kernel for Semantic Computing!
> https://www.gnu.org/software/gnowsys
>
> gstudio
> https://gitlab.com/gnowledge/gstudio
>
> Project Xanadu
> https://en.wikipedia.org/wiki/Project_Xanadu
>
> Those links I am quickly inserting into buffer exactly by using
> Hyperscope. I am just pressing one key W and hyperlink from HyperScope
> buffer is creating those hyperlinks above.
>

I have used similar tools in the past. However, what I find frustrating
about them is that your now dependent on another bit of technology - a
database of some type with all the issues that adds - installation,
upgrades, maintenance, backups etc. The thing I like best about Org is
that in the end, it is just a collection of plain text documents.

I haven't had the challenges mentioned by others. My org files are
broken into directories and I have a directory hierarchy and I use
things like org id and other add ons to extend. I also have started
playing around with org-roam, which I find to be quite interesting -
especially the biity it has to handle bidirectional links etc.

I also wanted to mention another Emacs project which is quite
interesting and has actually been around a lot longer than org,
Hyperbole. I've not got a URL handy, but I'm sure you can find it with
google.

It is an interesting system which pretty much makes everything possible
in a document a hyperlink. Provides some very interesting ways of
linking documents.

My preference has always been to 'do my own thing'. I tend to look at
other information management approaches and cherry pick the bits which I
like and then replicate them in org. I don't find org as limiting as
others seem to, but I'm also quite happy to add in my own elisp to tweak
it the way I want it to be - thats why I love emacs.
--
Tim Cross


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  8:31     ` Texas Cyberthal
  2020-11-21  9:29       ` Marvin ‘quintus’ Gülker
@ 2020-11-21 10:21       ` Jean Louis
  2020-11-21 15:00         ` Texas Cyberthal
  1 sibling, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-21 10:21 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: emacs-orgmode, Ihor Radchenko

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-21 11:32]:
> Hi Jean,
> 
> I'll use some of the concepts in the first half of your email.  I
> disagree with the second.
> 
> > In my opinion directories should never bother user. User should just pre-define sets of directories such as: People, Groups, you name it, and files should be accessible in such directories automatically.
> 
> Productivity studies show that navigation dominates search.  Human
> animals are natural pathfinders and walking computer paths with
> ergonomic file explorers such as Dired increases mastery of the
> subject matter.

Do you mean that navigating file system dominates the search?

I also think that navigating file system dominates the search if that
is what you refer. I think that users are inclined to navigate because
computing tools such as file managers are given to users for
that. Users did not get better systems to find or file files or other
documents in computing. In other words I wish to say that we are under
developed.

Navigating does not necessarily contribute to production. Productivity
may say what it wants but it may not reach those who are actually more
productive without using the navigation. So studies may not tell us
what is more productive, such may only tell what is currently used
within the subject of being productive.

You mentioned 2 things, navigation and search. Since years I am
integrating pieces in my computing that drives me into direction of
neither navigating nor searching. Examples:

- I read your email in Mutt. Maybe I remember something you wrote
  earlier but not quite well and I wish to find your previous email. I
  click ESC-v and I can view all your previous emails. In this sense I
  do not need to know your email address and where your emails are
  stored on my system.

  For this particular type of object "Emails of user Texas" neither I
  am searching, neither navigating. I do not spend time searching and
  I do not spend time navigating to that object. It is by one click or
  two all in front of my eyes.

  Underlying functionality is very simple. All emails of users can be
  automatically (by sieve) or semi-automatically by key press saved
  into personalized mailboxes ~/Maildir/person@example.com and by
  clicking ESC-v in Mutt, email address is extracted from the email I
  was reading and I new Mutt instance opens with all emails from
  ~/Maildir/person@example.com -- then after reading, I click q and I
  am back in your first email, the top level email in the inbox.

  I could as well make it more automated, I could answer all emails
  and finish with Mutt, and upon finishing all emails could be sorted
  in personalized email files.

- example with files belonging to user, let us say hyperlinks or
  anything, any piece of information, I could just press F4 on email
  and I could access all information related to that user. I do not
  need to know the phone number and I cand send SMS or initiate the
  call, share the contact, send email or fax, see all pictures of this
  person, notes, tasks, and financial transactions.

  I neither navigate neither search there. Maybe better way to call
  this type of locating objects is relational accessing. Somebody may
  correct me.

  There is some object like contact named "Texas Cyber". If object has
  any relation to anything else, then anything else can be displayed
  and found right there.

  Instead of me searching, computer is searching.

  Instead of me navigating, computer is navigating.

> This value is trivial with retrieval tasks such as a person's name,
> which is why 10 Bins stores such names in a flat list of
> directories, sorted alphabetically by last name.  It is easy to
> integrate an automated retrieval script with such a predictable
> path.

Take care of duplicates. When marketing contact database is growing
fast, some times 1000 people per day or more. People have same
names. Often one cannot even know what is first and what is last
name. You may know it for your country, in other countries is not
so. Then those people engage in a course on distance. They are sending
me images and files as results of their course assignments. I have to
file the files in proper folder. Because names are not always unique I
better file it under unique IDs, and keep separate symlinks with names
of people to such unique IDs whereby symlinks can be automatically
updated.

That alone makes things easily very simple at least for objects such
as people because people's names are in the file system.

Then simple `locate` command can be used to find Texas Cyber's files:

#!/bin/bash
locate -e -d /home/data1/protected/.locate.database -A -i $@

I think that switch -A helps in finding all of these:

Texas Cy

Cyber Tex

or similar variations.

But in general I would just click ESC-e and I would get your profile
and access to all files because location by email address from an
email document is pretty much decisive.

If person is not there, person is then created in the database.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 10:15       ` Tim Cross
@ 2020-11-21 11:18         ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-21 11:18 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode

* Tim Cross <theophilusx@gmail.com> [2020-11-21 13:15]:
> I have used similar tools in the past. However, what I find frustrating
> about them is that your now dependent on another bit of technology - a
> database of some type with all the issues that adds - installation,
> upgrades, maintenance, backups etc. The thing I like best about Org is
> that in the end, it is just a collection of plain text documents.

Thank you, I understand your opinion. Let me share my viewpoint.

Installing database such as PostgreSQL and configuring it is way more
simpler than installing Emacs and configuring Org mode or Emacs
itself.

It goes like this:

$ PACKAGE-MANAGER install DATABASE

Later you just do:

$ createdb MY-DB

and then insert tables, usually program does that for you.

- installation is simpler than Emacs, definitely, unless you install
  from sources which is in turn about the same as Emacs

- upgrade is not necessary in general, majority of users need not ever
  upgrade. GNU/Linux distributions make upgrades easy and flowless
  normally.

- for maintenance of database I do not know what this refers to. To me
  it means working with the database. Inserting, updating, editing
  records. That is writing text. I write text in Org and I write text
  in the database, it is about same thing without file on file
  system. It lacks maybe versioning system which in turn can be
  implemented easily to simple first backup the field into versioning
  table before editing such. Simple.

- backup of the database is way easier than backup of the file
  system.

export POSTGRESQL_BACKUPFILE="/home/data1/protected/Security/Backup/Database/PostgreSQL/`/bin/date -Iminutes`.sql.gz"

alias backupPgDB='nice -n 19 /usr/local/bin/pg_dumpall | gzip > $POSTGRESQL_BACKUPFILE'

That is all what is needed for the backup in my example. It can run by
cron job that I do not even think about it. I can send database file
by email or encrypt it by GnuPG and upload to some remote server
automatically.

> I also wanted to mention another Emacs project which is quite
> interesting and has actually been around a lot longer than org,
> Hyperbole. I've not got a URL handy, but I'm sure you can find it with
> google.

GNU Hyperbole
https://www.gnu.org/s/hyperbole

I am using Hyperbole everyday and it integrates with Org mode and can
use Org links. It is on meta-level in comparison to hyperlinking in
Org mode and in itself it is hypertextual information management
system but is only in one part comparable to Org. It is not a mode for
editing files, but that one part is named Koutliner and that is
outline mode comparable to Org with one major difference that
Koutliner provides specific ID for each part of the nodes in the
substree.

People often mix GNU Hyperbole and Org, but they are not comparable as
Hyperbole is Hyper and Org is Org. Being Hyper it works in every file
or every directory. I just wish to find out how to create buttons on
the fly to interact between Hyperscope and Hyperbole. 

> It is an interesting system which pretty much makes everything
> possible in a document a hyperlink. Provides some very interesting
> ways of linking documents.

Yes. When I enter my project directory there I keep ./HYPB directory
button file. Then there are some tasks which are easily invoked by
Hyperbole that relate to various maintenances:

General actions
===============

- <(Record the Developed Traffic incidents)>
- <(Create General Log entry)>

Search
======

Database actions
================

- <(CF: Last 200 contacts)>
- <(CF: People with mining lands)>
- <(CF: Create contact and edit it)>

Database settings
=================

- <(Turn off speech)>

Database Maintenance
====================

- <(CF: Find largest contact names)>
- <(CF: Find possible doctors)>
- <(CF: Normalize public email addresses)>
- <(CF: Normalize phone numbers)>

Now I am sure that same can be done with Org file as it offers many
kinds of hyperlinking. While Org hyperlinks can be placed in any file
and used in any mode they look ugly in non-Org text files without Org
links mode enabled.

> My preference has always been to 'do my own thing'.

My preference for other people is same, that each should find their
way and use the tools and paradigms they find familiar or appropriate.

> I tend to look at other information management approaches and cherry
> pick the bits which I like and then replicate them in org. I don't
> find org as limiting as others seem to, but I'm also quite happy to
> add in my own elisp to tweak it the way I want it to be - thats why
> I love emacs.

Of course. Me too. And I develop my own. I like to integrate
things. For example tasks in Org mode I have to delegate to people so
I click a button, choose person, choose valid email if there are many
and task is sent to person. Person gives me feedback and I update the
task conducted by that person. That is integrating.

Maybe I am in the Org file for the person, how do I call quickly this
person? If there is #+MACRO: contact-id 239917 then I can just click a
key and send SMS or initiate a call straight from the object related
to that contact in this case Org file. And it should work for any
object any file related to person or other object.

If I inspect country database, maybe contacts are related to country,
from country I should be able to find contacts of that country. From
any file or location in directories related to person ABC, I should be
able to initiate communication with such user without again finding
user's n

I am in process of transition to HyperScope as dynamic knowledge
repository.

As Org files are too many. Some are important, some not, some carry
this and that information, it is everywhere, not any more simple.

I am sorting it automatically into people's directories. Contracts are
written by Org and such contracts are related to people, they shall be
sorted by relations.

This applies in general to any kind of files. When files are sorted
they should be in the same time, same second, also indexed. Automated
indexing should also help the user. I do not mean indexed as full
file, just as meta information or hyperlink to which one can find a
quick reference.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  0:33 One vs many directories Texas Cyberthal
                   ` (2 preceding siblings ...)
  2020-11-21  6:36 ` Jean Louis
@ 2020-11-21 13:41 ` Jonathan McHugh
  2020-11-21 14:04   ` Jean Louis
  3 siblings, 1 reply; 121+ messages in thread
From: Jonathan McHugh @ 2020-11-21 13:41 UTC (permalink / raw)
  To: emacs-orgmode

Texas,

Ive been developing a paradigm over the years based upon a (recursive) 6x6 grid
system, aligned with keybindings around the home row. Called Qiuy, I
refer to it as a "Recursive Modelling Language", given the annotations
work down to the level of functions and parameters, as well as directory naming.

While migrating my OS (Debian -> Guix) and Editor (Vim -> Emacs) has
muddied my workflows, I hope that my explorations with Org-Mode still
permit me to operate with a highly broad but shallow folder
structure. In any case, Im happy to be using Helm for browsing rapidly
(as you will understand reading below!).

Below is my home folder directory structure, please forgive legacy approaches clouding the
vision (Ive been eating my dogfood for a longtime, I will be ending
parental leave, hopefully the cruft and clutter can be trimmed/attic'd).

Should you have any interest I am drafting some of my thoughts re Qiuy,
as part of attendance at the upcoming Constant workshop
Bureaucracksy. Id be happy to send you some material if you wish.

=====================
HOME FOLDER DIRECTORIES:
=====================
1q10fq_music
1q10hqh_parsing
1q10iqi_authorship
1q10iqi_employment
1q10iqi_history
1q10iqi_initiating
1q10iqi_loops
1q10iqi_permutations
1q10iqi_states
1q10kq_bibliography
1q10rer_events
1q10rqr_coding
1q10rqr_tasks
1q10xq_etl
1q20beb_downloading
1q20be_bookmarks
1q20dq_appending
1q20dqd_document-management-systems
1q20dqd_editing
1q20dqd_file-managers
1q20dqd_removing
1q20dqd_text-editors
1q20dw_appending
1q20fe_images
1q20fq_diagrams
1q20fq_graph-plots
1q20fq_images
1q20fq_slides
1q20gq_fonts
1q20heh_parsing
1q20hqh_parsing
1q20iei_loading
1q20iqi_opening
1q20iqi_version-control
1q20jq_tables
1q20jq_templating
1q20ke_csv
1q20ke_html
1q20ke_json
1q20kq_csv
1q20kqk_document-management-systems
1q20kq_tables
1q20mq_contacts
1q20mq_content-types
1q20mq_document-body
1q20nqn_calendars
1q20oqo_classes
1q20rer_playing
1q20rq_analysing
1q20rq_calculating
1q20rq_comparing
1q20rqr_interviews
1q20tqt_curriculum-vitaes
1q20twt_notes
1q20ueu_searching
1q20uw_saving
1q20xq_converting
1q20xq_regular-expressions
1q20xq_substituting
1q20xqx_compression
1q20xqx_concatenating
1q20xqx_converting
1q20xqx_regex
1q20xqx_serialisation
1q30dqd_terminals
1q30fq_diagrams
1q30gq_backgrounds
1q30gq_color
1q30gq_fonts
1q30gqg_arcs
1q30gqg_arrows
1q30gqg_shapes
1q30gqg_theming
1q30gq_style
1q30iqi_prettifying
1q30iqi_states
1q30iqi_transparency
1q30jq_design
1q30jq_layouts
1q30jq_tables
1q30jq_templates
1q30mq_body
1q30mq_charts
1q30mq_graphs
1q30nq_networks
1q30uq_menus
1q30uw_outputting
1q30vq_backgrounds
1q30vq_columns
1q30vq_layers
1q30vq_monitors
1q30vq_panels
1q30vqv_graphics
1q30vqv_layouts
1q30vqv_statuslines
1q30vqv_window-managers
1q30vqv_windows
1q30xq_transforming
1q30yq_prettifying
1q30yq_visualising
1q40beb_scraping
1q40bqb_downloading
1q40bqb_networking
1q40bqb_servers
1q40bqb_transferring
1q40gqg_displaying
1q40gqg_theming
1q40hqh_coroutines
1q40hqh_scraping
1q40hq_navigating
1q40iqi_accessing
1q40jq_settings
1q40nqn_pathways
1q40nqn_positioning
1q40ueu_searching
1q40uq_exporting
1q40uq_importing
1q40uqu_searching
1q40yq_rotating
1q50cqc_terminals
1q50fe_files
1q50gqg_displaying
1q50hqh_interpreters
1q50hqh_parsing
1q50hq_navigating
1q50iqi_arguments
1q50iqi_building
1q50iqi_capturing
1q50iqi_contacts
1q50iqi_coroutines
1q50iqi_dates
1q50iqi_indexing
1q50iqi_keyboards
1q50iqi_loading
1q50iqi_parameters
1q50iqi_queues
1q50iqi_relationships
1q50iqi_states
1q50iqi_switching
1q50iqi_timing
1q50iqi_users
1q50iqi_vacancies
1q50iq_mappings
1q50iwi_terminating
1q50jq_manifests
1q50jq_options
1q50jq_stacks
1q50kek_tables
1q50mq_languages
1q50nqn_pathways
1q50nqn_relations
1q50nqn_trees
1q50nq_relations
1q50oqo_commands
1q50rq_analysing
1q50rq_calculating
1q50rq_graphs
1q50rq_identifying
1q50rq_rating
1q50rq_testing
1q50rq_watching
1q50tqt_curriculum-vitaes
1q50ueu_extracting
1q50uqu_filtering
1q50uqu_loading
1q50vqv_panels
1q50vqv_window-managers
1q50xq_companies
1q50xq_concatenating
1q60iei_loading
1q60jq_schemas
1q60jq_templating
1q60kek_databases
1q60me_classes
1q60me_schemas
1q60me_structure
1q60mq_asdls
1q60mq_catalogues
1q60nq_languages
1q60nq_package-management
1q60ue_updating
2q10dq_text-editing
2q10hqh_travelling
2q10iq_bureacracy
2q10iqi_history
2q10iqi_programming
2q10iqi_scheduling
2q10iwi_arbitration
2q10rqr_conferences
2q10rqr_employment
2q10rqr_travelling
2q20
2q20bqb_smtp
2q20cqc_text-editing
2q20cqc_word-processors
2q20dqd_text-editing
2q20fe_audio
2q20fe_film
2q20fe_graphics
2q20fe_images
2q20fe_literature
2q20fe_music
2q20fw_graphics
2q20fw_photos
2q20hqh_parsing
2q20hqh_scraping
2q20hq_navigating
2q20iwi_history
2q20kq_json
2q20kqk_databases
2q20kqk_document-management
2q20rq_analysing
2q20tq_signatures
2q20xq_converting
2q20xqx_converting
2q30fe_icons
2q30gqg_visualisations
2q30mq_columns
2q30mq_tables
2q30yqy_emphasizing
2q40bqb_downloading
2q40bqb_smtp
2q40bqb_transferring
2q40bq_downloading
2q40bq_websites
2q40hq_navigating
2q40hq_orientating
2q40tqt_mails
2q40twt_mailouts
2q40ueu_searching
2q50cqc_command-lines
2q50cqc_file-management
2q50dq_deployment
2q50dqd_generators
2q50dqd_interfacing
2q50dqd_interpreters
2q50dqd_terminal-multiplexers
2q50hq_navigating
2q50iqi_caching
2q50iqi_coroutines
2q50iqi_history
2q50iqi_security
2q50iq_sessions
2q50iwi_logs
2q50jqj_properties
2q50kqk_gis
2q50nen_cities
2q50nqn_pathways
2q50nq_properties
2q50nq_services
2q50rqr_activity
2q50rqr_history
2q50rqr_projects
2q50tq_data
2q50tq_logging
2q50tqt_profiles
2q50uq_searching
2q50vq_panels
2q50vqv_window-managers
2q5oiwi_archives
2q60iq_computer-science
2q60iq_finance
2q60iqi_security
2q60iqi_updating
2q60iq_policy
2q60iq_science
2q60kqk_content-management-systems
2q60kqk_structure-data
2q60mq_databases
2q60mq_dictionaries
2q60mq_information-systems
2q60mq_languages
2q60mqm_multi-stage-programming
2q60nq_operating-systems
2q60rqr_training
3q10iq_finance
3q10iq_information-systems
3q10rqr_building
3q10rqr_employment
3q10rqr_events
3q10rqr_side-projects
3q10tqt_proposals
3q20bw_websites
3q20cq_image-viewers
3q20dqd_text-editors
3q20fe_viewing
3q20fq_3d-printing
3q20fq_documents
3q20fq_files
3q20fq_logos
3q20fq_music
3q20fw_music
3q20gqg_design
3q20gqg_graphs
3q20heh_parsing
3q20kqk_content-management-systems
3q20kqk_document-management-systems
3q20kqk_food
3q20kqk_screencasts
3q20mq_characters
3q20mq_content-types
3q20re_textual-analysis
3q20tq_dictionaries
3q20tqt_social-media
3q20twt_reporting
3q20twt_submissions
3q20ueu_aggregating
3q30fq_fonts
3q30gq_color
3q30gq_colors
3q30gqg_diagrams
3q30gqg_styles
3q30kqk_fields
3q30rqr_employment
3q30tqt_curriculum-vitaes
3q30tqt_displaying
3q30uqu_elipses
3q30uqu_orbits
3q30vq_visualisation
3q30vq_window-managers
3q30yqy_emphasizing
3q40bqb_browsers
3q40bqb_content-delivery
3q40bqb_exporting
3q40bqb_mailing-lists
3q40bqb_transferring
3q40fq_emails
3q40hq_orientating
3q40nqn_geodata
3q40ueu_searching
3q50bq_social-media
3q50bq_websites
3q50cqc_shells
3q50dqd_shells
3q50fq_colors
3q50gq_color
3q50gq_colorschemes
3q50gqg_colorschemes
3q50gqg_computer-aided-design
3q50hq_orientating
3q50iq_electricity
3q50iqi_authorship
3q50iqi_duplicates
3q50iqi_performance
3q50iqi_terminal-multiplexers
3q50iqi_usability
3q50iq_management
3q50iq_sustainability
3q50iq_ventilation
3q50jq_configuring
3q50jqj_buildings
3q50jq_profiles
3q50jq_snippets
3q50jq_theming
3q50kqk_keyboards
3q50mq_syntax
3q50nq_calendars
3q50rq_analysing
3q50rqr_maintenance
3q50rqr_programming
3q50rq_troubleshooting
3q50tq_data
3q50tqt_bookmarks
3q50tqt_messaging
3q50tq_variables
3q50uq_orientating
3q50yqy_compositors
3q60be_websites
3q60dq_keyboards
3q60iq_application-modelling
3q60iq_application-modelling-and-design
3q60iq_automation
3q60iq_informatics
3q60iq_information-society
3q60iqi_permissions
3q60iq_outsourcing
3q60iq_politics
3q60iq_security
3q60iq_storage
3q60iq_utilities
3q60jqj_healthcare
3q60kqk_content-management-systems
3q60mq_languages
3q60nq_package-management
3q60oqo_software
3q60rq_glossaries
3q60rq_ontologies
3q60rqr_elections
3q60rq_semantics
3q60rq_taxonomy
4q10iqi_scheduling
4q10rqr_events
4q10rqr_language-classes
4q20be_bookmarks
4q20iqi_synchronising
4q20ke_xml
4q30fq_fonts
4q40bqb_ftp
4q40bqb_irc
4q40bqb_rss
4q40bqb_smtp
4q40bqb_torrenting
4q40bq_servers
4q40cqc_web-browsing
4q40hq_connecting
4q40iqi_accessing
4q40nqn_pathways
4q40ue_searching
4q40uq_clients
4q50be_bookmarks
4q50bqb_transferring
4q50bqb_vehicles
4q50dqd_bindings
4q50fqf_contact-books
4q50iqi_access
4q50iqi_accessing
4q50iqi_sockets
4q50jq_aliases
4q50nqn_locations
4q50nqn_pathways
4q50nq_security
4q50tq_repositories
4q50tqt_curriculum-vitaes
4q50tqt_notifications
4q50uw_exporting
4q60iqi_access
4q60iqi_certificates
4q60iqi_passwords
4q60iqi_permissions
5q10dq_interpreters
5q10iqi_autostarting
5q10iqi_birthdays
5q10iqi_completing
5q10iqi_postponing
5q10iqi_scheduling
5q10iqi_sessions
5q10iqi_states
5q10iqi_tasks
5q10iqi_workflows
5q10nq_employers
5q10rqr_activity
5q10rqr_events
5q10rqr_helping
5q10rqr_tasks
5q10rqr_writing
5q10tqt_memorandums
5q10tqt_reminders
5q10tw_history
5q10twt_curriculum-vitaes
5q10twt_education
5q10twt_employment
5q10xq_refactoring
5q20bqb_networks
5q20cec_image-viewers
5q20cqc_document-viewers
5q20cqc_media-players
5q20cqc_music-players
5q20cqc_pdf-viewers
5q20dq_altering
5q20dq_completing
5q20dqd_cad
5q20dqd_document-editors
5q20dq_deleting
5q20dqd_text-editors
5q20dqd_video-editors
5q20dq_removing
5q20fe_icons
5q20fq_compact-discs
5q20fq_flags
5q20fq_images
5q20fq_logos
5q20fq_media
5q20fq_music
5q20hqh_extracting
5q20hqh_parsing
5q20iqi_access
5q20iqi_drafting
5q20iqi_loading
5q20iqi_revisions
5q20jq_metadata
5q20kq_formats
5q20kq_html
5q20kqk_content-management-systems
5q20kqk_databases
5q20kqk_document-management-systems
5q20kqk_file-managers
5q20kqk_system-tools
5q20kqk_templating
5q20kq_type-file
5q20mq_boxes
5q20mq_dictionaries
5q20nen_directories
5q20nq_operating-systems
5q20rq_spelling
5q20ueu_searching
5q20uqu_searching
5q20xq_refactoring
5q20xqx_compression
5q20xqx_copying
5q20xqx_encoding
5q30cqc_terminal-multiplexers
5q30dqd_terminals
5q30dq_interfaces
5q30fq_fonts
5q30fq_logos
5q30fq_wallpapers
5q30gq_coloring
5q30gq_colorschemes
5q30gqg_alignment
5q30gqg_sizes
5q30gqg_spacing
5q30gqg_venn
5q30gq_layouts
5q30iqi_sorting
5q30jq_themes
5q30kqk_terminals
5q30mq_frames
5q30mq_headers
5q30mq_panels
5q30nqn_positioning
5q30nqn_spacing
5q30uw_outputting
5q30vq_desktop-environments
5q30vq_panels
5q30vqv_desktop-environments
5q30vqv_panels
5q30vqv_terminal-environments
5q30vqv_window-managers
5q30vq_windows
5q30yq_emphasizing
5q30yqy_opacity
5q40bqb_ftp
5q40bqb_moving
5q40bqb_smtp
5q40bqb_transferring
5q40bqb_voip
5q40bq_transferring
5q40cqc_browsers
5q40cqc_interfaces
5q40cqc_shells
5q40cqc_terminal-multiplexers
5q40fe_wallpapers
5q40fq_hyperlinks
5q40fq_websites
5q40hq_navigating
5q40hq_orientating
5q40iqi_terminal-multiplexing
5q40kqk_hooks
5q40kqk_mail-clients
5q40nqn_alignment
5q40nqn_directories
5q40nqn_pathways
5q40nqn_urls
5q40tqt_mails
5q40tqt_messaging
5q40ueu_searching
5q40uq_notifications
5q40uq_orientating
5q40uq_receiving
5q40uq_sending
5q40vqv_windows
5q40yq_coordinates
5q50dq_bindings
5q50dq_commanding
5q50dq_completing
5q50dqd_editing
5q50dqd_selecting
5q50dq_editing
5q50dq_interacting
5q50dq_interpreters
5q50hq_hooks
5q50iei_loading
5q50iqi_building
5q50iqi_cache
5q50iqi_contexts
5q50iqi_dates
5q50iqi_indexing
5q50iqi_interacting
5q50iqi_local
5q50iqi_reloading
5q50iqi_revision-management
5q50iqi_sessions
5q50iqi_shells
5q50iqi_states
5q50iqi_variables
5q50iqi_volume
5q50jq_configuring
5q50jq_dotfiles
5q50jq_metadata
5q50jq_templating
5q50mq_language
5q50nq_contacts
5q50nq_home-folders
5q50nqn_pathways
5q50nqn_sourcing
5q50nq_relations
5q50oqo_variables
5q50rq_analysing
5q50rq_debugging
5q50rq_duplicates
5q50rq_monitoring
5q50rq_testing
5q50rq_usability
5q50tq_caching
5q50tq_history
5q50tq_metadata
5q50ue_sourcing
5q50uq_orientating
5q60cqc_terminal-multiplexers
5q60hq_orientating
5q60iqi_access
5q60iqi_initiating
5q60iqi_permissions
5q60iqi_security
5q60iqi_states
5q60iqi_virtualizing
5q60jq_accounts
5q60jq_profiles
5q60jq_settings
5q60jq_templating
5q60kq_file-types
5q60kq_formats
5q60kqk_content-management-systems
5q60kqk_databases
5q60mq_languages
5q60mq_structure
5q60mq_structures
5q60nq_operating-systems
5q60nq_package-management
5q60nq_packages
5q60oqo_libraries
5q60oqo_macros
5q60oqo_tools
5q60xqx_compiling
6q10nqn_calendars
6q10rqr_events
6q10rqr_tasks
6q10xq_converting
6q20
6q20bqb_browsers
6q20bqb_printers
6q20bqb_social-media
6q20cqc_file-managers
6q20dqd_functional-programming
6q20dqd_text-editing
6q20fq_books
6q20fq_computer-games
6q20fq_images
6q20fq_media
6q20fq_music
6q20fq_pdfs
6q20fq_videos
6q20hqh_parsing
6q20iqi_buffers
6q20iqi_version-control
6q20kq_json
6q20kqk_computer-aided-design
6q20kqk_content-management-systems
6q20kqk_databases
6q20kqk_document-management-systems
6q20kqk_image-handling
6q20kqk_pdf-management-systems
6q20kqk_text-editing
6q20mq_cover-letters
6q20mq_curriculum-vitaes
6q20oqo_classes
6q20rq_analysing
6q20rwr_recording
6q20tqt_attachments
6q20uqu_document-viewers
6q20xqx_compiling
6q20xqx_compression
6q20xqx_converting
6q20xqx_encoding
6q20xqx_refactoring
6q20xqx_regular-expressions
6q20xqx_serializing
6q30fe_pdfs
6q30gq_fonts
6q30gqg_colorschemes
6q30jq_design
6q30jq_templating
6q30jq_themes
6q30kqk_curses
6q30kqk_menus
6q30kqk_rendering
6q30kqk_terminals
6q30ue_displaying
6q30uw_outputting
6q30uw_window-management
6q30vqv_desktop-environments
6q30vq_visualisation
6q30vqv_panels
6q30vqv_statuslines
6q30vqv_window-managers
6q40bqb_browsers
6q40bqb_downloading
6q40bqb_messaging
6q40bqb_piping
6q40bqb_scraping
6q40bqb_servers
6q40bqb_voip
6q40hq_browsers
6q40hq_buffers
6q40hq_navigating
6q40hq_orientating
6q40hq_ssl
6q40kqk_asynchronous
6q40kqk_coroutines
6q40kqk_event-loops
6q40kqk_foreign-function-interfacing
6q40kqk_multithreading
6q40kqk_threading
6q40tqt_messaging
6q40tqt_notifying
6q40ueu_searching
6q50
6q50cqc_interpreters
6q50dq_completing
6q50dqd_erasing
6q50dqd_generators
6q50dqd_installers
6q50dqd_terminals
6q50iqi_building
6q50iqi_compiling
6q50iqi_history
6q50iqi_shells
6q50iq_utility
6q50kqk_environments
6q50kqk_shells
6q50kqk_version-control
6q50oqo_commands
6q50oqo_functions
6q50rq_monitoring
6q50rqr_administrating
6q50rqr_bindings
6q50rqr_touch-displays
6q50rq_testing
6q50rq_validating
6q50xq_converting
6q50xqx_converting
6q60iq_batteries
6q60iqi_access
6q60iqi_identity-cards
6q60iqi_permissions
6q60iqi_security
6q60iq_usability
6q60iq_utilities
6q60kqk_drivers
6q60kqk_firmware
6q60kqk_middleware
6q60kqk_operating-systems
6q60kqk_package-managers
6q60kqk_repos
6q60mq_language
6q60mq_languages
6q60mq_structures
6q60nq_operating-systems
6q60nq_package-management
6q60nq_packages
6q60nq_plugins
6q60rq_testing
6q_tools-qiuy
Desktop
Documents
Downloads
etc
Videos


=====
Kind regards,


Jonathan






Texas Cyberthal <texas.cyberthal@gmail.com> writes:

> Having a tall directory tree with many leaves and branches is against
> Org's philosophy.
>
> Here is my argument that such a structure is objectively correct for
> personal info management:
>
> https://github.com/cyberthal/10-Bins-template
>
> For the record, Org works fine with this, although I had to do a bit
> of config to get around the default philosophy.


-- 
Jonathan McHugh
indieterminacy@libre.brussels


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 13:41 ` Jonathan McHugh
@ 2020-11-21 14:04   ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-21 14:04 UTC (permalink / raw)
  To: Jonathan McHugh; +Cc: emacs-orgmode

* Jonathan McHugh <indieterminacy@libre.brussels> [2020-11-21 16:43]:
> Texas,
> 
> Ive been developing a paradigm over the years based upon a (recursive) 6x6 grid
> system, aligned with keybindings around the home row. Called Qiuy, I
> refer to it as a "Recursive Modelling Language", given the annotations
> work down to the level of functions and parameters, as well as
> directory naming.

Explain details please.

How do you file stuff?

How do you retrieve it?

Side notes:

> While migrating my OS (Debian -> Guix)

Guix is fully free OS, GNU itself using GNU Shepherd init system with
scheme as system language.

> and Editor (Vim -> Emacs)

Vim is just fine and Emacs too. I never switched from vi to Emacs, I
use them both. And I use ed especially to edit system configurations
quickly. 

> has muddied my workflows, I hope that my explorations with Org-Mode
> still permit me to operate with a highly broad but shallow folder
> structure. In any case, Im happy to be using Helm for browsing
> rapidly (as you will understand reading below!).

I did not understand it. Need details.

> Should you have any interest I am drafting some of my thoughts re Qiuy,
> as part of attendance at the upcoming Constant workshop
> Bureaucracksy. Id be happy to send you some material if you wish.

Yes pleas, send it.

> =====================
> HOME FOLDER DIRECTORIES:
> =====================
> 1q10fq_music
> 1q10hqh_parsing

How do you use that?


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  9:53     ` Jean Louis
  2020-11-21 10:15       ` Tim Cross
@ 2020-11-21 14:44       ` Texas Cyberthal
  2020-11-21 15:45         ` Jean Louis
  1 sibling, 1 reply; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-21 14:44 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode

Hi Jean,

> By using the Meta Org File user automatically creates an index of filed files and can search for the file in the Org file itself and open the file from the Meta Org File without knowing where the file is really located.

Such a set of links could easily grow out of date if paths change, and
I wouldn't want to maintain it.  If the paths never change, then I
would memorize the paths and linking them would be slower than Dired
walking to them.

I do have a method called "Zinks" for managing UID links.  It permits
paths to change without breaking anything, both target and source.
However, in the vast majority of cases I find it much easier to just
walk the directory tree.  I doubt one can appreciate how useful a tree
synced to one's mind is until one has experienced it.  The tree adapts
to the mind and vice versa.

There's no need to know the exact locations of files; walking there is
informative and useful.  Or, for the trivial paths, walking is so
quick that it is faster than searching.  Search spawns distracting
mismatches to read, whereas walking the tree progressively narrows
scope in a mentally comfortable way that focuses the mind while
error-checking each step.  It's very comfortable to reach the
destination and be confident from the process that I'm in the right
place.

> File system is database.

Barely.  Databaseness is a gradient with file system at one end and
PostGres at the other.

Plain text and file system are the computing foundation.  The largest
and best set of tools apply.  Departing from them loses much.

A filesystem is extremely ergonomic with the right tools, and handles
bulk data very well.  Any database, even Org's, has higher overhead.

I do intend to integrate databases into Cyborganize with Dbmind, but
have barely thought about it yet.  Cyborganize should run fine without
any database, but of course database is extremely useful for business
etc.

I just don't think paths need to be input into the database.  The
strength of the database is freedom from the file system.  It should
focus on the things a file system can't do.  For example, querying all
the people who work at X company, or who live in Y country.

Duplicate Org IDs aren't a problem in my experience.  Noticing their
existence is a good way to reconcile the split after the dust of
execution has settled.  An Org workflow shouldn't generate lots of
duplicate links.  One that does probably indicates overuse of both
links and heading duplication.  If one really does need lots of unique
IDs, it's probably a sign to move to a heavier database than Org.

I'll fix that link.  The correct URL is
https://github.com/cyberthal/Textmind-template

Glad to hear you're finding Cyborganize components useful.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 10:21       ` Jean Louis
@ 2020-11-21 15:00         ` Texas Cyberthal
  2020-11-21 16:08           ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-21 15:00 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode

Hi Jean,

> Navigating does not necessarily contribute to production. Productivity may say what it wants but it may not reach those who are actually more productive without using the navigation. So studies may not tell us what is more productive, such may only tell what is currently used within the subject of being productive.

Outside 10 Bins, navigation is often negatively productive.  Whenever
the user navigates bad tree structure without correcting it on the
fly, he suffers profitless friction.  That's why Treefactor combines
with JiT sorting to make navigation and sorting a single activity.

Frankly I was surprised people prefer navigation despite being
generally so bad at tree structure.  In the absence of good structure
and tools, search is much better.

I agree, email should be database-centric.  Manually organizing emails
into folders (or worse, trees) is therefore wrong except in tiny
doses.

> Take care of duplicates. When marketing contact database is growing fast, some times 1000 people per day or more. People have same names. Often one cannot even know what is first and what is last name. You may know it for your country, in other countries is not so. Then those people engage in a course on distance. They are sending me images and files as results of their course assignments. I have to file the files in proper folder. Because names are not always unique I better file it under unique IDs, and keep separate symlinks with names of people to such unique IDs whereby symlinks can be automatically updated.

This is clearly a CRM database use case.  In this situation, the CRM
should define the unique ID, and then Textmind should accept it.  You
can still use the directory tree, though.  Just file it under
~/Surname-given-name/ID-number/~ for the non-unique name.  Recursively
searching ~/1-Textmind/2-Linked/7-Name/2-Flat/~ for a directory named
~/ID-number/~ will find the target even if his name changes slightly.
So you can save time by not inputting every scrap of text and files
into the CRM.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  7:56   ` Jean Louis
  2020-11-21  8:31     ` Texas Cyberthal
@ 2020-11-21 15:03     ` Dr. Arne Babenhauserheide
  2020-11-21 15:45       ` Texas Cyberthal
  2020-11-21 16:55       ` Jean Louis
  1 sibling, 2 replies; 121+ messages in thread
From: Dr. Arne Babenhauserheide @ 2020-11-21 15:03 UTC (permalink / raw)
  To: Jean Louis; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

[-- Attachment #1: Type: text/plain, Size: 1096 bytes --]


Jean Louis <bugs@gnu.support> writes:

> When there are more than 2000 people related notes, tasks,
> calculations, questions arise if such better be kept in one Org file
> or multiple Org files in one directory or multiple directories for
> multiple Org files?!

This came up multiple times in discussions. I think that it is wrong,
and the reason comes down to efficiency. If you want to work
efficiently, then sub-second delays matter, and having 4 files with
500 entries means that to search in them you need to open 4 files.

If you have 100 files with 20 notes each, you have to open 100 files.

Almost any other computing cost pales compared to opening files.

My current setup has around 1200 notes in 10 files (most of them in the
two main files, some of the notes are several pages long, but most take
up around half a page). Using org-rifle
(https://github.com/alphapapa/org-rifle) I can full-text-search them
with barely perceptible delay on a system clocked down to 1 GHz.

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 14:44       ` Texas Cyberthal
@ 2020-11-21 15:45         ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-21 15:45 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: emacs-orgmode

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-21 17:45]:
> Hi Jean,
> 
> > By using the Meta Org File user automatically creates an index of
> > filed files and can search for the file in the Org file itself and
> > open the file from the Meta Org File without knowing where the
> > file is really located.

> Such a set of links could easily grow out of date if paths change, and
> I wouldn't want to maintain it.  If the paths never change, then I
> would memorize the paths and linking them would be slower than Dired
> walking to them.

By principles of Doug Engelbart, once file is filed, it should be
there and nowhere else, it becomes more or less static. Then you have
some kind of DKR or dynamic knowledge repository that tracks where
such files are. Let us say that DKR provides you with the hyperlink
"K12A". This link is is then referenced from all other files.

If the underlying location of the file changes, but it should not, all
the hyperlinks remain always the same.

> I do have a method called "Zinks" for managing UID links.  It permits
> paths to change without breaking anything, both target and source.
> However, in the vast majority of cases I find it much easier to just
> walk the directory tree.  I doubt one can appreciate how useful a tree
> synced to one's mind is until one has experienced it.  The tree adapts
> to the mind and vice versa.

That is good and useful.

While I do order things in a tree it is not that I think of those
tree in hierarchical sense. By habit I could maybe remember but
because it is not necessary to remember, it is not useful, then I
don't.

What I remember is the sub-tree name. For example Emacs or Emacs Lisp,
then I just do the helm or ivy or other completion and find the
subtree. From there on I browse for information, file it, open up or
launch hyperlinks. It is not browsing the tree, it is more direct jump
to the relevant part of the three.

And if hyperlinks are represented as (hyperscope 123) then regardless
if such link moves from subtree to subtree or underlying information
changes somehow the reference to that link remains always same (as
long as ID is always same).

> There's no need to know the exact locations of files; walking there
> is informative and useful.  Or, for the trivial paths, walking is so
> quick that it is faster than searching.

That is good and isn't it general way of sorting things? I guess that
general computer users may not be aware that they could make nice
hierarchical tree of directories. System that users are offered are
file managers and such are way to abstract for today's users. Back in
time we did not have that many files, today we have loads and loads of
files. Those programes named file manager do not manage anything by
themselves. And they should.

User should choose to file a file, and by any type of paradigm, user
would maybe answer just 1-3 questions and file would be filed into
appropriate place. It could be retrieved as fast as filed. That would
be semi-automatic file management.

If all files would have its meta-data then automatic file managemet
could be possible. Then it would be known who is author, what is
subject or tag of the file, what is its title, date of writing it,
permissions (not file permissions but access permissions) and
similar. Then program could file those files automatically.

For images named IMG_2020111012345.jpg is possible to parse image
names and if not image names then the built-in EXIF data and file all
images by their dates automatically. Bunch of images coming from
camera and they need to be sorted by date so in that case it can be
automatic.

Text files do not have its meta data. Org files could be said to have
as there is TITLE and AUTHOR, DATE. But there is no rule for meta
data. Good set of principles or rules when creating files could create
meta data and by meta data files could be automatically filed and
easily retrieved.

> Search spawns distracting mismatches to read, whereas walking the
> tree progressively narrows scope in a mentally comfortable way that
> focuses the mind while error-checking each step.  It's very
> comfortable to reach the destination and be confident from the
> process that I'm in the right place.

That is exactly same mental concept that I use. It becomes pleasure as
well. I could watch videos of other similar creators as you and I can
feel the pleasure in their voices and I can understand the piece of
mind when files are sorted. Unsorted files do bring mental mess in the
person's mind.

> > File system is database.
> 
> Barely.  Databaseness is a gradient with file system at one end and
> PostGres at the other.
> 
> Plain text and file system are the computing foundation.  The largest
> and best set of tools apply.  Departing from them loses much.

I know in computing we say "database" for those more sophisticated
databases. By definition from Wordnet:

* Overview of noun database

The noun database has 1 sense (no senses from tagged texts)
1. database -- (an organized body of related information)

Thus database can be in any form. It need not be special so much
special software. It need not be software and digital data at all, it
can be paper database.

Simple text file can be excellent database for contacts for as long as
editor provides search capabilities and there is some kind of
organized way of putting data inside.

> I do intend to integrate databases into Cyborganize with Dbmind, but
> have barely thought about it yet.  Cyborganize should run fine without
> any database, but of course database is extremely useful for business
> etc.

Maybe complex database is not needed. As I said there are various
approaches and it can be all simple.

A database can be also simple LISP data structure, it could be list of
hashes securely saved on the file system with possibility to add,
modify, delete records. Multiple databases can be made this way for
multiple subjects, let us say PEOPLE, GROUPS, LISTS, etc. Then
underlying file system can follow the defined structure.

> I just don't think paths need to be input into the database.  The
> strength of the database is freedom from the file system.  It should
> focus on the things a file system can't do.  For example, querying all
> the people who work at X company, or who live in Y country.

File system can be used for the same:

- symlink `People/Joe Doe` to Countries/USA/FL/Miami
- symlink `People/Joe Doe` to Groups/Emacs Users/
- symlink `People/Joe Doe` to Companies/USA/PROGRAMMING INC/

To find the information:

locate -A "Joe Doe" PROGRAMMING

or

locate -A "Joe Doe" Miami

or just

locate FL/Miami

By symlinking into various attributes you can get selections easily.

> Duplicate Org IDs aren't a problem in my experience.  Noticing their
> existence is a good way to reconcile the split after the dust of
> execution has settled.  An Org workflow shouldn't generate lots of
> duplicate links.

It should not but it does.

Projects are repeatable sometimes. Need not be single person
projects. Project that I do may have unique IDs and I have to assign
same project to ABC number of people. Then I copy the subtree into the
file of that person. Unique IDs are also copied. Of course it is
manageable if I create some functions to delete and regenerate unique
IDs.

What is handy with unique IDs is that emails and threads with tasks
assigned by email, containing the unique ID, can easily be located.

> One that does probably indicates overuse of both links and heading
> duplication.  If one really does need lots of unique IDs, it's
> probably a sign to move to a heavier database than Org.
> 
> I'll fix that link.  The correct URL is
> https://github.com/cyberthal/Textmind-template

I have cloned it and I see it is something familiar to you, not that I
can understand your mind flow. In general I find any such system of
organization useful for people to learn from, to adopt it or develop
their way of thinking and managing files.




^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 15:03     ` Dr. Arne Babenhauserheide
@ 2020-11-21 15:45       ` Texas Cyberthal
  2020-11-21 17:12         ` Jean Louis
  2020-11-21 22:36         ` Dr. Arne Babenhauserheide
  2020-11-21 16:55       ` Jean Louis
  1 sibling, 2 replies; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-21 15:45 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide; +Cc: emacs-orgmode, Ihor Radchenko, Jean Louis

Hi Arne,

*Almost* any computing cost pales, but not the computing cost of Emacs
choking on rendering large files.

Doubtless there are ways to mitigate that issue.  I'm unsure what the
tradeoffs would be.  Perhaps my Spacemacs does too much prettifying of
my Org buffers.  But I like pretty buffers.  It's easier to just stay
under 1 MB file size.

File opening cost should be reduced by storing text files on an SSD.
A small one will do.

Textmind/Exomind buffers should be left open.  Thus the opening cost
is paid once per session per needed file.  That is acceptable.

I'm not sure what kind of lagless Org database operations are required
in your workflow, but I suspect they could be mostly replaced by a
proper Textmind workflow and 10 Bins structure.

The alternative is to do everything in a few big files.  Org has too
much potential to misfold or otherwise mangle huge outlines in ways
difficult to spot and repair.  Nor do I want to squint at endless
asterisks when I could have Dired ergonomics instead.

Grepping my 94 Mb 6562 files (excluding archive) Textmind for
"elephantine" takes a few seconds, which is fine.  Org searching for a
nonexistent UID link takes a few minutes, which is why I run that
search nightly, to refresh the index.  My Org Agenda search scope is
only 252k in 58 files and is effectively lagless.

I guess I avoid the problem you're talking about by mostly excluding
bulk prose from the Agenda directory.  They're fundamentally different
and should be handled differently.  One is about human language, the
other is about database metadata.  The temptation to do everything
inline just because Org supports it is one of Org's biggest traps.
It's like the trap of trying to outline strictly when you should be
rambling.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 15:00         ` Texas Cyberthal
@ 2020-11-21 16:08           ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-21 16:08 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: emacs-orgmode

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-21 18:01]:
> Hi Jean,
> 
> > Navigating does not necessarily contribute to production. Productivity may say what it wants but it may not reach those who are actually more productive without using the navigation. So studies may not tell us what is more productive, such may only tell what is currently used within the subject of being productive.
> 
> Outside 10 Bins, navigation is often negatively productive.  Whenever
> the user navigates bad tree structure without correcting it on the
> fly, he suffers profitless friction.  That's why Treefactor combines
> with JiT sorting to make navigation and sorting a single activity.
> 
> Frankly I was surprised people prefer navigation despite being
> generally so bad at tree structure.  In the absence of good structure
> and tools, search is much better.

Do you really think people prefer? Or they simple have no other
option?

If I have no other option to drink a juice I will drink water, not
necessarily I prefer drinking water in hot sunshine. I like
Apfelschörle.

Searching file contents is database search. I am not any more fan of
that. Tools like Beagle or Tracker are making basically double
database of files only for me to find or search files. Most of time I
am only searching for meta data, not for contents. With 1000 GB one
would need to have maybe that much indexed database and constant
updating of files and their positions.

That is why I prefer relational pinpointing or relational access and
actions or locating files by using indexes.

Relational access would mean when you inspect the object to quickly
jump to all relational pieces of information relating to that
object. If I look on person's name there need not be any note or
contact information but I should be able to quickly access such
information. And each object should have general actions like actions
relating to email object could be to send email, delete email,
forward, etc. that is what mail readers do. Action on file relating to
user should be to quickly see emails of the user, social networks,
websites, to call user, SMS, send information, jump into XMPP chat,
share the file or request new version of file and similar.

Locating files by indexes would be to index only meta data and then to
use searches to find meta data such as title, date, author, or various
attributes. Tools like locate and similar do that. 

> I agree, email should be database-centric.  Manually organizing
> emails into folders (or worse, trees) is therefore wrong except in
> tiny doses.

You missed this:

- I am reading email, answering and if I wish to keep it all I do is
  `s` to save it into the mailbox related to the email address:

  ~/Maildir/texas@example.com

  Emails that I send to user are saved to same mailbox.

  That is all. No thinking, nothing, saving goes automatic. This
  single plan of filing emails enables me to see all conversations
  related to that email address.

  Database keeps all email addresses of specific person

  $ emailsof texas@examp

  would give me 3 views if there are 3 email addresses, I could
  basically review all conversations of that person.

  There need not be any true database like `mu` or `notmuch` as this
  way I find most of times what I need. I can search inside of
  mailboxes easily.

  I would not keep emails in the database like PostgreSQL, no. Emails
  have to be accessed by mail readers and there are just few that
  would be supporting databases. 

> > Take care of duplicates. When marketing contact database is
> > growing fast, some times 1000 people per day or more. People have
> > same names. Often one cannot even know what is first and what is
> > last name. You may know it for your country, in other countries is
> > not so. Then those people engage in a course on distance. They are
> > sending me images and files as results of their course
> > assignments. I have to file the files in proper folder. Because
> > names are not always unique I better file it under unique IDs, and
> > keep separate symlinks with names of people to such unique IDs
> > whereby symlinks can be automatically updated.
> 
> This is clearly a CRM database use case.  In this situation, the CRM
> should define the unique ID, and then Textmind should accept it.  You
> can still use the directory tree, though.  Just file it under
> ~/Surname-given-name/ID-number/~ for the non-unique name.  Recursively
> searching ~/1-Textmind/2-Linked/7-Name/2-Flat/~ for a directory named
> ~/ID-number/~ will find the target even if his name changes slightly.
> So you can save time by not inputting every scrap of text and files
> into the CRM.

That is right, good idea to file under surname/ID. I would rather
prefer the approach ID/Full-Name as if directory is automatically
created by its ID, so I do not need to think about it.

CRM is for me not the database, it is method of management of anything
related to people and I call it Central Files. I do not put text files
into database as that converts them into something else, they are not
text files. That is nonsense invented by people who try to use
exclusively web interface to manage anything and such interface is
limiting user. User for example is unable launch `mpv` video player on
the video file belonging to the person Joe Doe as browser will not
allow it to launch external programs.

CRM or Customer Relationship Management is just way of thinking, it
does not need to be computerized. Rolodex was one way of CRM method
and it worked well and works today well. Larger organizations have and
still have paper files, they open paper file and can see previous
conversation, which officer or sales manager handled the person and
how, and they would make a call and put note in the file and file it
back in place. To handle daily 100 or 300 people is quite possible by
using this system. I was handling usually 800 files per week and wrote
this many personal letters. Just take the bunch of paper files and go
over files, open, call, invite customer, make a note on paper, put
note in the file, close it. It is pleasure working that way and I can
tell out of experience. This is for reason that files are still
physical object that staff handling it can keep it in the
hands. Collaboration is also there, multiple staff members simply
exchange such paper files between themselves. And multiple staff
members can look into such files and see what other staff member has
communicated, offered, sold to specific person. And I still do have
paper files as such are also part of digital management. It is
often illegal not to have paper files pertaining to various
entities. If there are contracts, I have to have paper files, it is
yet another object. On paper file there must be unique ID written down
by hand. Contracts may be in such paper file. Digital index must tell
where the paper file is sorted, maybe it is A2 box on the shelf in the
green room.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 15:03     ` Dr. Arne Babenhauserheide
  2020-11-21 15:45       ` Texas Cyberthal
@ 2020-11-21 16:55       ` Jean Louis
  2020-11-21 22:48         ` Dr. Arne Babenhauserheide
  1 sibling, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-21 16:55 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

* Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-21 18:04]:
> 
> Jean Louis <bugs@gnu.support> writes:
> 
> > When there are more than 2000 people related notes, tasks,
> > calculations, questions arise if such better be kept in one Org file
> > or multiple Org files in one directory or multiple directories for
> > multiple Org files?!
> 
> This came up multiple times in discussions. I think that it is wrong,
> and the reason comes down to efficiency. If you want to work
> efficiently, then sub-second delays matter, and having 4 files with
> 500 entries means that to search in them you need to open 4 files.

Hallo Dr. Arne,

It maybe wrong and it depends of the approach. My approach is that I
think with people and subjects, not with notes only.

Subject can be special plan like ABC.org and I do not need to search
notes related to that plan outside of ABC, because I do not mix
things. I am searching within one file only.

Things TODO are per subject or per person.

Files pertaining to any person are filed in the person's folder.

Somebody else deals only with personal notes and they maybe put such
in various files and of course they need to search.

I am thinking of "Joe Doe" and here is the flow:

- press s-c (for contacts)

- enter Joe Doe or Joe Doe, Berlin, etc.

- among many Joe Doe, I may narrow down to right one

- click F4 there is Org file for Joe Doe, enter Tasks, Transactions
  and whatever else, send Tasks, Notes to Joe Doe, collaborate or make
  agreements. I never construct or open file for a person, function is
  doing that. It makes the file
  ~/Work/People/By-ID/320431/320431.org

  If I need to search, I search inside of the file. 

- click F5 and find all other files for Joe Doe. For example contracts
  and similar. If I need to search there then I use find and grep and
  similar tools. No need for indexing. Files are mostly sorted by data
  how they come.

There is same flow if I think of a group of people with the difference
that if I need a person I still need to find the person in the list of
people. 

So in general I never need to use some general search through Org
files or any other files as my way of thinking begins with People or
Groups and that narrows what has to be searched.

> If you have 100 files with 20 notes each, you have to open 100
> files.

You maybe mean opening automatically files and searching through
such. I do not find Org system comfortable for that. I see it tries to
remember files, IDs, and agenda among various files. Not that I find
it comfortable. My way of thinking is always People or Groups, and
from there various searches are performed and that narrows drastically
the subject that has to be searched.

> My current setup has around 1200 notes in 10 files (most of them in the
> two main files, some of the notes are several pages long, but most take
> up around half a page).

People are all over the world using Org in various manners and every
day I find different ways of using Org mode.

On my side I almost never put notes in Org files. As by definition
from Wordnet, note is "brief written record". If it is brief written
record I do record it in the database under Notes related to person,
or group or opportunity or some case, or it can be related to anything
else. Then again I think of person and I can get all notes for the
person.

Org files I am using mostly for planning and project
administration. There are almost no notes, just instructions on how to
execute specific steps and there are headings with articles or
instructions that do not need execution. There are no records that are
saved for later or that do not need any execution or learning.

Org files on my side thus offer:

- hierarchical knowledge database that may be shared with other
  people, and is almost always directed to sharing with other people

- plan and project administration with tasks, whereby such subtrees
  can be shared with other people and for multiple times executed

If those are called notes by other people, alright fine. On my side
those are not just notes.

Notes I relate to objects like People, Groups, Opportunities, Cases,
so I put some notes there. But general dynamical knowledge repository
is better, that is where I mention HyperScope.

It is like database of hyperlinks that hyperlink to anything, it is
more abstract and I find that approach also versatile. No need to
define specific database for notes, all I do is defining hyperdocument
type to be "Note" and I can link it to anything else.

Semantic Synchrony
https://github.com/synchrony/smsn

Semantic Synchrony is using maybe better type of a database I do not
know, I am using SQL, SMSN uses graph database.

> Using org-rifle (https://github.com/alphapapa/org-rifle) I can
> full-text-search them with barely perceptible delay on a system
> clocked down to 1 GHz.

That is great tool for many.

Org files are for me to write complex documents like 850 kb something
like a organizational knowledge, training for each staff member,
plans, projects, tasks, etc. Majority of that stuff can remain in Org
files.

Maybe that stuff related to execution and collaboration I will move to
the database approach. All the unique ID stuff drops down forever as
database unique IDs are handling themselves without me thinking about
it, and is hard to make a mistake. It is basically putting data into
meta level. When I need a project made out of that meta data, I can
mark it all like in Dired or just mark set of such and export into Org
file and send to the person for execution.

Overall from this discussion I hope that people find some useful ways
of using Org, like org-rifle, semantic organization of stuff and
similar.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 15:45       ` Texas Cyberthal
@ 2020-11-21 17:12         ` Jean Louis
  2020-11-21 18:01           ` Texas Cyberthal
  2020-11-22  6:36           ` Ihor Radchenko
  2020-11-21 22:36         ` Dr. Arne Babenhauserheide
  1 sibling, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-21 17:12 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode, Ihor Radchenko

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-21 18:46]:
> I guess I avoid the problem you're talking about by mostly excluding
> bulk prose from the Agenda directory.  They're fundamentally different
> and should be handled differently.

Well said. 

> One is about human language, the other is about database metadata.

That is so.

In fact the properties, custom ID and else inside is mostly visually
disturbing me though it is necessary. Before knowing about Org I have
already had a system of planning, projects, tasks, and all that could
be related to people, groups and what other else things. This part of
Org that is dependant on meta data is better managed through
dedicated databases. 

> The temptation to do everything inline just because Org supports it
> is one of Org's biggest traps.  It's like the trap of trying to
> outline strictly when you should be rambling.

Temptation is brought through the usage of Org as there are not so
many choices beyond it. Org is meant to keep simple things
simple. Data being managed may easily grow into complex thing.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 17:12         ` Jean Louis
@ 2020-11-21 18:01           ` Texas Cyberthal
  2020-11-21 18:57             ` Jean Louis
  2020-11-22  6:36           ` Ihor Radchenko
  1 sibling, 1 reply; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-21 18:01 UTC (permalink / raw)
  To: Jean Louis; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode, Ihor Radchenko

Hi Jean,

> That is good and isn't it general way of sorting things? I guess that general computer users may not be aware that they could make nice hierarchical tree of directories.

It's not that they're unaware.  Everybody with a mouse and Windows
Explorer tries to make good directories.  It's just that
Dired+Treefactor's order of magnitude improvement in speed and fluency
means that the directory tree can be mind-synced as never before,
making walking the tree an education in itself.  With so much
intelligence embedded in each level, bypassing it makes little sense.
Also one should check during the walk whether key info is waiting in
transit for batch refiling.

For classic database tasks, I'd rather use Postgres than symlinks.  I
already use symlinks enough for conveniences such as connecting
synonyms.  Too many symlinks make paths unpredictably brittle,
chilling sync dynamism, creating rigidity.

Textmind is documented at http://cyberthal-docs.nfshost.com

I neglected Dr. Arne's honorific.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 18:01           ` Texas Cyberthal
@ 2020-11-21 18:57             ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-21 18:57 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode, Ihor Radchenko

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-21 21:02]:
> Hi Jean,
> 
> > That is good and isn't it general way of sorting things? I guess
> > that general computer users may not be aware that they could make
> > nice hierarchical tree of directories.
> 
> It's not that they're unaware.  Everybody with a mouse and Windows
> Explorer tries to make good directories.

People try and people fail. I know hackers only on distance, I do not
know them personally face to face. Often computer users that I see in
offices like stationary, even sometimes legal office, have their
desktops overloaded of files on top of files on top of files where
majority of them are named something like unknown or whatever new-file
and similar nonsense. All sorting is taking place under Desktop on
Desktop space and it becomes mess.

> It's just that Dired+Treefactor's order of magnitude improvement in
> speed and fluency means that the directory tree can be mind-synced

Good term, mind synced. That is how it should be. In my opinion
various paradigms of file sorting should be sorted in a list similar
to those Awesome lists. Sorting files how mind thinks is how it should
be. Computer should help user to complement the mind and help in
execution of actions and not bother the mind or make mind confused
what is really the case with majority of users.

Side note: I was always sorting files, people, stuff from the command
line or from web browser into their places. And I mostly used readline
in bash for completion or finding of the selection candidate.

In Emacs I am using `ivy-mode` or `helm`, `selectrum` and similar,
Emacs offers quite good interface for completions.

And often I am completing file locations, maybe I wish to file into
this or the other subject. So the list of subjects has to be brought
up.

In X and outside of Emacs there is dmenu and I could use it even from
Emacs inside out. 

(defun dmenu-completing-read (prompt collection)
  ;; &optional predicate require-match initial-input history def inherit-input-method)
  "Uses external `dmenu' command for Emacs completions."
  (let* ((collection (concat (string-join collection "\n") "\n"))
	 (file (string-to-file-force collection "/dev/shm/collection"))
	 (dmenu "dmenu"))
    (with-temp-buffer
      (call-process dmenu file (current-buffer) nil "-fn" "DejaVu:pixelsize=30" "-l" "10" "-i" "-b" "-p" prompt "-nb" "dark goldenrod" "-nb" "black")
      (string-trim (buffer-string)))))

(dmenu-completing-read "Subject: " '("People" "Work" "Group"))

I find dmenu as excellent tool to provide it for functions that are used within Emacs and that may be used outside of Emacs to complement Emacs filing of files.

For example Rox filer file manager or Nautilus can invoke external command that files the file into specific directory by using dmenu. Choose the directory by few words, and if directory is semnatically written, file may be filed easily.

Three interfaces for selection among large line-based items were needed:

- [X] Emacs
- [X] X interface: Dmenu
- [ ] Console. I was using readline with TAB, it is not visual enough

Now I found finally `fzf`.

$ mv courier-crm114 `find Work/Computer -type d | fzf`

Then in the next step I can type "mail" or "spam" subdirectories and file it there.

fzf is great tool for console and terminal emulators. It similar
things on console what helm does on Emacs and dmenu on X.

- [X] Console: fzf

fzf is great tool that may be used for finding stuff, filing, retrieval of stuff, launching or opening files. Example:

$ mimeopen `locate *.org | fzf`

and similar with dmenu:

$ mimeopen `locate -d .locate.database  -A Documents .org | dmenu -fn DejaVu:pixelsize=20 -l 10 -i -b -p "Org: " -nb "dark goldenrod" -nb black `

As my files are in ~/Documents/Org/ I would find at least 185
files ending with .org there by its name and quickly open it with
emacs. Instead of "mimeopen" I could as well use emacsclient.

If you have set your mimeopen to open it by Emacs, you will
quickly locate the file and open it. Provided that Org file names
have some built-in semantics.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 15:45       ` Texas Cyberthal
  2020-11-21 17:12         ` Jean Louis
@ 2020-11-21 22:36         ` Dr. Arne Babenhauserheide
       [not found]           ` <CAMUm491Psp0u5JKyGROP6M=UfAcvOLTtOKAD1rOearV+KxgYdQ@mail.gmail.com>
  1 sibling, 1 reply; 121+ messages in thread
From: Dr. Arne Babenhauserheide @ 2020-11-21 22:36 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: emacs-orgmode, Ihor Radchenko, Jean Louis

[-- Attachment #1: Type: text/plain, Size: 2015 bytes --]

Hi Texas,

> Grepping my 94 Mb 6562 files (excluding archive) Textmind for
> "elephantine" takes a few seconds, which is fine.  

For the sake of ruining my argument ( :-) ), you might want to check ripgrep.

Searching within 30k files of in total around 150 MiB for
ProviderBuilderFactory (guess what type the files are :-) ) takes 0.4s
with ripgrep.

(that’s on an nvme (M.2) disk)

It’s still too slow for interactive use.

Within 1k files of in tootal 7 MiB it is fast enough.

> Org searching for a nonexistent UID link takes a few minutes, which is
> why I run that search nightly, to refresh the index. My Org Agenda
> search scope is only 252k in 58 files and is effectively lagless.

That lagless is what I see as being required for actual operation.

> I'm not sure what kind of lagless Org database operations are required
> in your workflow, but I suspect they could be mostly replaced by a
> proper Textmind workflow and 10 Bins structure.

I need instant search in the knowledge database and quick filing of
tasks. Also I need the agenda to create a clocktable (that’s on the
limit of being too slow) and the calendar and tasks of the week.

Also I need quick filing of notes and quotes (in specific files, not
part of the agenda) and of long-form articles, one file per article
(using journal.el, also outside the agenda, searched using M-x deft),
and quick creation of website entries for a given category within the
site (i.e. M-x draketo-software).

> I guess I avoid the problem you're talking about by mostly excluding
> bulk prose from the Agenda directory.  They're fundamentally different
> and should be handled differently.

I do that, too. One is source code, one is organisation tasks. I link
from org into the source code, though (but never check the targets).

I do use org-planning within prose, but there the scope is only the one
org-document.

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 16:55       ` Jean Louis
@ 2020-11-21 22:48         ` Dr. Arne Babenhauserheide
  2020-11-22  0:48           ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Dr. Arne Babenhauserheide @ 2020-11-21 22:48 UTC (permalink / raw)
  To: Jean Louis; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

[-- Attachment #1: Type: text/plain, Size: 1881 bytes --]


Jean Louis <bugs@gnu.support> writes:

> So in general I never need to use some general search through Org
> files or any other files as my way of thinking begins with People or
> Groups and that narrows what has to be searched.

How do you deal with stuff that applies to several people?

> it comfortable. My way of thinking is always People or Groups, and
> from there various searches are performed and that narrows drastically
> the subject that has to be searched.

That does sound like it should speed up searching by directory. My mind
works differently here: I remember some concept and need to find stuff
connected to that, including people, but also additional ideas,
instructions, and just bullet points with info I might need again later
(which multiple times saved many hours of searching already).

The one thing that keeps me from that is that I often file under
specific projects, and the active projects are shifting constantly. For
that I enjoy it a lot that I only need to customize the capture
templates to add a project.

> On my side I almost never put notes in Org files. As by definition
> from Wordnet, note is "brief written record".

With note I just mean "something". Mostly its bullet points with tasks,
some links and references into source-code which allows me to quickly
take up a tasks after some downtime.

> Overall from this discussion I hope that people find some useful ways
> of using Org, like org-rifle, semantic organization of stuff and
> similar.

I hope so, too.

Thank you for describing the tools you use!

I for one am still working on my workflow, and I guess that 10 years
from now it won’t be the same as today. I hope that learning about other
ways to work with org will help me a lot in future.

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 22:48         ` Dr. Arne Babenhauserheide
@ 2020-11-22  0:48           ` Jean Louis
  2020-11-22  2:47             ` briangpowell
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-22  0:48 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

* Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-22 01:48]:
> > So in general I never need to use some general search through Org
> > files or any other files as my way of thinking begins with People or
> > Groups and that narrows what has to be searched.
> 
> How do you deal with stuff that applies to several people?

From database viewpoint there are

- accounts (which means companies, groups, entities, like "People who
  wish to get employed in Europe")

- there are contacts, that may belong to account, additionally belong
  to company (also account), additionally be member of account, so
  there are 3 groupings for each contact how that contact may be
  related to account. If it is main account such as "Welders" or if
  maybe under "Company" is written "welders" (not quite correct) in
  reality it does not matter.

- then there are lists to which other lists belong. Account A and
  account B, C, D can belong to list 01. Various accounts can be put
  together in uniting lists. Those lists are encompassing other lists,
  not individual people but people in the list (account) usually
  unless there is only one in the account. Those lists I am using for
  mailing them or informing them by letter, SMS, etc. Geologists and
  mining engineers and metallurgists are 3 different accounts but if
  all of them speak Swahili both in Kenya and Tanzania and are in the
  related branch of economy so they can be sent same type of
  information.

Then there are groups, which is just another name for a new list. Then
there are tags. I can freely tag account, contact or anything else. By
tags I can finely select specific people belonging to specific group.

There are account types and group types.

Tags by itself have its own description or purpose to name it type.

Some people introduce other people, few of them introduced
thousands. So contacts have a column "introduced by". That becomes
very handy when talking to somebody and it also helps in awarding
introduces. It helps when people place their hyperlinks and become
automated introducers (lead generation).

When I know that person belongs to some group of people and I have to
write email and I know it is better to inform everybody, then there is
action to assign identity from which I am sending email. It could be
public or internal identity with different email address. Emails to
that person would always go from designated email address without me
thinking about it. Then there are Cc and Bcc fields and in those
fields I could designate: to inform same contact to each of email
addresses with same message, and to inform group of people each
time. Thus if writing to one contact all others get informed through
same message. But I am not thinking about who belongs to the group,
and what are their email addresses, that gets inserted
automatically. Email composition is usually inside of Emacs.

Sending files? If contact is in the group and others need to see the
file, then Cc and Bcc fields work in the same way, file sent to one
person is sent to other members of the group.

Sometimes contact tells me to please exclude some people from Cc, so I
just go into definition of identities for contact and exclude such.

SMS I am sending by using kdeconnect.el package so any SMS I send this
way it is getting recorded to the contact. If I need to send SMS to
the group, then same SMS could be sent to whole group.

If the note on one contact is related to other people then is trivial
to automate to inform other people on that particular note.

If any group of people is there, filing files under group does not
make much sense to me. I would not file it as Group/ABC/file-01.pdf

I would file it under By-ID/Contact-ID-123/Group/file-01.pdf as files
are normally sent by one email address of one person or under one
name. I deal with people not with empty groups that do not
communicate. But group is important, so there can be /Group/ directory
on the file system where all contacts of one group can be symlinked
automatically if it happens that I need to search by Group on file
system, but I don't. I search for groups in the database and see list
of contacts there and then jump to contact.

Same thing with invoices, they are written either to company or to
individual or some individual in some company. I will not file or act
based on invoice. I have to act based on authorirative or maybe
hierarchically higher object first.

In general is always good to make a list of things and then lists are
foundation for dealing easier with whatever groups of anything.

> > it comfortable. My way of thinking is always People or Groups, and
> > from there various searches are performed and that narrows drastically
> > the subject that has to be searched.
> 
> That does sound like it should speed up searching by directory.

You remember that I do not search by directory.

Computer stuff I search by directory, like
Work/Computer/Devices/Dictaphone or Work/Computer/Graphics/shadow

Stuff related to any entity, organization, group of people, mailing
list or list that encompasses other lists, I am locating in the
database but the file system location is automatically expanded from
the unique IDs. So I need not know where is exactly directory for the
group ABC, but I know if I press F8 that I am right there. Then files
are sorted for the group or account normally by date, but could be by
License number or something else. It is mixture of database relational
jump to base directory for specific account/company/group and
sub-directories. Base directory I do not need to know, those
sub-directories are few and search becomes very fast. No special
database is needed for this as one can keep hundreds of groups and
people in simple Lisp structures saved in files.

> My mind works differently here: I remember some concept and need to
> find stuff connected to that, including people, but also additional
> ideas, instructions, and just bullet points with info I might need
> again later (which multiple times saved many hours of searching
> already).

What I learn is that concept of management of information in computer
better works by the concept of associations or relations as that is
similar how mind works. I do not see much difference here in thinking
how things information should be stored.

I have some hobby and there are paper books, images, videos, DVDs,
digital books related to that hobby. All that is sorted by Authors as
that is one attribute that those things have. Additionally there are
subjects. Authors's individuals works are symlinked to various
multiple subjects as multiple subjects (tags) related to same Author's
work. If author produces only for one subject then his name is
symlinked to that subject. Sometimes there are 2 or more authors
working together, so their directory is also symlinked to individual
authors.

Similar concept applies to music or videos, it is sorted by authors
and bands, and then individual works are sorted by its type of music
or genres of videos.

Images are sorted by people who are on the image. But I do not think
of that, I just say "Adrian" and image is sorted there in appropriate
date folder for that person. Computer thinks WHERE is the location,
not me. All other files are also being sorted like that and it is work
in progress.

> The one thing that keeps me from that is that I often file under
> specific projects, and the active projects are shifting
> constantly. For that I enjoy it a lot that I only need to customize
> the capture templates to add a project.

In the dynamical knowledge repository backed by PostgreSQL I have
subtrees and each subtree has its name. I am more familiar with
structured data in the database. So if I wish to have equivalent of
capture it becomes trivial, press key, choose set and insert whatever
note or task or article, anything. It just has little different
structures.

I do not need to setup extra capture configuration as there are
already sets or subtree names. I am quickly locating appropriate
substree name and filing under.

Something I wish to file need not be Org mode, but it can be. A note
can be written in any text mode and filed in the set or
subtree. Markdown, Koutliner, it can be Perl snippet, one liner,
excerpt from email or message mode note, why not. SQL snippet, Emacs
Lisp or Scheme. Normal text. I feel more free this way. 

Hyperdocuments have its types like WWW, Gopher, Gemini, FTP, SFTP,
Note, Task, Video to be played at exact time, local file, YouTube
video, Dired directory, Program Launch, PDF, PDF by query, PDF by page
number, Emacs Lisp, Org Heading, Org file, Message ID, Set, and so
on.

These days I am thinking to make self-defining types and I mean to
place the code inside of the hyperdocument type entry that defines how
that entry should be handled. User accessing database at University
Makerere could access hyperdocument that designates that not only
video file has to be opened in the browser, but that window has to be
split so that annotations related to video file has to be shown in
same time. But user accessing such hyperdocument need not necessarily
know that its viewing or launching is customized by the type of the
hyperdocument defined somewhere else, not in software directly. It
sounds similar to Javascript launched in web browsers with full
liberty in computing. Emacs Lisp snippets would be pulled from
database directly and executed on users' computer. File transfers are
non existent and file system is not there. Nothing gets really
downloaded or saved, just loaded into memory and executed.

Just thinking of a hyperdocument type or object type "comment" or
"feedback". When activating such user loads few functions, write the
comment, functions can also say what will be done with the
comment. School teacher or head teacher acts upon it or comments are
simply published.

Sets for now do not have types, but why not. If set has type of topics
and topics allow comments there is automatic forum and discussion.

> I for one am still working on my workflow, and I guess that 10 years
> from now it won’t be the same as today. I hope that learning about other
> ways to work with org will help me a lot in future.

Same on my side.

Summary for me:

- navigation by hierarchy is one way, we all use it to search and file
  documents
  
- searching through indexed database is different way, it is not good
  for filing anything

- direct relational access where computer locates the file is third
  way for knowledge management

- it is better designing filing, sorting and retrievals by concepts of
  mind or how mind works

- any objects or pieces of information shall have its actions that act
  upon it and that can hyperpush the user to other pieces of
  information

- general increase of hyperlinking by relations helps in creation of
  better systems.

Here is how I have implemented simple versioning system that is
decided by program and not the database. It was just before hour.

(defun hyperscope-vc (table column id &optional description)
  "Simple version system."
  (let* ((value (rcd-db-get-entry table column id *hs*)) ;; takes DB value
	 (value (sql-escape-string value)) ;; prepares value for SQL
	 (description (if description (sql-escape-string description) "NULL"))
	 (sql (format "INSERT INTO vc (vc_table, 
                                      vc_column, 
                                      vc_tableid, 
                                      vc_value, 
                                      vc_description) VALUES ('%s', '%s', %s, %s, %s)
                         RETURNING vc_id"
		      table column id value description))
	 (id (rcd-sql sql *hs*)))
    (if id id nil)))

Above function takes the value from any table, any column, by ID and
inserts the value into the `vc` table. 

Then comes this function below that edits hyperdocument as Org file
with Org mode. Before updating it is using `hyperscope-vc` version
function to basically save the old value in the separate table. If I
want to see diffs I think it is also trivial to do.

(defun hlink-edit-org (id)
  (let* ((blob (hlink-description-value id))
	 (blob (if blob blob  ""))
	 (buffer-name (format "HyperScope Editing ID: %d" id))
	 (new-blob (read-from-buffer blob buffer-name 'org-mode)))
    (hyperscope-vc "hlinks" "hlinks_description" id)
    (rcd-db-update-entry "hlinks" "hlinks_description" "text" id new-blob *hs*)))



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-22  0:48           ` Jean Louis
@ 2020-11-22  2:47             ` briangpowell
  2020-11-22 17:55               ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: briangpowell @ 2020-11-22  2:47 UTC (permalink / raw)
  To: Jean Louis
  Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode,
	Ihor Radchenko

[-- Attachment #1: Type: text/plain, Size: 16007 bytes --]

* Strongly suggest looking into Emacs' vlf-mode and the newer vlfi-mode

** That is Very-Large-File-Mode & Very-Large-File-Improved-Mode for issues
you're experiencing & if not, simply because they're very useful &
interesting & fun Emacs Modes to explore & put into your toolbox

https://www.emacswiki.org/emacs/VLF

https://github.com/m00natic/vlfi

* You mentioned other types of GREP, I second that, and the indexing
suggestion--I remember long ago using SGREP which is Simple-GREP, used
indexing & was much faster than the usual grep implementations for some
things; but, this is at the expense of the fancier & more elaborate GREP
functions

** You mention RipGrep--thanks for that, very interesting

* Which brings me to my main suggestion to you & why:

Emacs, believe it or not, has the FASTEST ENGINE available, without
augmentation in any way, for INTERACTIVE SEARCH--since the whole engine is
designed to be optimized to search-while-editing

But for many other searches, more elaborate searches, fancier GREP
searches, it's a VERY BAD choice of ways or programs to use for searching

What I mean is, say you're editing a file, and you search for your
"ProviderBuilderFactory"

Suggest you try opening a huge file--even MULTI-GIGABYTE FILES--huge files
in Emacs VLF-Mode--Very Large File-mode {which I believe can be done as a
sub-mode to/with Org-Mode}

And you can do this fearlessly since vlf-mode works by dividing the files
up for you in the background, etc.--while you're editing--but uses the same
built-in Emacs engine, optimized for such searches

And then you type:

Control-s

And start to type the first letters of "ProviderBuilderFactory"

This will interactive-search HUGE files, very quickly, and in near "Real
Time"--since this is what Emacs (implemented in C) is optimized to do--its
optimized for initial-character-searching "as you type them"--most other
engines are NOT

IF FOR NO OTHER REASON THAN IT SOUNDS LIKE FUN! And you might use vlf-mode
for other tasks you may face in the future.

Please try it out & tell how you like it--you'll never avoid opening huge
files again is one benefit

Beyond that, suggest you look into using LEX, it's as fast as you can get
for some things too.

Everything has its niche in the *nix world--which is where GREP came from,
Bell Labs, etc.--that's the Unix philosophy, Emacs & LEX tools came from
that world & the work of thousands of contributors--suggest you try these
tools too for these issues

Lastly, say you want to search for things without opening a file, you can
still use Emacs in batch-mode, at the command line, without opening a full
emacs session



















On Sat, Nov 21, 2020 at 8:34 PM Jean Louis <bugs@gnu.support> wrote:

> * Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-22 01:48]:
> > > So in general I never need to use some general search through Org
> > > files or any other files as my way of thinking begins with People or
> > > Groups and that narrows what has to be searched.
> >
> > How do you deal with stuff that applies to several people?
>
> From database viewpoint there are
>
> - accounts (which means companies, groups, entities, like "People who
>   wish to get employed in Europe")
>
> - there are contacts, that may belong to account, additionally belong
>   to company (also account), additionally be member of account, so
>   there are 3 groupings for each contact how that contact may be
>   related to account. If it is main account such as "Welders" or if
>   maybe under "Company" is written "welders" (not quite correct) in
>   reality it does not matter.
>
> - then there are lists to which other lists belong. Account A and
>   account B, C, D can belong to list 01. Various accounts can be put
>   together in uniting lists. Those lists are encompassing other lists,
>   not individual people but people in the list (account) usually
>   unless there is only one in the account. Those lists I am using for
>   mailing them or informing them by letter, SMS, etc. Geologists and
>   mining engineers and metallurgists are 3 different accounts but if
>   all of them speak Swahili both in Kenya and Tanzania and are in the
>   related branch of economy so they can be sent same type of
>   information.
>
> Then there are groups, which is just another name for a new list. Then
> there are tags. I can freely tag account, contact or anything else. By
> tags I can finely select specific people belonging to specific group.
>
> There are account types and group types.
>
> Tags by itself have its own description or purpose to name it type.
>
> Some people introduce other people, few of them introduced
> thousands. So contacts have a column "introduced by". That becomes
> very handy when talking to somebody and it also helps in awarding
> introduces. It helps when people place their hyperlinks and become
> automated introducers (lead generation).
>
> When I know that person belongs to some group of people and I have to
> write email and I know it is better to inform everybody, then there is
> action to assign identity from which I am sending email. It could be
> public or internal identity with different email address. Emails to
> that person would always go from designated email address without me
> thinking about it. Then there are Cc and Bcc fields and in those
> fields I could designate: to inform same contact to each of email
> addresses with same message, and to inform group of people each
> time. Thus if writing to one contact all others get informed through
> same message. But I am not thinking about who belongs to the group,
> and what are their email addresses, that gets inserted
> automatically. Email composition is usually inside of Emacs.
>
> Sending files? If contact is in the group and others need to see the
> file, then Cc and Bcc fields work in the same way, file sent to one
> person is sent to other members of the group.
>
> Sometimes contact tells me to please exclude some people from Cc, so I
> just go into definition of identities for contact and exclude such.
>
> SMS I am sending by using kdeconnect.el package so any SMS I send this
> way it is getting recorded to the contact. If I need to send SMS to
> the group, then same SMS could be sent to whole group.
>
> If the note on one contact is related to other people then is trivial
> to automate to inform other people on that particular note.
>
> If any group of people is there, filing files under group does not
> make much sense to me. I would not file it as Group/ABC/file-01.pdf
>
> I would file it under By-ID/Contact-ID-123/Group/file-01.pdf as files
> are normally sent by one email address of one person or under one
> name. I deal with people not with empty groups that do not
> communicate. But group is important, so there can be /Group/ directory
> on the file system where all contacts of one group can be symlinked
> automatically if it happens that I need to search by Group on file
> system, but I don't. I search for groups in the database and see list
> of contacts there and then jump to contact.
>
> Same thing with invoices, they are written either to company or to
> individual or some individual in some company. I will not file or act
> based on invoice. I have to act based on authorirative or maybe
> hierarchically higher object first.
>
> In general is always good to make a list of things and then lists are
> foundation for dealing easier with whatever groups of anything.
>
> > > it comfortable. My way of thinking is always People or Groups, and
> > > from there various searches are performed and that narrows drastically
> > > the subject that has to be searched.
> >
> > That does sound like it should speed up searching by directory.
>
> You remember that I do not search by directory.
>
> Computer stuff I search by directory, like
> Work/Computer/Devices/Dictaphone or Work/Computer/Graphics/shadow
>
> Stuff related to any entity, organization, group of people, mailing
> list or list that encompasses other lists, I am locating in the
> database but the file system location is automatically expanded from
> the unique IDs. So I need not know where is exactly directory for the
> group ABC, but I know if I press F8 that I am right there. Then files
> are sorted for the group or account normally by date, but could be by
> License number or something else. It is mixture of database relational
> jump to base directory for specific account/company/group and
> sub-directories. Base directory I do not need to know, those
> sub-directories are few and search becomes very fast. No special
> database is needed for this as one can keep hundreds of groups and
> people in simple Lisp structures saved in files.
>
> > My mind works differently here: I remember some concept and need to
> > find stuff connected to that, including people, but also additional
> > ideas, instructions, and just bullet points with info I might need
> > again later (which multiple times saved many hours of searching
> > already).
>
> What I learn is that concept of management of information in computer
> better works by the concept of associations or relations as that is
> similar how mind works. I do not see much difference here in thinking
> how things information should be stored.
>
> I have some hobby and there are paper books, images, videos, DVDs,
> digital books related to that hobby. All that is sorted by Authors as
> that is one attribute that those things have. Additionally there are
> subjects. Authors's individuals works are symlinked to various
> multiple subjects as multiple subjects (tags) related to same Author's
> work. If author produces only for one subject then his name is
> symlinked to that subject. Sometimes there are 2 or more authors
> working together, so their directory is also symlinked to individual
> authors.
>
> Similar concept applies to music or videos, it is sorted by authors
> and bands, and then individual works are sorted by its type of music
> or genres of videos.
>
> Images are sorted by people who are on the image. But I do not think
> of that, I just say "Adrian" and image is sorted there in appropriate
> date folder for that person. Computer thinks WHERE is the location,
> not me. All other files are also being sorted like that and it is work
> in progress.
>
> > The one thing that keeps me from that is that I often file under
> > specific projects, and the active projects are shifting
> > constantly. For that I enjoy it a lot that I only need to customize
> > the capture templates to add a project.
>
> In the dynamical knowledge repository backed by PostgreSQL I have
> subtrees and each subtree has its name. I am more familiar with
> structured data in the database. So if I wish to have equivalent of
> capture it becomes trivial, press key, choose set and insert whatever
> note or task or article, anything. It just has little different
> structures.
>
> I do not need to setup extra capture configuration as there are
> already sets or subtree names. I am quickly locating appropriate
> substree name and filing under.
>
> Something I wish to file need not be Org mode, but it can be. A note
> can be written in any text mode and filed in the set or
> subtree. Markdown, Koutliner, it can be Perl snippet, one liner,
> excerpt from email or message mode note, why not. SQL snippet, Emacs
> Lisp or Scheme. Normal text. I feel more free this way.
>
> Hyperdocuments have its types like WWW, Gopher, Gemini, FTP, SFTP,
> Note, Task, Video to be played at exact time, local file, YouTube
> video, Dired directory, Program Launch, PDF, PDF by query, PDF by page
> number, Emacs Lisp, Org Heading, Org file, Message ID, Set, and so
> on.
>
> These days I am thinking to make self-defining types and I mean to
> place the code inside of the hyperdocument type entry that defines how
> that entry should be handled. User accessing database at University
> Makerere could access hyperdocument that designates that not only
> video file has to be opened in the browser, but that window has to be
> split so that annotations related to video file has to be shown in
> same time. But user accessing such hyperdocument need not necessarily
> know that its viewing or launching is customized by the type of the
> hyperdocument defined somewhere else, not in software directly. It
> sounds similar to Javascript launched in web browsers with full
> liberty in computing. Emacs Lisp snippets would be pulled from
> database directly and executed on users' computer. File transfers are
> non existent and file system is not there. Nothing gets really
> downloaded or saved, just loaded into memory and executed.
>
> Just thinking of a hyperdocument type or object type "comment" or
> "feedback". When activating such user loads few functions, write the
> comment, functions can also say what will be done with the
> comment. School teacher or head teacher acts upon it or comments are
> simply published.
>
> Sets for now do not have types, but why not. If set has type of topics
> and topics allow comments there is automatic forum and discussion.
>
> > I for one am still working on my workflow, and I guess that 10 years
> > from now it won’t be the same as today. I hope that learning about other
> > ways to work with org will help me a lot in future.
>
> Same on my side.
>
> Summary for me:
>
> - navigation by hierarchy is one way, we all use it to search and file
>   documents
>
> - searching through indexed database is different way, it is not good
>   for filing anything
>
> - direct relational access where computer locates the file is third
>   way for knowledge management
>
> - it is better designing filing, sorting and retrievals by concepts of
>   mind or how mind works
>
> - any objects or pieces of information shall have its actions that act
>   upon it and that can hyperpush the user to other pieces of
>   information
>
> - general increase of hyperlinking by relations helps in creation of
>   better systems.
>
> Here is how I have implemented simple versioning system that is
> decided by program and not the database. It was just before hour.
>
> (defun hyperscope-vc (table column id &optional description)
>   "Simple version system."
>   (let* ((value (rcd-db-get-entry table column id *hs*)) ;; takes DB value
>          (value (sql-escape-string value)) ;; prepares value for SQL
>          (description (if description (sql-escape-string description)
> "NULL"))
>          (sql (format "INSERT INTO vc (vc_table,
>                                       vc_column,
>                                       vc_tableid,
>                                       vc_value,
>                                       vc_description) VALUES ('%s', '%s',
> %s, %s, %s)
>                          RETURNING vc_id"
>                       table column id value description))
>          (id (rcd-sql sql *hs*)))
>     (if id id nil)))
>
> Above function takes the value from any table, any column, by ID and
> inserts the value into the `vc` table.
>
> Then comes this function below that edits hyperdocument as Org file
> with Org mode. Before updating it is using `hyperscope-vc` version
> function to basically save the old value in the separate table. If I
> want to see diffs I think it is also trivial to do.
>
> (defun hlink-edit-org (id)
>   (let* ((blob (hlink-description-value id))
>          (blob (if blob blob  ""))
>          (buffer-name (format "HyperScope Editing ID: %d" id))
>          (new-blob (read-from-buffer blob buffer-name 'org-mode)))
>     (hyperscope-vc "hlinks" "hlinks_description" id)
>     (rcd-db-update-entry "hlinks" "hlinks_description" "text" id new-blob
> *hs*)))
>
>
>

[-- Attachment #2: Type: text/html, Size: 18217 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21 17:12         ` Jean Louis
  2020-11-21 18:01           ` Texas Cyberthal
@ 2020-11-22  6:36           ` Ihor Radchenko
  2020-11-22  7:20             ` Jean Louis
  1 sibling, 1 reply; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-22  6:36 UTC (permalink / raw)
  To: Jean Louis, Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

> In fact the properties, custom ID and else inside is mostly visually
> disturbing me though it is necessary.

FYI: org-custom-properties and org-toggle-custom-properties-visibility


Jean Louis <bugs@gnu.support> writes:

> * Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-21 18:46]:
>> I guess I avoid the problem you're talking about by mostly excluding
>> bulk prose from the Agenda directory.  They're fundamentally different
>> and should be handled differently.
>
> Well said. 
>
>> One is about human language, the other is about database metadata.
>
> That is so.
>
> In fact the properties, custom ID and else inside is mostly visually
> disturbing me though it is necessary. Before knowing about Org I have
> already had a system of planning, projects, tasks, and all that could
> be related to people, groups and what other else things. This part of
> Org that is dependant on meta data is better managed through
> dedicated databases. 
>
>> The temptation to do everything inline just because Org supports it
>> is one of Org's biggest traps.  It's like the trap of trying to
>> outline strictly when you should be rambling.
>
> Temptation is brought through the usage of Org as there are not so
> many choices beyond it. Org is meant to keep simple things
> simple. Data being managed may easily grow into complex thing.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-22  6:36           ` Ihor Radchenko
@ 2020-11-22  7:20             ` Jean Louis
  2020-11-22  8:32               ` Ihor Radchenko
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-22  7:20 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-22 09:37]:
> > In fact the properties, custom ID and else inside is mostly visually
> > disturbing me though it is necessary.
> 
> FYI: org-custom-properties and
> org-toggle-custom-properties-visibility

***** Full contact information is required
      :PROPERTIES:
      :CREATED:  [2018-10-08 Mon 21:34]
      :ID:       06781e66-0382-4833-a61e-0d76e317593f
      :END:

Thank you. Am I supposed to declare these properties in
org-custom-properties for it not to be visible?



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-22  7:20             ` Jean Louis
@ 2020-11-22  8:32               ` Ihor Radchenko
  2020-11-22  8:56                 ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-22  8:32 UTC (permalink / raw)
  To: Jean Louis; +Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode

> ***** Full contact information is required
>       :PROPERTIES:
>       :CREATED:  [2018-10-08 Mon 21:34]
>       :ID:       06781e66-0382-4833-a61e-0d76e317593f
>       :END:
>
> Thank you. Am I supposed to declare these properties in
> org-custom-properties for it not to be visible?

Yes. I use

(setq org-custom-properties '("ID" "STYLE" "REPEAT_TO_STATE" "CREATED"))

Then, you will need to run M-x org-toggle-custom-properties-visibility
or add it to org-mode-hook.

Your example will then look like 

***** Full contact information is required
      :PROPERTIES:
      :END:

Beware of using this on large org files. The command creates a huge
number of overlays (one overlay per property line), which may slow down
Emacs.

Hiding the emptied property drawer is currently not possible, unless you
use my WIP patch [1]. The branch also mitigates the issue with large org
files. However, this particular functionality was opposed by other devs
earlier. Further discussion will follow once more important parts of the
patch are resolved.

If you use the patch, you can also set
org-custom-properties-hide-emptied-drawers to 't. Then, your example
should look like

***** Full contact information is required

[1] https://orgmode.org/list/87lfh5vvrp.fsf@localhost/

Best,
Ihor

Jean Louis <bugs@gnu.support> writes:

> * Ihor Radchenko <yantar92@gmail.com> [2020-11-22 09:37]:
>> > In fact the properties, custom ID and else inside is mostly visually
>> > disturbing me though it is necessary.
>> 
>> FYI: org-custom-properties and
>> org-toggle-custom-properties-visibility
>
> ***** Full contact information is required
>       :PROPERTIES:
>       :CREATED:  [2018-10-08 Mon 21:34]
>       :ID:       06781e66-0382-4833-a61e-0d76e317593f
>       :END:
>
> Thank you. Am I supposed to declare these properties in
> org-custom-properties for it not to be visible?


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-22  8:32               ` Ihor Radchenko
@ 2020-11-22  8:56                 ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-22  8:56 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-22 11:33]:
> > ***** Full contact information is required
> >       :PROPERTIES:
> >       :CREATED:  [2018-10-08 Mon 21:34]
> >       :ID:       06781e66-0382-4833-a61e-0d76e317593f
> >       :END:
> >
> > Thank you. Am I supposed to declare these properties in
> > org-custom-properties for it not to be visible?
> 
> Yes. I use
> 
> (setq org-custom-properties '("ID" "STYLE" "REPEAT_TO_STATE"
> "CREATED"))

I've tried then :PROPERTIES and :END: still remain. It is possible
even not to show PROPERTIES but :END remains.

> Then, you will need to run M-x org-toggle-custom-properties-visibility
> or add it to org-mode-hook.

Thank you, I will rather give up on that. It is not designed for it.

> Hiding the emptied property drawer is currently not possible, unless you
> use my WIP patch [1]. The branch also mitigates the issue with large org
> files. However, this particular functionality was opposed by other devs
> earlier. Further discussion will follow once more important parts of the
> patch are resolved.
> 
> If you use the patch, you can also set
> org-custom-properties-hide-emptied-drawers to 't. Then, your example
> should look like
> 
> ***** Full contact information is required

Thank you, I will choose to give up on that as it has not get much
priority and maybe I stop creating unique IDs.

I will explore how to re-file tasks into the SQL database.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-22  2:47             ` briangpowell
@ 2020-11-22 17:55               ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-22 17:55 UTC (permalink / raw)
  To: briangpowell
  Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode,
	Ihor Radchenko

* briangpowell <briangpowellms@gmail.com> [2020-11-22 05:48]:
> Emacs, believe it or not, has the FASTEST ENGINE available, without
> augmentation in any way, for INTERACTIVE SEARCH--since the whole engine is
> designed to be optimized to search-while-editing

Interesting, I did not know about that.

> But for many other searches, more elaborate searches, fancier GREP
> searches, it's a VERY BAD choice of ways or programs to use for
> searching

Do you mean to run grep on file or buffer while editing?

Or outside of editor?

> What I mean is, say you're editing a file, and you search for your
> "ProviderBuilderFactory"
> 
> Suggest you try opening a huge file--even MULTI-GIGABYTE FILES--huge files
> in Emacs VLF-Mode--Very Large File-mode {which I believe can be done as a
> sub-mode to/with Org-Mode}
> 
> And you can do this fearlessly since vlf-mode works by dividing the files
> up for you in the background, etc.--while you're editing--but uses the same
> built-in Emacs engine, optimized for such searches
> 
> And then you type:
> 
> Control-s
> 
> And start to type the first letters of "ProviderBuilderFactory"
> 
> This will interactive-search HUGE files, very quickly, and in near "Real
> Time"--since this is what Emacs (implemented in C) is optimized to do--its
> optimized for initial-character-searching "as you type them"--most other
> engines are NOT

Does occur also uses that built-in speedy search? Would it work with
your library? Now I am researching it and I see vlf-occur

I have tried using vlf-occur in this email and what happened seems to
be error:

- M-x vlf-occur
- Tried with word "has"
- found many "has" in vlf-occur
- I press RET on the line there
- I get asked "Chunk modified, are you sure?" I say yes.
- my email buffer is erased at that moment and cursor switches to erased buffer
- then to undo stuff I press undo

So that is bug. User should never get buffer erased.

> IF FOR NO OTHER REASON THAN IT SOUNDS LIKE FUN! And you might use
> vlf-mode for other tasks you may face in the future.

I am interested to research the possibility of expanding large number
of database items into the file which would then be hyperlinked. Would
some mode like Org mode work with it? I would use Hyperbole or Org
links or goto-address-mode

The file would be one liner expansion of database entries.

By using quick vlf-occur (at this moment I just imagine it is quick,
but do not have a feeling) I would quickly locate some entries.

I would then click or activate the button to move to specific other
database entries or outside hyperlinks.

> Lastly, say you want to search for things without opening a file, you can
> still use Emacs in batch-mode, at the command line, without opening a full
> emacs session

Provide the one line to understand it.

Side thought: I remember I was making website search engines back in
time with grep only. Each HTML file was converted to one line of text,
something like:

LOCATION:::TITLE:::KEYWORDS:::DESCRIPTION:::HERE COMES LONG LINE OF BODY

Then grep was used to quickly find results which are formatted on the
website page. And yet we can just find complex software for website
searching on Internet these days.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-21  7:17   ` Texas Cyberthal
  2020-11-21  9:53     ` Jean Louis
@ 2020-11-23  5:40     ` Ihor Radchenko
  2020-11-24  9:00       ` Jean Louis
  1 sibling, 1 reply; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-23  5:40 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: emacs-orgmode

>> I am wondering what you mean by Org's philosophy. Why would it have anything to do with directories?
>
> Org's philosophy is to have one or a handful of directories without
> nesting of directories.  Users are not expected to have their Org
> files in a deeply nested tree.  Org also prefers big files with large
> trees rather than lots of little files.
>
> By philosophy, I mean the dev consensus on the correct way to do
> things, and coded configuration and usability biases.

I believe that org support all possibilities. The user can decide to
keep many (possibly nested) org files, a few large org files, or
anywhere in between. There are several parallel feature sets allowing to
work in a single file as well as with a bunch of smaller files.

For a single file, the user can search headings with org-goto (without a
need to explicitly travel through all the nesting headline levels),
reveal only headings satisfying certain keyword/tag/any other search
criteria with org-sparse-tree, or built agenda views restricted to a
single file (or even subtree).

For multiple files located anywhere in the filesystem, there is always
org-refile capable of filing the information to proper place or
searching deeply nested headlines with ease regardless of the file the
information is physically located in. Headlines from multiple files can
be grouped using agenda views for any given search criteria (showing
todo items or items for a single day/week is just a tiny subset of what
agenda can do).

Best,
Ihor

Texas Cyberthal <texas.cyberthal@gmail.com> writes:

> ***** Hi Ihor Radchenko,
>
>> I am wondering what you mean by Org's philosophy. Why would it have anything to do with directories?
>
> Org's philosophy is to have one or a handful of directories without
> nesting of directories.  Users are not expected to have their Org
> files in a deeply nested tree.  Org also prefers big files with large
> trees rather than lots of little files.
>
> By philosophy, I mean the dev consensus on the correct way to do
> things, and coded configuration and usability biases.
>
> I know this is Org's philosophy because I violated it thoroughly when
> writing Treefactor documentation, and was told as much.  I can see how
> it wouldn't be obvious to casual users.
>
> Good idea, I'll comment on Voit's article, thanks.
>
> ***** Hi Palak Mathur,
>
>> it seems overwhelming to have 10 directories. I am not saying it is not good just that I will not be able to handle those.
>
> I didn't anticipate this problem.  Maybe practicing with Treefactor
> and Dired would build this muscle over time.
>
> The rules are written to be straightforward at filing time.  One need
> only consider one object at a time.  Cascade filing means one need
> only compare the object with one directory at a time.  The first match
> wins.  I should emphasize that in the docs.
>
> Having all your headings jumbled into three huge files sounds like a
> state of permanent intractable overwhelm to me.
>
> ***** Hi Jean Louis,
>
> You are using Hyperscope as your primary PIM but integrating it with
> Org, and it sounds like you're using PostGreSQL and the directory tree
> together somehow.  I don't fully understand it.
>
> Clearly a database can do more than a directory tree alone.  The cost
> is that a database is more complex to use and maintain.  So that which
> can be handled by directory tree alone, should be.
>
>> I can find a mining engineer in country Senegal if I wish so, that has some work experience and I can see files pertaining to this person. But not that I would make file system directory Senegal to find the files for this person
>
> Of course not.  You would find a person under his name, not his
> country.  The person can move to a different country, after all.  At
> most you might link him to the country, as part of a list of people
> from X country.  But that is something better handled by a real
> database.
>
> To clarify, Treefactor is just an Emacs package with some minimal
> opinions.  10 Bins is an opinionated directory tree template.  Neither
> requires the other, but they're both part of Cyborganize, my overall
> PIM and publishing system.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
       [not found]             ` <87r1olfvh4.fsf@web.de>
@ 2020-11-23  9:50               ` Texas Cyberthal
  2020-11-23 13:17                 ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-23  9:50 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide; +Cc: emacs-orgmode

Hi Dr. Arne,

> The only part that hits performance limits is the agenda.

Well, IIRC your Org Textmind is much smaller than mine.

> My current guess is that the agenta is slow because it has to parse all my 7500 clock entries, and it has to check the Todo states of around 1200 headings.

Ouch.  I'd rather keep a "ramble log" so I can reconstruct an exactly
honest time accounting, with discounts for partial attention, without
worrying about fiddly clockin/outs.  At least when working from home.
If clocking into a work site, that's different, because one can
reasonably bill for the entire time, with minimal clock toggling.

> Did you check against filesystem limits? At 10k entries in a directory typical filesystems start becoming slow. That’s the main reason I see for adding hierarchies.

10k entries in a directory sounds inhumanely unergonomic.  I guess my
biggest flat name directory might eventually reach that size?  In
which case I could just split it in the middle of the alphabet, or
similar solution.

Right now it's only 600.  If I guess a generous growth rate of 2 per
day, times 30 years, that would be an additional 22k.  Sounds
manageable.

Remember there are ways to consolidate entries even in flat "solid
names" directory.  It's advantageous to do so to facilitate isearch
matching.  For example, everyone with the same last name is one
directory.  Ditto everything that starts with the same word or even
prefix.  For example I have a directory called ~Wiki-~ and another
called ~Tru-~ which contains truth, Trudeau and Trump.

Most adults know 20-35k words.  That's not the same as "solid names"
known, but gives a ballpark on human memory size for a similar name
type.  I suspect computers will advance faster than anyone's Textmind
reaches the Dired lag limit.

No, if we are talking about scaling limits, then limits such as buffer
size and Agenda search speed are orders of magnitude more relevant.
Which problems deep tree nesting fixes.

A 10k entry directory is getting into enterprise territory, and I'm
sure enterprise has tech tricks that become worthwhile at that scale.

> There are scaling problems in every direction: Too many files per directory, too large files, too much content per heading, too many headings.

There are scaling problems from too much deep tree nesting, namely too
much fiddly ambiguous manual refiling.  Solution is flat "solid name"
directories just below feasible 10 Bins.  Work fine.

> I would have to build lots of additional tooling to make that work as well. Many of the tools in Emacs work better on large files than on many files — I will switch to more files when performance on large files reaches its limits.

Nah, my 100 mb (non archived) Textmind works fine.  I just separated
Agenda metadata from bulk prose.

I am curious how many headings I have, how would I count that recursively?

On Sun, Nov 22, 2020 at 8:04 PM Dr. Arne Babenhauserheide
<arne_bab@web.de> wrote:
>
>
> Texas Cyberthal <texas.cyberthal@gmail.com> writes:
>
> >> I need instant search in the knowledge database and quick filing of tasks. Also I need the agenda to create a clocktable (that’s on the limit of being too slow) and the calendar and tasks of the week.
> >
> >> Also I need quick filing of notes and quotes (in specific files, not part of the agenda) and of long-form articles, one file per article (using journal.el, also outside the agenda, searched using M-x deft), and quick creation of website entries for a given category within the site (i.e. M-x draketo-software).
> >
> > So your Org usage style quickly hits critical performance problems at scale.
>
> The only part that hits performance limits is the agenda. All the rest
> scales nicely. My current guess is that the agenta is slow because it
> has to parse all my 7500 clock entries, and it has to check the TODO
> states of around 1200 headings. Having multiple files would only add to
> that.
>
> > I don't have these problems.  Treefactor refiling is immune to scale.
>
> Did you check against filesystem limits? At 10k entries in a directory
> typical filesystems start becoming slow. That’s the main reason I see
> for adding hierarchies.
>
> > Org's many tools and tricks are still handy in niche cases, but they
> > don't cause scaling problems because they don't handle bulk info
> > management.  For example Org's refile tools are useful when writing
> > advanced documentation with large single-file outlines.  Most info
> > doesn't require that much organization.  It works fine as flat lists
> > of headings in a detailed directory tree.
>
> Or as sub-headings in a large outline.
>
> There are scaling problems in every direction: Too many files per
> directory, too large files, too much content per heading, too many
> headings.
>
> I would have to build lots of additional tooling to make that work as
> well. Many of the tools in Emacs work better on large files than on many
> files — I will switch to more files when performance on large files
> reaches its limits.
>
> I have one file where I’m reaching the limit. That’ my 7.3 MiB
> emacs-remember-mode.org file where I throw long-form articles for
> full-text search. I am considering to switch to a multi-file approach
> for that and then to use deft to retrieve articles.
>
> Best wishes,
> Arne
> --
> Unpolitisch sein
> heißt politisch sein
> ohne es zu merken


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-23  9:50               ` Texas Cyberthal
@ 2020-11-23 13:17                 ` Jean Louis
  2020-11-23 14:16                   ` Ihor Radchenko
  2020-11-23 16:07                   ` One vs many directories Texas Cyberthal
  0 siblings, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-23 13:17 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-23 12:51]:
> Hi Dr. Arne,
> 
> > The only part that hits performance limits is the agenda.
> 
> Well, IIRC your Org Textmind is much smaller than mine.
> 
> > My current guess is that the agenta is slow because it has to parse all my 7500 clock entries, and it has to check the Todo states of around 1200 headings.
> 
> Ouch.  I'd rather keep a "ramble log" so I can reconstruct an exactly
> honest time accounting, with discounts for partial attention, without
> worrying about fiddly clockin/outs.  At least when working from home.
> If clocking into a work site, that's different, because one can
> reasonably bill for the entire time, with minimal clock toggling.
> 

> > Did you check against filesystem limits? At 10k entries in a
> directory typical filesystems start becoming slow. That's the main
> reason I see for adding hierarchies.

From ext4 manual:

 dir_index
  Use hashed  b-trees to speed  up name lookups  in large
  directories.   This feature  is supported  by ext3  and
  ext4 file systems, and is ignored by ext2 file systems.

 dir_nlink
  This ext4 feature allows more than 65000 subdirectories
  per directory.

I think that file systems should be unlimited and fast in relation to
that. I have ~/Maildir with over 50000 subdirectories, direct access
is very easy and fast while listing takes some time.

If file system does not allow fast access it is time to replace it
with one that does allow it.

Now I wonder of HAMMER in DragonflyBSD is also slow with 50000
directories.

My PostgreSQL database is not huge, it is when packed about 50 MB. On
the file system it is 810 MB.

To select 2469 contacts as subset of 204048 contacts that belong in
certain group does not give (usually) feeling of any delay, it looks
instant for human.

My Org work is on meta-level so my truly important headings or subtree
names are in the database. Subtrees have their various properties,
like I can place any tags there inside, like TODO or designate type of
TODO. My work is intertwined with text and Org mode mostly, but I
could use any kind of mime type or any kind of Emacs mode. Some nodes
are on file system while some are in the database.

Nodes within subtree are hyperdocuments, they are all linkable and
could be on file system or not on file system.

Everything is together in one tree and it does not matter as access to
the nodes does not go over the tree necessary. There are 19197 nodes.
To find 76 that are tagged with TODO does not give me any slight or
visible delay, definitely not even 0.2 seconds. When I press enter it
is right there.

From the system I am using personally I am thinking that Org mode
could get its database connection so that headings and properties are
managed in the database fully while text could be managed in files. It
seems very possible.

The only thing that would be needed to add to Org in that case is some
heading tag that would uniquely designate where in the database that
heading is managed. It could be very lightly displayed on the screen
and would not be exported by default.

Something like

*** TODO Heading                                     :ID-123:

That would be all. All other meta data belonging to the heading could
be managed in the database. If heading is deleted it need not be
deleted in the database. Text belonging to heading could be managed in
the text file. Properties in the database. It can be simple database
such as GDBM if such is fast enough.

Meta data for the heading would or could be updated automatically from
time to time.

User could easily decide to show the properties in the Org file or not
to show. It does not matter much as long as :ID-123: tag is there.

All things like tags, properties, clock-in and out, schedule,
deadlines, custom_id and everything else as heading meta data could be
manageable in the database. It could be copied into new headings.
Creation of heading like this:

*** TitleRET

would automatically invoke creation of heading 124 in the database and it would appear as:

*** Title                                          :ID-124;

From there on user would be doing anything as usual in the Org mode
with the difference that properties would be displayed in the updated
manner and would not be really in the Org file. They would be
displayed on the fly. Any properties and plethora of other new
properties could be included.

System would recognize automatically by saving the Org file or by
opening it:

- If headings are in the right file, if file changed its place it
would be automatically updated in the database. 

- the heading ID would always remain unique no matter what, so users
linking to any heading would not need to worry of title remaining. The
unique ID that links to heading would basically link to the database
entry. Opening the link would ask database where the entry is located
and it would open up proper Org file at proper location without
parsing the Org file in usual manner. Org file would then remain
pretty much more text than it is now.

- all the parsing and searching and indexing would be automatically
solved and human readable SQL queries could be easily customized by
user. Suddenly there would be much less commotion in work. Org files
would look much more humane readable then they are now.

> 10k entries in a directory sounds inhumanely unergonomic.  I guess my
> biggest flat name directory might eventually reach that size?  In
> which case I could just split it in the middle of the alphabet, or
> similar solution.

Like by first letters, like

~/Maildir/a/d/a/adam@example.com

Such sorting of files would be automatic. You would need to invoke a
command that sorts files that way automatically and that may also
quickly access such files automatically.

I have comand that I often use, mkdatedir that makes me directory for
the current date.

If I wish to make a database note for the day, the command today-note would make sure there is:

- Year 2020 (formatted how I customize it)
  - November (also formatted by custom)
    - 2020-11-23
      And entry is automatically opened for the note.

The system helps that I locate quickly the note that relates to the
day. But I can put multiple notes under same date and I can also have
same titles for those multiple notes. This is because each note has
its unique ID.

I do not know how Org handles multiple same headings when linking to
it. It does not by default:

[[Heading][Heading]]

* Heading

  Text here
  
* Heading


  More text here. But if I wish to link here I need to do hac

To me and my thinkin that is not really logical. There shall be always
unique ID for each heading. My mind is not comforted by Org system in
that sense. And I should not be thinking of the unique ID neither I
should be writing those links like [[Something][Here]] as they should
be constructed automatically.

Myself I would like to come with cursor to second Heading and capture
the link to the heading. I would kill [[Heading][Heading]] into
special memory for those links. Then I could go to any other place in
the Org file and insert it there without thinking how link looks like
or constructing the link myself as it already exists in front of me.

Constructing links by hand is fine for those which are external.

Headings of Org files could be managed by the database in background.
Then all that distributed or sparse meta information (mess) disappears. 

What people are now trying to handle with Org files is management of a
database. Only that entries of the database are pretty much
disconnected from each other, vague, in unknown positions, then Org
algorhitms try to manage that all everything what is anyway built-in
in all SQL databases. Mess is growing over time.

> A 10k entry directory is getting into enterprise territory, and I'm
> sure enterprise has tech tricks that become worthwhile at that scale.

I will try with those options dir_index and dir_nlink to see if my
50000+ directory becomes somewhat faster. Direct access to the
subdirectory is always very fast. I almost never do ls there neither
enter any such directory manually. They store emails, so I just click
one key in mutt, that key extracts the current email address such as
person@example.com and opens up ~/Maildir/person@example.com, one
among 50000. It is accessed by wanting to see previous conversation
with the contact, not by knowing what is the directory name or email
address, computer does that. It is simple system I use for years and
it is blazing fast.

> There are scaling problems in every direction: Too many files per >
> directory, too large files, too much content per heading, too many >
> headings.

To list more than 200,000 contacts does take some time but access to
the list from database is so much faster than ls in the ~/Maildir with
more than 50000 entries or subdirectories. I can relate to that. And I
still think that file systems should manage any numbers of entries.

> There are scaling problems from too much deep tree nesting, namely too
> much fiddly ambiguous manual refiling.  Solution is flat "solid name"
> directories just below feasible 10 Bins.  Work fine.

I have tried your solution and could not find the mental concept to
relate to my thinking. And I do agree that such solution could help
other people.

For images I have some command like `sort-images.lisp' that just sorts
images by its embedded dates. Many times I sort even downloads per day.

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-23 12:51]:
> Hi Dr. Arne,
> 
> > The only part that hits performance limits is the agenda.
> 
> Well, IIRC your Org Textmind is much smaller than mine.
> 
> > My current guess is that the agenta is slow because it has to parse all my 7500 clock entries, and it has to check the Todo states of around 1200 headings.
> 
> Ouch.  I'd rather keep a "ramble log" so I can reconstruct an exactly
> honest time accounting, with discounts for partial attention, without
> worrying about fiddly clockin/outs.  At least when working from home.
> If clocking into a work site, that's different, because one can
> reasonably bill for the entire time, with minimal clock toggling.
> 

> > Did you check against filesystem limits? At 10k entries in a
> directory typical filesystems start becoming slow. That's the main
> reason I see for adding hierarchies.

From ext4 manual:

 dir_index
  Use hashed  b-trees to speed  up name lookups  in large
  directories.   This feature  is supported  by ext3  and
  ext4 file systems, and is ignored by ext2 file systems.

 dir_nlink
  This ext4 feature allows more than 65000 subdirectories
  per directory.

I think that file systems should be unlimited and fast in relation to
that. I have ~/Maildir with over 50000 subdirectories, direct access
is very easy and fast while listing takes some time.

If file system does not allow fast access it is time to replace it
with one that does allow it.

Now I wonder of HAMMER in DragonflyBSD is also slow with 50000
directories.

My PostgreSQL database is not huge, it is when packed about 50 MB. On
the file system it is 810 MB.

To select 2469 contacts as subset of 204048 contacts that belong in
certain group does not give (usually) feeling of any delay, it looks
instant for human.

My Org work is on meta-level so my truly important headings or subtree
names are in the database. Subtrees have their various properties,
like I can place any tags there inside, like TODO or designate type of
TODO. My work is intertwined with text and Org mode mostly, but I
could use any kind of mime type or any kind of Emacs mode. Some nodes
are on file system while some are in the database.

Nodes within subtree are hyperdocuments, they are all linkable and
could be on file system or not on file system.

Everything is together in one tree and it does not matter as access to
the nodes does not go over the tree necessary. There are 19197 nodes.
To find 76 that are tagged with TODO does not give me any slight or
visible delay, definitely not even 0.2 seconds. When I press enter it
is right there.

From the system I am using personally I am thinking that Org mode
could get its database connection so that headings and properties are
managed in the database fully while text could be managed in files. It
seems very possible.

The only thing that would be needed to add to Org in that case is some
heading tag that would uniquely designate where in the database that
heading is managed. It could be very lightly displayed on the screen
and would not be exported by default.

Something like

*** TODO Heading                                     :ID-123:

That would be all. All other meta data belonging to the heading could
be managed in the database. If heading is deleted it need not be
deleted in the database. Text belonging to heading could be managed in
the text file. Properties in the database. It can be simple database
such as GDBM if such is fast enough.

Meta data for the heading would or could be updated automatically from
time to time.

User could easily decide to show the properties in the Org file or not
to show. It does not matter much as long as :ID-123: tag is there.

All things like tags, properties, clock-in and out, schedule,
deadlines, custom_id and everything else as heading meta data could be
manageable in the database. It could be copied into new headings.
Creation of heading like this:

*** TitleRET

would automatically invoke creation of heading 124 in the database and it would appear as:

*** Title                                          :ID-124;

From there on user would be doing anything as usual in the Org mode
with the difference that properties would be displayed in the updated
manner and would not be really in the Org file. They would be
displayed on the fly. Any properties and plethora of other new
properties could be included.

System would recognize automatically by saving the Org file or by
opening it:

- If headings are in the right file, if file changed its place it
would be automatically updated in the database. 

- the heading ID would always remain unique no matter what, so users
linking to any heading would not need to worry of title remaining. The
unique ID that links to heading would basically link to the database
entry. Opening the link would ask database where the entry is located
and it would open up proper Org file at proper location without
parsing the Org file in usual manner. Org file would then remain
pretty much more text than it is now.

- all the parsing and searching and indexing would be automatically
solved and human readable SQL queries could be easily customized by
user. Suddenly there would be much less commotion in work. Org files
would look much more humane readable then they are now.

> 10k entries in a directory sounds inhumanely unergonomic.  I guess my
> biggest flat name directory might eventually reach that size?  In
> which case I could just split it in the middle of the alphabet, or
> similar solution.

Like by first letters, like

~/Maildir/a/d/a/adam@example.com

Such sorting of files would be automatic. You would need to invoke a
command that sorts files that way automatically and that may also
quickly access such files automatically.

I have comand that I often use, mkdatedir that makes me directory for
the current date.

If I wish to make a database note for the day, the command today-note would make sure there is:

- Year 2020 (formatted how I customize it)
  - November (also formatted by custom)
    - 2020-11-23
      And entry is automatically opened for the note.

The system helps that I locate quickly the note that relates to the
day. But I can put multiple notes under same date and I can also have
same titles for those multiple notes. This is because each note has
its unique ID.

I do not know how Org handles multiple same headings when linking to
it. It does not by default:

[[Heading][Heading]]

* Heading

  Text here
  
* Heading


  More text here. But if I wish to link here I need to do hack.

To me and my thinking that is not really logical. There shall be always
unique ID for each heading. My mind is not comforted by Org system in
that sense. And I should not be thinking of the unique ID neither I
should be writing those links like [[Something][Here]] as they should
be constructed automatically.

Myself I would like to come with cursor to second Heading and capture
the link to the heading. I would kill [[Heading][Heading]] into
special memory for those links. Then I could go to any other place in
the Org file and insert it there without thinking how link looks like
or constructing the link myself as it already exists in front of me.

Constructing links by hand is fine for those which are external.

Headings of Org files could be managed by the database in background.
Then all that distributed or sparse meta information (mess) disappears. 

What people are now trying to handle with Org files is management of a
database. Only that entries of the database are pretty much
disconnected from each other, vague, in unknown positions, then Org
algorhitms try to manage that all everything what is anyway built-in
in all SQL databases. Mess is growing over time.

> A 10k entry directory is getting into enterprise territory, and I'm
> sure enterprise has tech tricks that become worthwhile at that scale.

I will try with those options dir_index and dir_nlink to see if my
50000+ directory becomes somewhat faster. Direct access to the
subdirectory is always very fast. I almost never do ls there neither
enter any such directory manually. They store emails, so I just click
one key in mutt, that key extracts the current email address such as
person@example.com and opens up ~/Maildir/person@example.com, one
among 50000. It is accessed by wanting to see previous conversation
with the contact, not by knowing what is the directory name or email
address, computer does that. It is simple system I use for years and
it is blazing fast.

> There are scaling problems in every direction: Too many files per >
> directory, too large files, too much content per heading, too many >
> headings.

To list more than 200,000 contacts does take some time but access to
the list from database is so much faster than ls in the ~/Maildir with
more than 50000 entries or subdirectories. I can relate to that. And I
still think that file systems should manage any numbers of entries.

> There are scaling problems from too much deep tree nesting, namely too
> much fiddly ambiguous manual refiling.  Solution is flat "solid name"
> directories just below feasible 10 Bins.  Work fine.

I have tried your solution and could not find the mental concept to
relate to my thinking. And I do agree that such solution could help
other people.

For images I have some command like `sort-images.lisp' that just sorts
images by its embedded dates. Many times I sort even downloads per day.

Memacs tries to solve about same problem.

Memacs
https://github.com/novoid/Memacs

That hyperlink I have selected among other 20000 hyperlinks. I could
as well send the notes to you or annotation related to the
hyperlink. I have not written the hyperlink myself, all I did is that
I have opened HyperScope, invoked completion and on the link on screen
I pressed W, it copied itself to this email. It was blazing fast as I
have accessed it by thinking Memex. Not Memacs, but Memex. Memacs was
just next to it. By thinking would still mean that I had to enter some
words that I think of. Memory is involved in that process of thinking
and accessing.

You mentioned humans know many words. If we observe the process of
knowing words, how do we access them? This time really by
thinking. But we access them how I heard of it, mostly by association
or by direct access. We see the flower and word is just there.

Do we think of a tree of knowledge first? I do not think so. And there
are memory systems that DO think of plethora of various things and
increase human memory capabilities. That is called
mnemonics. Mnemonics is based mostly on associations. It becomes
possible to remember pack of mixed 52 cards within 20 minutes and to
reliably know at which position is which card located and to replicate
the full series of cards. Mnemonics methods help human to do such
feats. Everybody can do it.

Compare now the human mind system:

- of direct access by direct association, something like I think of
  Memex but I know there is something similar in Emacs, I write Memex
  and I get Memacs, then I give reference to you.

- and there is also the system of thinking that I can locate in my
  mind a reference to Memacs even by its number or ID because that
  could be my mnemonics how I think about

How human think -- is nowhere defined and is vague. Human thinks how
they think and there may be as many versions as humans.

Computers should not be delivered any more with one built-in paradigm
only such as file system. There shall be at least several:

- file system

- meta databased approach, that involves little but more curation than
  just making a file name.

- subject or tag based approach

- Dewey decimal approach or other similar

- 10 Bins, etc.

Then user could decide to use this or that approach. Having file
managers for decades is really boring. It does not advance computing.
To say that we have hierarchical file systems by default and nothing
else shows how much we are under-developed. 

Doug Engelbart has already envisioned how files could be stored,
accessed, hyperlinked, referenced and we do not use it in that sense
today after how many years? Maybe 40 years. Computer makers and OS
makers do not really help us, there are visionaries but we do not get
file systems that helps us to access files by association or thinking
so we have to upgrade our tools for those tasks that should be built
in.

Org as a concept was already invented by Doug Engelbart before decades
and it still does not have features that I would like it to have. For
example finely grained unique ID numbers that can also relate to
paragraphs or set of paragraphs, unique or static sorting of files
repository, wide group collaboration and sharing and other concepts.
Hyperlinking already back than was sophisticated.

Highlights of the 1968 "Mother of All Demos"
https://www.dougengelbart.org/content/view/276/000/



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-23 13:17                 ` Jean Louis
@ 2020-11-23 14:16                   ` Ihor Radchenko
  2020-11-23 18:08                     ` Is Org really so simple? Jean Louis
  2020-11-23 16:07                   ` One vs many directories Texas Cyberthal
  1 sibling, 1 reply; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-23 14:16 UTC (permalink / raw)
  To: Jean Louis, Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

Dear Jean Louis,

Your description of the database reminds me how org-roam handles the
files - it also uses an external database for linking and allows quick
incremental search that does not really depend on where the
files/headings are stored.

However, what you are talking about is against org-mode philosophy, as I
know it. Currently, the dev's stance is that org files must be
self-sufficient. Org-mode should not depend on external database to
manage the org files and operations with them. Everything must be plain
text! Moreover, some devs are even reluctant to hide metadata (like
unique ID implemented in org-id module) from users (which is possible
and also partially implemented).

Best,
Ihor


Jean Louis <bugs@gnu.support> writes:

> * Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-23 12:51]:
>> Hi Dr. Arne,
>> 
>> > The only part that hits performance limits is the agenda.
>> 
>> Well, IIRC your Org Textmind is much smaller than mine.
>> 
>> > My current guess is that the agenta is slow because it has to parse all my 7500 clock entries, and it has to check the Todo states of around 1200 headings.
>> 
>> Ouch.  I'd rather keep a "ramble log" so I can reconstruct an exactly
>> honest time accounting, with discounts for partial attention, without
>> worrying about fiddly clockin/outs.  At least when working from home.
>> If clocking into a work site, that's different, because one can
>> reasonably bill for the entire time, with minimal clock toggling.
>> 
>
>> > Did you check against filesystem limits? At 10k entries in a
>> directory typical filesystems start becoming slow. That's the main
>> reason I see for adding hierarchies.
>
> From ext4 manual:
>
>  dir_index
>   Use hashed  b-trees to speed  up name lookups  in large
>   directories.   This feature  is supported  by ext3  and
>   ext4 file systems, and is ignored by ext2 file systems.
>
>  dir_nlink
>   This ext4 feature allows more than 65000 subdirectories
>   per directory.
>
> I think that file systems should be unlimited and fast in relation to
> that. I have ~/Maildir with over 50000 subdirectories, direct access
> is very easy and fast while listing takes some time.
>
> If file system does not allow fast access it is time to replace it
> with one that does allow it.
>
> Now I wonder of HAMMER in DragonflyBSD is also slow with 50000
> directories.
>
> My PostgreSQL database is not huge, it is when packed about 50 MB. On
> the file system it is 810 MB.
>
> To select 2469 contacts as subset of 204048 contacts that belong in
> certain group does not give (usually) feeling of any delay, it looks
> instant for human.
>
> My Org work is on meta-level so my truly important headings or subtree
> names are in the database. Subtrees have their various properties,
> like I can place any tags there inside, like TODO or designate type of
> TODO. My work is intertwined with text and Org mode mostly, but I
> could use any kind of mime type or any kind of Emacs mode. Some nodes
> are on file system while some are in the database.
>
> Nodes within subtree are hyperdocuments, they are all linkable and
> could be on file system or not on file system.
>
> Everything is together in one tree and it does not matter as access to
> the nodes does not go over the tree necessary. There are 19197 nodes.
> To find 76 that are tagged with TODO does not give me any slight or
> visible delay, definitely not even 0.2 seconds. When I press enter it
> is right there.
>
> From the system I am using personally I am thinking that Org mode
> could get its database connection so that headings and properties are
> managed in the database fully while text could be managed in files. It
> seems very possible.
>
> The only thing that would be needed to add to Org in that case is some
> heading tag that would uniquely designate where in the database that
> heading is managed. It could be very lightly displayed on the screen
> and would not be exported by default.
>
> Something like
>
> *** TODO Heading                                     :ID-123:
>
> That would be all. All other meta data belonging to the heading could
> be managed in the database. If heading is deleted it need not be
> deleted in the database. Text belonging to heading could be managed in
> the text file. Properties in the database. It can be simple database
> such as GDBM if such is fast enough.
>
> Meta data for the heading would or could be updated automatically from
> time to time.
>
> User could easily decide to show the properties in the Org file or not
> to show. It does not matter much as long as :ID-123: tag is there.
>
> All things like tags, properties, clock-in and out, schedule,
> deadlines, custom_id and everything else as heading meta data could be
> manageable in the database. It could be copied into new headings.
> Creation of heading like this:
>
> *** TitleRET
>
> would automatically invoke creation of heading 124 in the database and it would appear as:
>
> *** Title                                          :ID-124;
>
> From there on user would be doing anything as usual in the Org mode
> with the difference that properties would be displayed in the updated
> manner and would not be really in the Org file. They would be
> displayed on the fly. Any properties and plethora of other new
> properties could be included.
>
> System would recognize automatically by saving the Org file or by
> opening it:
>
> - If headings are in the right file, if file changed its place it
> would be automatically updated in the database. 
>
> - the heading ID would always remain unique no matter what, so users
> linking to any heading would not need to worry of title remaining. The
> unique ID that links to heading would basically link to the database
> entry. Opening the link would ask database where the entry is located
> and it would open up proper Org file at proper location without
> parsing the Org file in usual manner. Org file would then remain
> pretty much more text than it is now.
>
> - all the parsing and searching and indexing would be automatically
> solved and human readable SQL queries could be easily customized by
> user. Suddenly there would be much less commotion in work. Org files
> would look much more humane readable then they are now.
>
>> 10k entries in a directory sounds inhumanely unergonomic.  I guess my
>> biggest flat name directory might eventually reach that size?  In
>> which case I could just split it in the middle of the alphabet, or
>> similar solution.
>
> Like by first letters, like
>
> ~/Maildir/a/d/a/adam@example.com
>
> Such sorting of files would be automatic. You would need to invoke a
> command that sorts files that way automatically and that may also
> quickly access such files automatically.
>
> I have comand that I often use, mkdatedir that makes me directory for
> the current date.
>
> If I wish to make a database note for the day, the command today-note would make sure there is:
>
> - Year 2020 (formatted how I customize it)
>   - November (also formatted by custom)
>     - 2020-11-23
>       And entry is automatically opened for the note.
>
> The system helps that I locate quickly the note that relates to the
> day. But I can put multiple notes under same date and I can also have
> same titles for those multiple notes. This is because each note has
> its unique ID.
>
> I do not know how Org handles multiple same headings when linking to
> it. It does not by default:
>
> [[Heading][Heading]]
>
> * Heading
>
>   Text here
>   
> * Heading
>
>
>   More text here. But if I wish to link here I need to do hac
>
> To me and my thinkin that is not really logical. There shall be always
> unique ID for each heading. My mind is not comforted by Org system in
> that sense. And I should not be thinking of the unique ID neither I
> should be writing those links like [[Something][Here]] as they should
> be constructed automatically.
>
> Myself I would like to come with cursor to second Heading and capture
> the link to the heading. I would kill [[Heading][Heading]] into
> special memory for those links. Then I could go to any other place in
> the Org file and insert it there without thinking how link looks like
> or constructing the link myself as it already exists in front of me.
>
> Constructing links by hand is fine for those which are external.
>
> Headings of Org files could be managed by the database in background.
> Then all that distributed or sparse meta information (mess) disappears. 
>
> What people are now trying to handle with Org files is management of a
> database. Only that entries of the database are pretty much
> disconnected from each other, vague, in unknown positions, then Org
> algorhitms try to manage that all everything what is anyway built-in
> in all SQL databases. Mess is growing over time.
>
>> A 10k entry directory is getting into enterprise territory, and I'm
>> sure enterprise has tech tricks that become worthwhile at that scale.
>
> I will try with those options dir_index and dir_nlink to see if my
> 50000+ directory becomes somewhat faster. Direct access to the
> subdirectory is always very fast. I almost never do ls there neither
> enter any such directory manually. They store emails, so I just click
> one key in mutt, that key extracts the current email address such as
> person@example.com and opens up ~/Maildir/person@example.com, one
> among 50000. It is accessed by wanting to see previous conversation
> with the contact, not by knowing what is the directory name or email
> address, computer does that. It is simple system I use for years and
> it is blazing fast.
>
>> There are scaling problems in every direction: Too many files per >
>> directory, too large files, too much content per heading, too many >
>> headings.
>
> To list more than 200,000 contacts does take some time but access to
> the list from database is so much faster than ls in the ~/Maildir with
> more than 50000 entries or subdirectories. I can relate to that. And I
> still think that file systems should manage any numbers of entries.
>
>> There are scaling problems from too much deep tree nesting, namely too
>> much fiddly ambiguous manual refiling.  Solution is flat "solid name"
>> directories just below feasible 10 Bins.  Work fine.
>
> I have tried your solution and could not find the mental concept to
> relate to my thinking. And I do agree that such solution could help
> other people.
>
> For images I have some command like `sort-images.lisp' that just sorts
> images by its embedded dates. Many times I sort even downloads per day.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-23 13:17                 ` Jean Louis
  2020-11-23 14:16                   ` Ihor Radchenko
@ 2020-11-23 16:07                   ` Texas Cyberthal
  2020-11-23 19:20                     ` Jean Louis
  1 sibling, 1 reply; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-23 16:07 UTC (permalink / raw)
  To: Jean Louis; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

Hi Jean,

> I have tried your solution and could not find the mental concept to relate to my thinking.

I forgot this inductive sorting skill must be learned gradually, like
touch typing, at small scale before exomind conversion.

> Do we think of a tree of knowledge first? I do not think so. And there are memory systems that DO think of plethora of various things and increase human memory capabilities.

Yes, Textmind becomes a mnemonic system.  The tree associates all
one's info together, making explicit one's personal implicit
prioritization of info.  Doing so systematically is only possible with
computer plus user algorithm.

> How human think -- is nowhere defined and is vague. Human thinks how they think and there may be as many versions as humans.

The brain is plastic.  It adapts easily to sync with a Textmind tree.
This tree's complete thought algorithm is an improvement over native
thought pattern.  Computer and brain meet in the middle.  That is
cognitive cyborg first stage.  Keyboard+screen is Brain-Computer
Interface.

The other complete thought algorithm is Pubmind, for longform content.
But it doesn't work without Textmind.

Other thought methods are even less complete, and thus more dependent
on the Textmind foundation.  For example, pure association and search
retrieval benefits greatly from Textmind de facto spaced repetition
and directory scoping.

> Doug Engelbart has already envisioned how files could be stored, accessed, hyperlinked, referenced and we do not use it in that sense today after how many years?

Exactly.  To the extent he was correct, his ideas have been adopted.
To the extent wrong, ignored.

The main problem is sustaining long-term hybrid-intelligence text-mind
sync.  It requires a complete OODA algorithm.  Engelbart doesn't think
on this scale.  David Allen's GTD tries to, but is limited by paper.

One can always improve the crystallized knowledge of a PIMS by adding
more metadata and links.  That misses the point: fluid intelligence is
more important.  It tells which info is worth promoting to more
expensive representations.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Is Org really so simple?
  2020-11-23 14:16                   ` Ihor Radchenko
@ 2020-11-23 18:08                     ` Jean Louis
  2020-11-23 20:41                       ` Tom Gillespie
  2020-11-26  3:08                       ` Ihor Radchenko
  0 siblings, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-23 18:08 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-23 17:18]:
  :PROPERTIES:
  :CREATED:  [2020-11-23 Mon 18:42]
  :ID:       edebb3e7-e755-4ecc-a5e8-a3353a3f5fd0
  :END:
> Dear Jean Louis,
> 
> Your description of the database reminds me how org-roam handles the
> files - it also uses an external database for linking and allows quick
> incremental search that does not really depend on where the
> files/headings are stored.

Sounds good, I can see there is graph database used.

> However, what you are talking about is against org-mode philosophy,
> as I know it.

Only philosophy I know is that it is plain text. Is there any official
philosophy? I have no idea, at least manual does not give me
references. I cannot find "philosophy", send me references.

It says "to keep simple things simple". But Org is far far from being
simple any more. It offers good principles, paradigms and people built
many enhancements upon those. Speedily it becomes way much more than
simple.

Headings do not look any more as headings, it looks like pieces of
code to a person that is new. Properties, tags, clocks, schedule,
deadline, all that tries to store itself under specific heading. There
is easily too much of it and things are not simple any more.

> Currently, the dev's stance is that org files must be
> self-sufficient.

There is no compact principle there practically. Anything is
possible. That Org files are not practically self-sufficient shows the
fact that there are 129 Emacs packages in one Org distribution. 

> Org-mode should not depend on external database to manage the org
> files and operations with them. Everything must be plain text!

Question is what is meant by database, it can be anything. One can
save LISP data. Recent files, desktop, eww bookmarks, init.el or
.emacs file are also all similar databases, there is the underused
EIEIO with persistent stuff that represent built-in database
functionality.

That Org files are not self-sufficient shows the demand that there is
almost no Org user who does not have add-ons, packages, modifications,
configurations.

Would it be really self-sufficient there would be no development going
on, right?

Babel executions clearly show that Org is not self sufficient and
depends on number of external software.

I don't mind of philosophy, in fact I would like that philosophy is
really that what it wanted to be, but that time is over.

I am just pointing out that it is by many means not self sufficient.

Is by default LaTeX export enabled? I think it is. How big is the
LaTeX package? It is huge, and Org depends on it for export.

Thus Org is far far from being self-sufficient.

Almost every system has GDBM database, if Emacs would have bindings to
GDBM, there would be so much less of development in general for many
various packages and Emacs would be expanding faster and easier.

In fact I think that author and initial developers could not predict
at the time where the Org goes and that speaking of self-sufficient
and "plain text" only is history.

Before I found out about Org I was using back in time `hnb' in console
to track various planning tasks. It works nice and simple. That is
really self sufficient. Org definitely not.

HNB - Hierarchical Notebook
http://hnb.sourceforge.net/

In the mean time I have created database where I can store TODO,
Notes, Calls, SMS, People, Invoices, Groups, Mailing Lists and so on,
and made my own shell and Perl interfaces to it. And I used to manage
it through: GeDaFe - PostgreSQL Generic Database Interface
http://gedafe.github.io/doc/gedafe-sql.en.html and this was and is
hierarchical or better graph knowledge management and relational
database.

Creating simple table in the database automatically helped me to
manage that table. It is trivial to create NOTES table with schedule
date, clock in, TODO or other conditions and tags. The interface is
just there and automatic to whatever table I create the interface is
there to add/modify/delete/search/refine records. That is what I would
say "simple" and keeping things simple and indefinitely extensible
without modification of software. The fundamental GeDaFe principle I
would like to try to implement in Emacs. And same database I use for
web interface I am using also within Emacs.

GeDaFe principle is following:

- define your data (like handling notes, TODO, or executing scripts within notes)

- work and forget about any underlying functions,
  add/create/delete/modify/index or search, make reports with simple exports

- expand with more definitions of data when necessary (like add
  various properties, or other data tables, like contacts, invoices,
  etc.) and repeat the process.

Org also shows that it does not hold "Notes" only, it holds more than
that, I have written average book size technical documents with
it. Only just one part of the document is printed from one single node
that belongs to single project among many. People use such documents
on the ground. My use case is not for simple notes.

A node in a tree can be anything, and Org enhancements develop by that
principle. For example there is org-contacts where nodes are meant to
be "People". Such development is so much hard coded.

Simpler would be to define the type of nodes and work by their
types. One could need just one type table and one node table and that
is about all.

The type table could say:

- this node is heading
- or, this node is text under heading
- or, this node is paragraph among many others
- or, this node is hyperlink to WWW URI
- or, this node is hyperlink to file
- this node is movie to play
- this type is PDF to be opened on page 3
- this one is really note
- this one is note but with action assigned like TODO, etc.

Nodes could have its properties defined like for anything. Nodes can
reference its parent nodes. Node can be parent to any heading.

Once such 2 tables are defined magic starts to take place, it becomes
its subtree with all kinds of node types including Babel execution and
similar. Meta data is meta, it can be updated but need not be
visible. Computer is handling meta data.

Node can be a page in a subtree that becomes a website.

Node can be object for person or company, or just anything.

I am currently using my nodes to quickly research various subjects by
using that type of dynamic knowledge repository.

Org file is dynamic knowledge repository.

About Dynamic Knowledge Repositories (DKR)
https://www.dougengelbart.org/content/view/190/163/

Then around 2015 I have discovered Cherrytree and have made bunch of
notes with it, and that is self-sufficient one program that keeps
simple things simple as it is much more simpler than Org. It offers a
visual interface to all features related to the knowledge management

Cherrytree - hierarchical note taking application with rich text and syntax highlighting
https://www.giuspen.com/cherrytree/

TAGS in Cherrytree are automatic if I remember well, TAG is simply
name of the node. If I call node TODO, then nodes under are simply
TODO items. 

Later I discovered there is something similar in Emacs so I started
with Org and use it mostly for instruction writing and project
management. And I find many options over kill for me. On the other
hand my usage of Org would be overkill for somebody, so it depends of
viewpoints.

In general I was always using headings and subheadings, trees, lists, notes by using text.

Somewhere 2004 I started using Markdown one among first as I found it
simpler than ASCIIDOC and M4, but not as perfect.

2020 and 2021 I like to raise the level of dynamic knowledge
journaling to the meta level where I think less about underlying
functions in software.

That experience also tells that Org is definitely not simple.

Among hnb, GeDaFe database approach, Cherrytree and Org mode, for
"keeping things simple" like note taking and TODO items, project
management, Cherrytree was the best for me.

Among all those for keeping complex things simple the database
approach is the best. Of course that I use database within Emacs and
it is not visible to user what it is. Database allows simultaneous
operation by several people on distance and that is the groupware
feature as envisioned by Doug Engelbart.

For document writing and nice formatting with LaTeX export, Org mode
is the best personally.

For notes, database based notes are best as only so I have relations
between the note and other objects. With 200,000 contacts in the
database which I can quickly access and assign notes to them, how
would that work with Org? Hardly. Notes are related to people, to
projects, plans, opportunities, research subjects, companies and so
on. There is no simple way in Org mode to relate one note to multiple
other related subjects.

And people try to do exactly that, people are developing Org in the
manner to relate objects in Org file to anything else. And they do
hard work as they do it manually. Relational database speeds up and
does not tell user to manually hyperlink various relations.

I have sent thousands of tasks to people by using this function
below. And I had to define for each Org file who are "assignees" for
that Org file. And I have like 50 assignees, so I need to copy and
paste their nick names or identifiers into the Org file. There it
comes the attribute of being "self-sufficient", it becomes
self-sufficient because I had to define all assignees into that
specific file, but I find it tedious and not useful.

(defun rcd/org-send-assigned-task ()
  "Sends assigned task to designated individual as Org"
  (interactive)
  (let* ((member-data (rcd-org-extract-assigned-member-email-data))
	 (id (if member-data (first member-data) nil))
	 (signature (if (equal (type-of (symbol-value (fifth member-data))) 'cons)
	 		(third (symbol-value (fifth member-data))) ""))
	 (file (rcd-org-subtree-to-file signature))
	 (subject (rcd/org-find-headline))
	 (esubject (escape-% subject))
	 (ask (unless id (y-or-n-p "No assignment found. Do you want to send it by email?")))
	 (name (if id (third member-data)))
	 ;; (name (if ask (read-from-minibuffer "Name:") name))
	 (voice (format "The task '%s' is being sent to '%s'" subject name))
	 (email (if id (if (equal (type-of (fourth member-data)) 'cons)
			   (car (fourth member-data))
			 (fourth member-data))))
	 (email (if ask (cf-search-email (read-from-minibuffer "Search for email: ")) email))
	 (really (y-or-n-p (format "Do you really want to send it to: %s?" (if ask email name)))))
    (if (and really (or id ask))
      (if (string-match "@" email)
	(progn
	  ;; (message (escape-% subject))
	  (speak voice)
	  (mutt-send-file name email esubject file))
	(message "No email specified"))
      (message "Aborted sending."))))

> Moreover, some devs are even reluctant to hide metadata (like unique
> ID implemented in org-id module) from users (which is possible and
> also partially implemented).

I hope that I have demonstrated that one who develops could review
several various paradigms and learn more. I am fine with any decision
of design for Org mode as I use it as it is and I have for me other
ways of managing data. I am not sure how much those features have been
discussed to say that hiding meta data is good or not good. It is
better to discuss and find what is more useful.

What I can see is that people complain for speed and they build
extensions that help with it. Extensions are external while built-in
Org does not keep up with the dynamic how people expect it to be.

For example I would expect Org to be very simple, very very simple, I
would rewind it back to its roots. Somebody else would like
complexities. Currently I can see that Org is not made for
complexities. It is better to unwind the development and make Org in
core very basic and speedy and let people enhance it with external
packages. In general it is better to remain simple. Even that may not
be possible any more.

I see hard work by many people who try to enhance Org as hierarchical
knowledge of data because people want to have feature X, but group of
those enhancements in reality belong to relational databases and not
to text files. Developers wish to accommodate various people and yet
by doing so they develop it into complex software. (129 .el packages
for one Emacs mode!?)

Among those one shall read the Doug Engelbart's paradigms, then
especially if one is developer of system of data management that many
people use, one shall explore other paradigms, including various
approaches to data handling. And overall one shall keep it simple as
it is main fundament of Org to be simple, while practical fact remains
that it is not anymore simple, not at all. 

I remember back in time with BASIC programming language that it had
also something like a built-in database that one could put on the
bottom of the file. Then there is also Perl's __DATA__ that is placed
straight into the file and one could also place images and other
stuff. Maybe the meta data could be kept this way in just one heading
named Meta data, and this heading would not be exported, it could be
hidden from the user and it could contain the database necessary for
single Org file. By pressing key to show properties one could see
properties or simply make them hidden. By making a copy of subtree the
metadata would also copy as usual. By exporting, one could make Org
without meta data, and I like using this information as I like sending
Org headings without personal meta data to third parties.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-23 16:07                   ` One vs many directories Texas Cyberthal
@ 2020-11-23 19:20                     ` Jean Louis
  2020-11-24  7:55                       ` Ihor Radchenko
  2020-11-25  6:57                       ` Texas Cyberthal
  0 siblings, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-23 19:20 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-23 19:08]:
> Hi Jean,
> 
> > I have tried your solution and could not find the mental concept to relate to my thinking.
> 
> I forgot this inductive sorting skill must be learned gradually, like
> touch typing, at small scale before exomind conversion.

I find it entertaining for now. Now, what is exomind? 

> > Do we think of a tree of knowledge first? I do not think so. And there are memory systems that DO think of plethora of various things and increase human memory capabilities.
> 
> Yes, Textmind becomes a mnemonic system.  The tree associates all
> one's info together, making explicit one's personal implicit
> prioritization of info.  Doing so systematically is only possible with
> computer plus user algorithm.

I do agree that various systems like 10 Bins for filing files by how
human thinks are useful. Only that "how human thinks" varies by
humans and not even humans may know how to explain how they think.

My concept is that I think what I want, like "I wish to see history of
interactions with this person" and then I click F3 or something, I can
see SMS, emails, if there were any negotiations, contracts, if there
are licenses submitted for partnership. That all has some practical
meanings. As for now and probably due to misunderstanding I cannot
find 10 Bin practical for me and this may be due to different way of
thinking.

Could you give me reference describing how you would file:

- Contract signed between your company 123 and person ABC?

- Image on which there is only your family member, not you, which has
  its date?

- Image of you, with the date?

- Image without date in the file name and not embedded?

- Software git tree related to mailing things?

> > How human think -- is nowhere defined and is vague. Human thinks how they think and there may be as many versions as humans.
> 
> The brain is plastic.  It adapts easily to sync with a Textmind tree.
> This tree's complete thought algorithm is an improvement over native
> thought pattern.  Computer and brain meet in the middle.  That is
> cognitive cyborg first stage.  Keyboard+screen is Brain-Computer
> Interface.

OK while I do try to adapt for now I do not find it easy. While I do
not adore hierarchies, file system is easier to adapt, as user can
just something like "Brother" and file it there.

It is entertaining as it sounds futuristic. But I do not know thought
algorithm, and what would be native thought pattern, and I would not
like to become cognitive cyborg, not in this stage of Emacs
development, as nobody likes to get killed. Maybe in some future when
I can load it into my personal memory and run on it even during sleep
time.

Keyboards will soon expire, they partially already expired as billions
of people use computers without keyboards including that term
"computer" became dilluted and hidden so that people do not even know
they carry one or two in their pockets. Screen will expire
too. Keyboards will become sensitive lights and screens holograms.

> The other complete thought algorithm is Pubmind, for longform content.
> But it doesn't work without Textmind.

Need practical example.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Is Org really so simple?
  2020-11-23 18:08                     ` Is Org really so simple? Jean Louis
@ 2020-11-23 20:41                       ` Tom Gillespie
  2020-11-24  5:06                         ` Jean Louis
  2020-11-26  3:08                       ` Ihor Radchenko
  1 sibling, 1 reply; 121+ messages in thread
From: Tom Gillespie @ 2020-11-23 20:41 UTC (permalink / raw)
  To: Jean Louis
  Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode,
	Ihor Radchenko

I have read many perspectives like this of late on this mailing list.
In summary I think that Org is such an incredibly flexible and
powerful tool that many users have not the faintest idea what other
users are doing with it (for example I am completely mystified by the
level of activity in the one vs many files thread and its counterpart
on the orgmode subreddit). Despite this, in a sense, Org is just as
simple as it has always been which is why people build on top of it,
and thus there isn't really any way to "go back" to a simpler time --
such a time is fictional, it has never existed. I can say for myself
that it is not Org that has changed, it is how I use it. I used to use
it in simple ways, and still can if I want, but now I use it as a
substrate for self describing (sometimes self-modifying) interactive
programs -- as complex as you can get.

For some use cases there are performance issues and for others
workflow issues. The performance issues are likely to be resolved via
more developer time. The workflow issues have to be resolved by
writing custom elisp code, in many times that elisp gets packaged as
org extensions. Thus we arrive back at your original complaint, which
is that Org files are not sufficiently self-contained. In order to
make them self-contained you currently have to copy and paste a bunch
of boilerplate into files (thus the workflow issues). For some things
the boilerplate is seemingly unavoidable, even using #+setupfile:
doesn't work if you are trying to solve a problem in a certain way in
Org. Other times, you could solve the same problem without any
boilerplate using a slightly different approach, but not always.

I have been working on an extension for Org (orgstrap
https://github.com/tgbugs/orgstrap) with the goal of making Org files
self-describing, if not fully self-contained (There is a distinction
between the two, but only for certain failure modes. Also, why force
__DATA__ to be embedded with the file when everything has to be
dereferenced at some point anyway? You could embed it later if it fits
your use case, or you could embed the org file in the data!). I came
at the problem from the perspective of reproducible research, but it
seems like there are many use cases for being able to move information
implicit in the environment into an Org file explicitly. If you want a
database to handle relational data, great, describe what you need to
access it in the org file that will act as the interface to that
relational data, that way if the database access is down you won't get
cryptic errors, but a big warning that says "hey! a service required
to use functionality in this file correctly is missing!" For the
described frustration with needing to track users, give the org-file
an embedded id and use that to access and update the assignees
associated with a file. There is no need to choose Org or something
else, you can have your comfortable org-mode workflow, and your
data-appropriate store.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Is Org really so simple?
  2020-11-23 20:41                       ` Tom Gillespie
@ 2020-11-24  5:06                         ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-24  5:06 UTC (permalink / raw)
  To: Tom Gillespie
  Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode,
	Ihor Radchenko

* Tom Gillespie <tgbugs@gmail.com> [2020-11-23 23:41]:
> I have read many perspectives like this of late on this mailing list.
> In summary I think that Org is such an incredibly flexible and
> powerful tool that many users have not the faintest idea what other
> users are doing with it (for example I am completely mystified by the
> level of activity in the one vs many files thread and its counterpart
> on the orgmode subreddit).

I have many files but I do not hyperlink them as they are in the other
sense self-contained. This is due to my individual use case. I simply
do not know why should I hyperlink from one file to other as subjects
of the files are so much separate.

My way of handling things is to designate a project with TODOs, but I
do not have TODOs in many various files so those agenda adding
functions are rather disturbing me then helping as those are few
seconds of delay for nothing. My TODO things are in separate files and
they are many times not really "My TODO". They are rather TODO for
people to which I assign tasks, and send such. Those people do not
need to write Org files, they get it by email and execute in the real
world, then they report back.

When searching for tasks I do not use agenda, I use people from where
I quickly enter the Org file related to that person without knowing
where it is located, there are many Org files like that.

That is how I do not encounter problems others do encounter.

One bulk of 173 Org files in one single directory I do not search with
Agenda rather with grep as those are simply not TODO/Action related.

There are just 2-3 files that have TODO/Action related stuff and they
are on key bindings.

I am in transition to stop with Org tracking my TODO actions and just
use it for the written instructions, prose and project management
which is then printed on the paper and assigned to people. While my
TODO notes I will simply keep in the database as it gives me better
access and tracking.

Just recently I have implemented dumb version control or backup for
database entries so that entry is first saved before editing for later
comparison or revisions. If I am to use RCS or other revision control
system on user's Org files, this would mean I would need to invoke the
version control in hundreds of directories and use all the
keybindings, etc. With the program backed version control when editing
Org file from database, it is automatically saved in the `vc' table
without me thinking anything about it.

If there is any version control, users should not think about it. It
should be a built-in feature. 

> Despite this, in a sense, Org is just as simple as it has always
> been

On that I am not convinced at all. 129 Emacs .el files are in the Org
distribution here and that I do not call simple. Maybe outline-mode is
simple on which org is built upon. 

> which is why people build on top of it, and thus there isn't really
> any way to "go back" to a simpler time -- such a time is fictional,
> it has never existed.

Right.

> I can say for myself that it is not Org that has changed, it is how
> I use it. I used to use it in simple ways, and still can if I want,
> but now I use it as a substrate for self describing (sometimes
> self-modifying) interactive programs -- as complex as you can get.

I will look into that package to see if it has good ideas for
HyperScope dynamic knowledge repository that I am working on,
something like meta Org.

> For some use cases there are performance issues and for others
> workflow issues.

I have no workflow issues and performance only when Org updates its
stuff which I do not need. I would like to see some more automated
link construction functions and recognitions of other modes. For
example when browsing gopher:// or gemini:// pages with M-x elpher
that I can quickly construct hyperlinks and insert somewhere. Org has
such functions to read email and obtain hyperlink, to use eww and
obtain hyperlink and similar. It just needs more and
more. Hyperlinking is what I need but I need it in more textual and
peculiar non-common way.

I would rather like to have simple text files formatted any how so
that file can be readable and sent to other people while meta
information and hyperlinks can be defined in separate file or other
pieces of information. GNU Hyperbole offers similar system where
buttons and hyperlink information is defined in separate files. I can
include GNU Hyperbole hyperlinks in any file and they will not look so
complex as Org files.

This link looks complicated if not in Org mode:

[[https://www.example.com/something/more/here][Fetch software]]

This link can be in any mode and looks simpler:

<(Fetch software)> 

but in that case hyperlinks are defined elsewhere, not in same file.

> Thus we arrive back at your original complaint, which is that Org
> files are not sufficiently self-contained.

No complaint, just my viewpoint. I do not mind of principles,
philosophy, etc. I do not need Org files to be sufficiently
self-contained.

I have some preferences but for Org I do not mind and accept it as
such. As said, I would prefer having text files which can be upgraded
with meta file to show all the hyperlinks. That is what I am using now
in HyperScope.

> In order to make them self-contained you currently have to copy and
> paste a bunch of boilerplate into files (thus the workflow
> issues).

Yes and no. I think that what you explained is not something to think
of. That is why when I create a person, like Karl, I can locate person
in the database and press F4 and Org file is created specifically for
that person with all details inside, like title, author, assignmets,
few basic headings such as Tasks and Transactions including the table
of transactions.

If I am thinking of groups of people, there is artist group and staff
member group, so there could be templates for artist group and staff
members, and by simply clicking on one single key the Org file is
created on the fly for that specific person without me knowing where
the file is located or putting any hand written templates. It is just
there, already saved and opened and I do not even need to save
it. Click and go.

> I have been working on an extension for Org (orgstrap
> https://github.com/tgbugs/orgstrap ) with the goal of making Org files
> self-describing, if not fully self-contained (There is a distinction
> between the two, but only for certain failure modes. Also, why force
> __DATA__ to be embedded with the file when everything has to be
> dereferenced at some point anyway?

I have just given idea that meta data like properties and anything
else could be defined in separate section of same file which in turn
could export itself to full Org or something else.

Separate section of Org file or separate meta data file could provide
hyperlinks for specific keywords without those being hyperlinsk in the
original file. Switching between Org type view and meta Org type view
could be easy. The idea is there just for thinking, I will definitely
not work on such as I work different

> You could embed it later if it fits your use case, or you could
> embed the org file in the data!).

In that sense I have database columns that hold Org data, not files. I
edit such just as usual, it is just not on the file system and it does
not need to be Org file, it can be just any type of a file that Emacs
support and any type of a mode. That way I am getting meta level
hierarchy of hyperdocuments that can be just anything.

> If you want a database to handle relational data, great, describe
> what you need to access it in the org file that will act as the
> interface to that relational data, that way if the database access
> is down you won't get cryptic errors, but a big warning that says
> "hey! a service required to use functionality in this file correctly
> is missing!"

I would not like creating too many things by hand, that is why
computer has to take those tasks from me. So I am working other way
around like adding records to the database and then viewing stuff with
the Org. Database is exported to Org buffer, not file, but could be
saved as file and then all relational elements and hyperlinks can be
already there automatically. If person Karl received email ABC, that
ABC can be hyperlink to the email, I can see all SMS, previous email
conversation and so on and that works by clicking on the automatically
generated hyperlinks. It would be pain in the ass that information
that is already available to be collected by computer I have to
collect with my efforts. Thus any pieces of information that already
exists should be converted on the fly to hyperlinks to hyperdocuments
without user having to construct it by hand.

Hand work is for those files where one wish to create references for
the first time. But if any referencable objects already exists and are
related to any other objects than Org files can be created on the fly
to inspect such relations.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-23 19:20                     ` Jean Louis
@ 2020-11-24  7:55                       ` Ihor Radchenko
  2020-11-25  6:57                       ` Texas Cyberthal
  1 sibling, 0 replies; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-24  7:55 UTC (permalink / raw)
  To: Jean Louis, Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

> I find it entertaining for now. Now, what is exomind? 

Unless I misunderstood, Jean referred to "external brain" concept:
- https://beepb00p.xyz/exobrain/
- https://zettelkasten.de/posts/extend-your-mind-and-memory-with-a-zettelkasten/
- https://github.com/novoid/Memacs
- https://blog.jethro.dev/posts/org_mode_workflow_preview/

Best,
Ihor

Jean Louis <bugs@gnu.support> writes:

> * Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-23 19:08]:
>> Hi Jean,
>> 
>> > I have tried your solution and could not find the mental concept to relate to my thinking.
>> 
>> I forgot this inductive sorting skill must be learned gradually, like
>> touch typing, at small scale before exomind conversion.
>
> I find it entertaining for now. Now, what is exomind? 


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-23  5:40     ` Ihor Radchenko
@ 2020-11-24  9:00       ` Jean Louis
  2020-11-24  9:45         ` Eric S Fraga
                           ` (2 more replies)
  0 siblings, 3 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-24  9:00 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-23 08:43]:
> >> I am wondering what you mean by Org's philosophy. Why would it have anything to do with directories?
> >
> > Org's philosophy is to have one or a handful of directories without
> > nesting of directories.  Users are not expected to have their Org
> > files in a deeply nested tree.  Org also prefers big files with large
> > trees rather than lots of little files.
> >
> > By philosophy, I mean the dev consensus on the correct way to do
> > things, and coded configuration and usability biases.
> 
> I believe that org support all possibilities. The user can decide to
> keep many (possibly nested) org files, a few large org files, or
> anywhere in between. There are several parallel feature sets allowing to
> work in a single file as well as with a bunch of smaller files.

Yes, sure, and I guess you mentioned some people have problems with
many files. And I have no problem at all with many files as they are
per subject separated, per person or per subject separated. They are
not hyperlinked to each other, it is me who make system to hyperlink
to files.

Searching for Joe Doe, F4 and I am in Org file for Joe Doe. My
personal TODO list need not really show the tasks assigned to Joe Doe,
I could show only * TODO Joe Doe and when I click there then I can get
all tasks for Joe Doe as new Org file.

It means I am accessing hundreds of Org files from the meta level by
using conceptual location backed by the database.

Some people maybe access multiple Org files through Agenda, me I
don't. Some items are "non existent" and I do not know how to ask
agenda to refresh itself. This is not big deal as I do not access
items throgh Agenda, though I find it very useful. 

org-agenda is trying to put all tasks and notes from various files
into one list and that is of course not so easy task considering that
files can be anywhere on the file system and that they need to be
"remembered". 

> For a single file, the user can search headings with org-goto (without a
> need to explicitly travel through all the nesting headline levels),
> reveal only headings satisfying certain keyword/tag/any other search
> criteria with org-sparse-tree, or built agenda views restricted to a
> single file (or even subtree).

M-x org-goto is useful feature to find headlines. And I never use it,
just standard Emacs search is enough within a file. Meanings I am
searching are often inside of the headline. And it is not my perosnal
way locating things.

Personally, I am using parts of Org, like specific headling to export
it and to send to remote person, or to print the file as project and
to bind it nicely.

When I see repetitive action, for example that I have to send "Daily
Report" template to a person by email, than I just bookmark that in
Emacs with {C-x r m} under something that I think is the meaning of
it. Then I forget about it. Next time when I need to send report, I am
{C-x r b} and quickly completing it and then I am exporting and
inserting into the email.

In general I speak of subsets or sub-lists among lists. List of Org
files is one list, list of headings within Org file is other list, and
list of specific subject related headings or bookmarks to such is
third subset of lists.

> For multiple files located anywhere in the filesystem, there is always
> org-refile capable of filing the information to proper place
> searching deeply nested headlines with ease regardless of the file the
> information is physically located in. Headlines from multiple files can
> be grouped using agenda views for any given search criteria (showing
> todo items or items for a single day/week is just a tiny subset of what
> agenda can do).

That may be useful for those who find it while my use case is
different, here is how it is for me:

** TODO Heading [1/2] [50%]

1) [X] Do this
2) [ ] Do that

that is my personal use case. I do not do things like:

** TODO Do this

Description of the task

And so far I know org-refile works on headings. It does not work on
list items.

Sometimes the task describes something that belongs to other file, I
just kill and yank to other file. And I keep RCS revision control
system of files.

As user may have many various sparse tasks to do or notes that require
action and attention in soonest future it is best to consolidate tasks
into one centralized system.

Such system should encompass all tasks or notes that require attention
or action in soonest future and should offer constant reminders to
user on what has to be done and when and which people are related to
the task.

When I mentioned "sparse tasks" I refer to my usage and handling of
mess:

1) Bunch of Org files, org-agenda and Org mode tries to accommodate me
   by consolidating everything into lists

2) There are hundreds of such tasks all over, Org tries to consolidate
   it.

3) There are various tasks and actions to do that are not recorded in
   Org files, those cannot be handled by Org.

4) There are database based Tasks in several groupings, some are just
   tagged with TODO, some are recorded in actual action requiring
   groups.

Instead of attempting to be perfect by using Org files for me
personally is best to consolidate all tasks in the database as such
are related either to people mostly or to some subjects related to me
personally which again belongs to "People".

And Org file for people need not have a task there, it can be exported
automatically into the Org.

- when searching for Person Robert S., I locate person and press F4

- Org file for that person is automatically created

- heading * Tasks is automatically created and expanded there by using SQL

Concept is here:

* Tasks

#+BEGIN_SRC sql :engine postgresql :exports results :results value raw 
SELECT '** [[(todo ' || simpletodos_id || ')][TODO]] ' || simpletodos_datecreated::date || ' ' ||
simpletodos_name || E'\n\n' || simpletodos_description FROM simpletodos
WHERE simpletodos_contacts = 23187;
#+END_SRC

#+RESULTS:
** [[(todo120)][TODO]] 2017-11-07 Do something

Something I need to do. (THIS IS HEADING OR TASK DESCRIPTION).

The SQL query need to defined only one time and not in the Org file,
but in the program that creates the Org file for the user. Instead of
the SQL query in the specific Org file it could be a simple Emacs
expression that never changes such as (tasks-for-user)

Then the SQL query generates the headings under #+RESULTS: and those
headings come from centralized consolidated database of tasks.

It is then interesting that this column of the database can include
any kind of the mode that Emacs supports, it could include any kind of
file, be it image, video or anything as long as such task is assigned
to the user. It could include other Org files and collection of Org
files or just description or database based whole Org file if
necessary. It becomes very abstract and liberated from limits.

That way I would be editing tasks on the meta level by clicking on
TODO link. If task would be done and completed it could be shown in
separate section of Org file related to user.

Additional buttons can be automatically included such as:

- All tasks for user -> Hyperlink to meta level consolidated TODO management

- Add task for user

- Re-assign from this user to other user

That is using Org mode as viewer of various information, not only as
handler of the information.

The cruft with org-agenda is then removed as then by pressing F5 I get
the list of all tasks and I could filter it how I wish. Which is
similar to org-agenda. The list is coming from the database and is
blazing fast.

Then I can filter using helm or ivy completion or built-in completion:

- I can simply type name of person related to the task, be it myself
  or somebody else. Majority of "my" tasks are related to other
  people. I search by people, sometimes by companies or organizations.

- I can type subject name or tag, any tag that need not be defined in
  single Org file and I find the task

- then if task is related to the person, I could quickly jump into
  persons meta report, from where there is Org files, other files,
  picture links all summarized in the meta Org profile, similar like
  FBI profiles we see on movies, one find the person's name and can
  see anything about that person.

- or I could delete the task, re-assign, modify the task. It becomes
  semi-automatically modified in the Org file of the user.

Can I automated the execution of Babel code upon opening of the Org
file?

When all tasks become centralized by any means, in my case in the
central database, then Org files get liberated from tasks and become
structural and relational. I can edit each task and I can always see
the updated list of the tasks and relations from one object to the
other. Hyperlinks get automatically created.

Personal problem is that tasks are sparse and separate in various Org
files and not centralized. I become dependent of org-agenda to do what
I need but it never does what I need.

Example is the need to relate task to people. Tasks are people related.

Purchasing cloths for your daughter? People.

Visiting museum? People related.

Some people are in Kenya, I do not think always on them. But I might
when I come there. Then I would write "Kenya" to get people I need to
put attention on. If tasks are centralized I can quickly jump to list
of Kenyan people.

If tasks are not centralized I need to put some tag under all those
people's files "Kenya" which is repetitive and error prone activity.

And I get trapped into "Org mode" for years. Which I am now, I am
trapped but it does not help me to manage things how I think.

I do value org-agenda but it is large effort to make SQL query out of
the Org mode. And very expensive effort as it is huge program:

-rw-r--r-- 1 415K Oct 19 10:20 org-agenda.el

If I organize all my tasks centrally and only display them in Org
files related to people, then making similar features like org-agenda
becomes trivial.

- Agenda for current week becomes trivial SQL query such as to select
  those tasks by current week. Result becomes a list that may be used
  either in Emacs completion or tabulated list mode or in Org or any
  kind of modes.

- To list entries with any kind of tags also become trivial, at least
  for centralized database tasks that have been tagged.

- searching for keywords is trivial single line SQL query.

- multi-occur is not trivial, as that would involve searching in all
  Org files. It asks for indexing Org files and going over them.

- Finding any FLAGGED entries would become trivial

It opens plethora of various means of reporting and accessing various
action related notes or tasks.

By general principle and due to nature of tasks that they do need
attention, I think that all tasks should be centralized, any how, it
does not matter how. From that principle I find it better that
majority of tasks are handled in just few files and not many files as
it becomes complex and users cannot any more remember which files.

org-agenda and Org try to remember that for user, but there are many
ways how Org files can be left without attention.

If my staff member in other country uses Emacs such can access
database and see assigned tasks. I can also export centralized tasks
for the user and send such to user as Org file.

If user updates tasks, as long as hyperlinks in the user's Org file
are not disturbed, I can review the work of the user and just click on
the hyperlink to update such task or mark them as DONE. Opinion of
staff member on what is done and what is not done is not necessarily
my opinion.

Description of content body of the heading can be programmatically
captured and entered into centralized database as a task.

Then we comes to actual execution of tasks. How do we get reminded?

Is the reminder only if I press {C-c a} for org-agenda? Do I need to
do action to get reminded?

I think computer shall be programmed to remind me on the start. Tasks
that are in the database can be shown directly in Emacs, but SQL
queries can be run and shown upon first log in into computer. Emails
could be sent, SMS could be sent to remind me or other people assigned
to the task. This brings attention and where people put attention that
is becoming reality.

Tasks could be shown by using timer in the mini buffer to remind user
of what has to be done and what is next, what is today to be done.

Keys can be assigned to TODAY, WEEK, MONTH, YEAR.

Birthdays can be consolidated automatically, as if there is database
of people, then their birtdays are automatic types of notes or tasks.

People who travel often would like to see other people in the city. By
changing one's location one could get list of known people and places
in the city. If I am in Mombasa, Kenya I may forget that good
restaurant as there are not many and visitor has to be brought in good
one, not bad one (which there are many).

With the introduction of emacs-libpq into GNU ELPA such features may
become reality.

emacs-libpq @ Github
https://github.com/anse1/emacs-libpq

Summary:

- tasks are people related

- plethora of Org files makes hard life to developers trying to satisfie users' needs

- tasks should be centralized and related to objects such as people, organizations, subjects

- Org files may be used as viewers for centralized task systems with
  all the features left as they are as all properties and tags and
  anything can be obtained from the database. Nothing changes.

- upon saving Org file or upon click or invocation, the task in the
  database can be updated if some description has been changed, but
  updates can take place in the database directly.

- tasks get liberated from any limits and formats, they can be just
  hyperlinks or hyperdocuments to just anything.

- integration and relation to many other objects becomes easier possible

- searching, indexing, making plans, or creating new meta Org files on
  the fly by using SQL queries becomes trivial. org-agenda of 450k can
  become easily redundant
  
- once centralized, there must be reminding system that works within
  or without Emacs, tasks are accessed by blazing speed, related
  people's files are quickly located, various queries and ways of
  reporting tasks in the list or meta Org file on the fly becomes
  possible.

I use "meta Org file" only to say that format is useful for displaying
structured and relational information for the reason that it has
hyperlinking support. As long as hyperlinks can be shown in any mode
then reports could be displayed any how. 



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24  9:00       ` Jean Louis
@ 2020-11-24  9:45         ` Eric S Fraga
  2020-11-24  9:51           ` Jean Louis
                             ` (2 more replies)
  2020-11-24 18:47         ` Dr. Arne Babenhauserheide
  2020-11-26  3:32         ` Ihor Radchenko
  2 siblings, 3 replies; 121+ messages in thread
From: Eric S Fraga @ 2020-11-24  9:45 UTC (permalink / raw)
  To: Jean Louis; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

On Tuesday, 24 Nov 2020 at 12:00, Jean Louis wrote:
> Can I automated the execution of Babel code upon opening of the Org
> file?

You can, by using file local variables.  For instance, for some files, I
do this:

#+begin_src org
  ,* local variables                         :noexport:
  # Local Variables:
  # eval: (org-sbe "startup")
  # End:
#+end_src

which will evaluate the named src block "startup" when file is opened.

Note that this is a potential security hole so only do this for files
you trust!

-- 
: Eric S Fraga via Emacs 28.0.50, Org release_9.4-118-g2a4578.dirty


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24  9:45         ` Eric S Fraga
@ 2020-11-24  9:51           ` Jean Louis
  2020-11-24 11:42             ` Eric S Fraga
  2020-11-25 10:19           ` org-sbe to automate some source block executions Jean Louis
  2020-11-25 11:46           ` One vs many directories Jean Louis
  2 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-24  9:51 UTC (permalink / raw)
  To: Ihor Radchenko, Texas Cyberthal, emacs-orgmode

* Eric S Fraga <e.fraga@ucl.ac.uk> [2020-11-24 12:46]:
> On Tuesday, 24 Nov 2020 at 12:00, Jean Louis wrote:
> > Can I automated the execution of Babel code upon opening of the Org
> > file?
> 
> You can, by using file local variables.  For instance, for some files, I
> do this:
> 
> #+begin_src org
>   ,* local variables                         :noexport:
>   # Local Variables:
>   # eval: (org-sbe "startup")
>   # End:
> #+end_src
> 
> which will evaluate the named src block "startup" when file is opened.
> 
> Note that this is a potential security hole so only do this for files
> you trust!

For me is fine, as I do that for files I create.

When I have opened this email i was also asked to set local variables,
imagine. So that could maybe also mean that one could send email that
is constructed as Org file and if user answers YES, one could inject
malicious stuff.

--------------- the text above -------------------
still asks me if I like to allow eval: (org-sbe "startup")

So I think this is bug in Emacs as Local-variables should be on the
end of the file.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24  9:51           ` Jean Louis
@ 2020-11-24 11:42             ` Eric S Fraga
  2020-11-24 13:13               ` Diego Zamboni
  0 siblings, 1 reply; 121+ messages in thread
From: Eric S Fraga @ 2020-11-24 11:42 UTC (permalink / raw)
  To: Jean Louis; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

On Tuesday, 24 Nov 2020 at 12:51, Jean Louis wrote:
> So I think this is bug in Emacs as Local-variables should be on the
> end of the file.

"end of file" is a rather loose term when it comes to local variables...
-- 
: Eric S Fraga via Emacs 28.0.50, Org release_9.4-118-g2a4578.dirty


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 11:42             ` Eric S Fraga
@ 2020-11-24 13:13               ` Diego Zamboni
  2020-11-24 13:49                 ` Jean Louis
  2020-11-24 17:02                 ` Jean Louis
  0 siblings, 2 replies; 121+ messages in thread
From: Diego Zamboni @ 2020-11-24 13:13 UTC (permalink / raw)
  To: Jean Louis, Ihor Radchenko, Texas Cyberthal, emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 842 bytes --]

>
> So I think this is bug in Emacs as Local-variables should be on the
> end of the file.


According to the manual (
https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables
):

The start of the local variables list should be no more than 3000
> characters from the end of the file


Given the length of the email, I guess this is why Emacs saw the variables
as being within the correct range.

--Diego


On Tue, Nov 24, 2020 at 12:57 PM Eric S Fraga <e.fraga@ucl.ac.uk> wrote:

> On Tuesday, 24 Nov 2020 at 12:51, Jean Louis wrote:
> > So I think this is bug in Emacs as Local-variables should be on the
> > end of the file.
>
> "end of file" is a rather loose term when it comes to local variables...
> --
> : Eric S Fraga via Emacs 28.0.50, Org release_9.4-118-g2a4578.dirty
>
>

[-- Attachment #2: Type: text/html, Size: 1634 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 13:13               ` Diego Zamboni
@ 2020-11-24 13:49                 ` Jean Louis
  2020-11-24 17:02                 ` Jean Louis
  1 sibling, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-24 13:49 UTC (permalink / raw)
  To: Diego Zamboni; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

* Diego Zamboni <diego@zzamboni.org> [2020-11-24 16:13]:
> >
> > So I think this is bug in Emacs as Local-variables should be on the
> > end of the file.
> 
> 
> According to the manual (
> https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables
> ):
> 
> The start of the local variables list should be no more than 3000
> > characters from the end of the file

I see and I wonder. I was thinking that not every prefix or comment
will be considered and that such must be really on the end of the file.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 13:13               ` Diego Zamboni
  2020-11-24 13:49                 ` Jean Louis
@ 2020-11-24 17:02                 ` Jean Louis
  2020-11-24 18:50                   ` Dr. Arne Babenhauserheide
  1 sibling, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-24 17:02 UTC (permalink / raw)
  To: Diego Zamboni; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

* Diego Zamboni <diego@zzamboni.org> [2020-11-24 16:15]:
> >
> > So I think this is bug in Emacs as Local-variables should be on the
> > end of the file.
> 
> 
> According to the manual (
> https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables
> ):
> 
> The start of the local variables list should be no more than 3000
> > characters from the end of the file
> 
> 
> Given the length of the email, I guess this is why Emacs saw the variables
> as being within the correct range.

Yes thank you. I was thinking Emacs will do that only in files where
it recognizes some comments or no comments and that variables need
to be pretty down in the file, on the bottom. Now I learn it is not
so.

That is security issue.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24  9:00       ` Jean Louis
  2020-11-24  9:45         ` Eric S Fraga
@ 2020-11-24 18:47         ` Dr. Arne Babenhauserheide
  2020-11-24 18:54           ` Jean Louis
  2020-11-26  3:47           ` Ihor Radchenko
  2020-11-26  3:32         ` Ihor Radchenko
  2 siblings, 2 replies; 121+ messages in thread
From: Dr. Arne Babenhauserheide @ 2020-11-24 18:47 UTC (permalink / raw)
  To: Jean Louis; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

[-- Attachment #1: Type: text/plain, Size: 2026 bytes --]


Jean Louis <bugs@gnu.support> writes:

> Some people maybe access multiple Org files through Agenda, me I
> don't. Some items are "non existent" and I do not know how to ask
> agenda to refresh itself.

Simply press the letter g.

For my own setup I run code in a hook to update the agenda whenever I
change a TODO state, clock in or clock out, but that has performance
problems when I do it while the Agenda is shown.

    (defvar todo-modified-from-agenda nil "Indicates whether org-mode todo state changes were triggered from the agenda. Check this to avoid trying to propagate the change back into the agenda")
    ;; continuously update agenda view, from http://thomasf.github.io/solarized-css/test/org-hacks.html
    (defun kiwon/org-agenda-redo-in-other-window ()
      "Call org-agenda-redo function even in the non-agenda buffer."
      (interactive)
      (when (not (and (boundp 'todo-modified-from-agenda) todo-modified-from-agenda)) ; org-state non-nil means we’re coming from the org-after-todo-state-change-hook, which would throw when changing todo states from agenda due to a circular action
        (let ((agenda-window (get-buffer-window (or (and (boundp 'org-agenda-buffer-name) org-agenda-buffer-name) "plan.org") t)))
          (when agenda-window
    	(with-selected-window agenda-window
    	  (org-agenda-redo))))))
    ;; advice agenda todo to avoid redo, thanks to http://nullprogram.com/blog/2013/01/22/
    (defadvice org-agenda-todo (before org-agenda-disable-redo activate)
      (setq todo-modified-from-agenda t))
    (defadvice org-agenda-todo (after org-agenda-enable-redo activate)
      (setq todo-modified-from-agenda nil))
    
    (add-hook 'org-clock-in-hook 'kiwon/org-agenda-redo-in-other-window)
    (add-hook 'org-clock-out-hook 'kiwon/org-agenda-redo-in-other-window)
    (add-hook 'org-after-todo-state-change-hook 'kiwon/org-agenda-redo-in-other-window)


Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 17:02                 ` Jean Louis
@ 2020-11-24 18:50                   ` Dr. Arne Babenhauserheide
  2020-11-24 18:58                     ` Jean Louis
  2020-11-24 20:11                     ` One vs many directories Tom Gillespie
  0 siblings, 2 replies; 121+ messages in thread
From: Dr. Arne Babenhauserheide @ 2020-11-24 18:50 UTC (permalink / raw)
  To: Jean Louis; +Cc: Diego Zamboni, Texas Cyberthal, emacs-orgmode, Ihor Radchenko

[-- Attachment #1: Type: text/plain, Size: 742 bytes --]


Jean Louis <bugs@gnu.support> writes:
>> The start of the local variables list should be no more than 3000
>> > characters from the end of the file
>> 
>> 
>> Given the length of the email, I guess this is why Emacs saw the variables
>> as being within the correct range.
>
> Yes thank you. I was thinking Emacs will do that only in files where
> it recognizes some comments or no comments and that variables need
> to be pretty down in the file, on the bottom. Now I learn it is not
> so.
>
> That is security issue.

Why is it a security issue? The variables do need to be close to the end
— 3000 characters is only about 50 lines.

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 18:47         ` Dr. Arne Babenhauserheide
@ 2020-11-24 18:54           ` Jean Louis
  2020-11-25  8:14             ` Dr. Arne Babenhauserheide
  2020-11-26  3:47           ` Ihor Radchenko
  1 sibling, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-24 18:54 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

* Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-24 21:48]:
> 
> Jean Louis <bugs@gnu.support> writes:
> 
> > Some people maybe access multiple Org files through Agenda, me I
> > don't. Some items are "non existent" and I do not know how to ask
> > agenda to refresh itself.
> 
> Simply press the letter g.

What function is on g on your side?

I press g and I get error: invalid key g

> For my own setup I run code in a hook to update the agenda whenever I
> change a TODO state, clock in or clock out, but that has performance
> problems when I do it while the Agenda is shown.

That sounds that it will use computing power. Thank you. I have plan
to switch anything action related to database system and use Org to
view tasks, not to handle or store them.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 18:50                   ` Dr. Arne Babenhauserheide
@ 2020-11-24 18:58                     ` Jean Louis
  2020-11-25  6:39                       ` Tim Cross
  2020-11-25  8:10                       ` Dr. Arne Babenhauserheide
  2020-11-24 20:11                     ` One vs many directories Tom Gillespie
  1 sibling, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-24 18:58 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide
  Cc: Diego Zamboni, Texas Cyberthal, emacs-orgmode, Ihor Radchenko

* Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-24 21:51]:
> 
> Jean Louis <bugs@gnu.support> writes:
> >> The start of the local variables list should be no more than 3000
> >> > characters from the end of the file
> >> 
> >> 
> >> Given the length of the email, I guess this is why Emacs saw the variables
> >> as being within the correct range.
> >
> > Yes thank you. I was thinking Emacs will do that only in files where
> > it recognizes some comments or no comments and that variables need
> > to be pretty down in the file, on the bottom. Now I learn it is not
> > so.
> >
> > That is security issue.
> 
> Why is it a security issue? The variables do need to be close to the end
> — 3000 characters is only about 50 lines.

Emacs users, Org users on our mailing lists are not so private. Their
names and email addresses are in the public database. Spammer can
construct phishing type of an email, including something like Org news
or something and send such email to users. Among let us say 3000
people there will be percentage of users that will say Y to invoke the
local variables due to lack of knowing what is it doing to computer.

After that, anything becomes possible, including intrusion into
computer, capturing all email addresses, passwords, sending spam
emails from computer and so on.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 18:50                   ` Dr. Arne Babenhauserheide
  2020-11-24 18:58                     ` Jean Louis
@ 2020-11-24 20:11                     ` Tom Gillespie
  2020-11-24 20:39                       ` Tim Cross
  2020-11-25  4:44                       ` One vs many directories Jean Louis
  1 sibling, 2 replies; 121+ messages in thread
From: Tom Gillespie @ 2020-11-24 20:11 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide
  Cc: Diego Zamboni, Texas Cyberthal, emacs-orgmode, Ihor Radchenko,
	Jean Louis

> > That is security issue.
>
> Why is it a security issue? The variables do need to be close to the end
> — 3000 characters is only about 50 lines.

It isn't a security issue by itself. Emacs never automatically runs
eval file local variables unless you have tampered with
enable-local-eval, in which case the tamperin is the security issue
not the existence of the local variables list.

Thus it is only a security issue if you permanently accept that eval
file local variable and then open random org files that use it with a
malicious startup block. An eval file local variable like that which
blindly executes an org babel block should never be permanently
accepted

Best,
Tom


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 20:11                     ` One vs many directories Tom Gillespie
@ 2020-11-24 20:39                       ` Tim Cross
  2020-11-25  4:54                         ` Jean Louis
  2020-11-25  5:06                         ` Jean Louis
  2020-11-25  4:44                       ` One vs many directories Jean Louis
  1 sibling, 2 replies; 121+ messages in thread
From: Tim Cross @ 2020-11-24 20:39 UTC (permalink / raw)
  To: emacs-orgmode


Tom Gillespie <tgbugs@gmail.com> writes:

>> > That is security issue.
>>
>> Why is it a security issue? The variables do need to be close to the end
>> — 3000 characters is only about 50 lines.
>
> It isn't a security issue by itself. Emacs never automatically runs
> eval file local variables unless you have tampered with
> enable-local-eval, in which case the tamperin is the security issue
> not the existence of the local variables list.
>
> Thus it is only a security issue if you permanently accept that eval
> file local variable and then open random org files that use it with a
> malicious startup block. An eval file local variable like that which
> blindly executes an org babel block should never be permanently
> accepted
>

Quite right Tom.

If people are really concerned about security, they should look first at
their use of repositories like MELPA. There is no formal review or
analysis of packages in these repositories, yet people will happily
select some package and install it.


--
Tim Cross


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 20:11                     ` One vs many directories Tom Gillespie
  2020-11-24 20:39                       ` Tim Cross
@ 2020-11-25  4:44                       ` Jean Louis
  1 sibling, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-25  4:44 UTC (permalink / raw)
  To: Tom Gillespie
  Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode,
	Diego Zamboni, Ihor Radchenko

* Tom Gillespie <tgbugs@gmail.com> [2020-11-24 23:11]:
> > > That is security issue.
> >
> > Why is it a security issue? The variables do need to be close to the end
> > — 3000 characters is only about 50 lines.
> 
> It isn't a security issue by itself. Emacs never automatically runs
> eval file local variables unless you have tampered with
> enable-local-eval, in which case the tamperin is the security issue
> not the existence of the local variables list.
> 
> Thus it is only a security issue if you permanently accept that eval
> file local variable and then open random org files that use it with a
> malicious startup block. An eval file local variable like that which
> blindly executes an org babel block should never be permanently
> accepted

I do understand conditions.

But I can say that I did not understand conditions for one decade and
a half, as I was not aware that Emacs has a "real programming language
" built-in, and I have been spending my time with outside languages
that I was invoking from Emacs.

Yes, I did read that Emacs has Emacs Lisp. I was configuring Emacs but
I have not been thinkin that it is Lisp. I could figure out those
settings without reading manual.

As I am programming in Emacs Lisp for years I am aware of it. Before I
was thinking that local variables belong somewhere and that I should
enable it, despite all the warnings. There was lack of understanding
despite the information in front of me.

Some files opened asked me to enable local variables, so many times I
did so without thinking. My personal behavior to enable local
variables that other authors have written is probable not isolated
case. So that is security issue as number of users among thousands are
weak on this.

When I say security issue I do not think myself, you or majority of
people currently, but that there are probably millions of people who
can be affected by this. I also know spammers are harvesting mailing
lists.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 20:39                       ` Tim Cross
@ 2020-11-25  4:54                         ` Jean Louis
  2020-11-25  5:54                           ` Tim Cross
  2020-11-25  5:06                         ` Jean Louis
  1 sibling, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25  4:54 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode

* Tim Cross <theophilusx@gmail.com> [2020-11-24 23:40]:
> > Thus it is only a security issue if you permanently accept that eval
> > file local variable and then open random org files that use it with a
> > malicious startup block. An eval file local variable like that which
> > blindly executes an org babel block should never be permanently
> > accepted
> >
> 
> Quite right Tom.
> 
> If people are really concerned about security, they should look first at
> their use of repositories like MELPA. There is no formal review or
> analysis of packages in these repositories, yet people will happily
> select some package and install it.

That is analogous to enabling local variables because user has been
asked. Popping up a window with question is often a dialogue that
users are asked in other software. Dialogues are often not read, just
as I was not reading it for years and I did click YES many times.

Using such variables is unsafe and the default should be not to
execute it without any question. Only when user enables local
variables then user should be asked to execute it. That would mean
that aware user knows why that is needed. Such will be able to answer
questions YES or NO.

Unaware users must answer something. To be aware one has to know Emacs
Lisp and deeper functions of Emacs.  In beginning years it was just
fine to assume so due to general computing interests and people being
interested in every detail, today there are even more users of Emacs
who will not know what is going on.

I do not know for you, but when computer asks me anything YES or NO,
my tendency is to answer YES regardless if I have read it or not. This
same tendency may be with thousands of other users.

If I have invoked something on computer and I get asked anything, I
have tendency to approve whatever comes on me as I approved it by
invoking some action. Not that I am doing it every time yet I have the
tendency of doing it.

Observing users who are asked questions upon invokation of other
software I can say that many times users just click one of the
options, either YES or NO, but without real regard to the
meanings. The purpose to click either YES or NO is to continue one
step forward and randomity decides later what happens.




^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 20:39                       ` Tim Cross
  2020-11-25  4:54                         ` Jean Louis
@ 2020-11-25  5:06                         ` Jean Louis
  2020-11-25  7:00                           ` Tim Cross
  1 sibling, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25  5:06 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode

* Tim Cross <theophilusx@gmail.com> [2020-11-24 23:40]:
> If people are really concerned about security, they should look first at
> their use of repositories like MELPA. There is no formal review or
> analysis of packages in these repositories, yet people will happily
> select some package and install it.

Interesting that you are one who mentions that. There are just few
people ever mentioned it.

I am still in process of the review of MELPA packages and its
system. There are many security issues.

Package signing is one example. It does not offer much of security
when packages are signed automatically, but it raises level of
security.

MELPA packages and archive-contents are not PGP signed, while GNU ELPA
packages are signed.

Licensing issues are also a problem with MELPA as it becomes unclear
if I have got the license or not when author does not have a proper
name. It is not relevant if majority of people do not think or are not
aware of licensing as I have to think of it for software that I may
re-use, distribute, modify. Did I really get the license if user is
named "nick-abc" and have no possible contact information? In some
cases for subset of MELPA packages there is no way to verify who
really wrote piece of software and if I have received the license
legally. Due diligence is on my side. I cannot just claim "But he gave
me license" will not help if I have not done proper due diligence,
court would not be on my side.

Other issue is that MELPA philosophy is to accept any kind of software
even if software has been made to drive or control proprietary
software.

For that reason there is now non-GNU ELPA being developed where useful
packages will be distributed from.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25  4:54                         ` Jean Louis
@ 2020-11-25  5:54                           ` Tim Cross
  2020-11-25  7:01                             ` Local variables issue - " Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Tim Cross @ 2020-11-25  5:54 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode


Jean Louis <bugs@gnu.support> writes:

> Observing users who are asked questions upon invokation of other
> software I can say that many times users just click one of the
> options, either YES or NO, but without real regard to the
> meanings. The purpose to click either YES or NO is to continue one
> step forward and randomity decides later what happens.

You cannot prevent people from making bad decisions. Saying yes to
something when you don't know what it means is like using the same
weak password for everything. There has been massive amounts of
communication and education out there to let people know about the
risks. If they choose to ignore it or follow practices which are unsafe,
it is their tough luck.

We need to encourage people to take more responsibility for their
actions, not less. One important component of this is allowing the
consequences for bad decisions to occur and not spend endless resources
protecting people from themselves.

If your asked to do something and your clearly told that doing so might
be unsafe and your given an option not to do it which is just as easy to
perform and you still decide to do it, that decision is on you.

The alternative is to remove extremely useful functionality from many
responsible users because of an unknown number of others who make poor
decisions.

Furthermore, keep in mind that this ability in Emacs has been around for
longer than many users have been alive. I've been using it for nearly 30
years and have participated in many forums over that time. I have yet to
hear of a single security incident occurring because of local variables.
That doesn't mean such incidents have not occurred, but it does likely
mean they are rare.

--
Tim Cross


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 18:58                     ` Jean Louis
@ 2020-11-25  6:39                       ` Tim Cross
  2020-11-25 12:38                         ` Local variables insecurities - " Jean Louis
  2020-11-25  8:10                       ` Dr. Arne Babenhauserheide
  1 sibling, 1 reply; 121+ messages in thread
From: Tim Cross @ 2020-11-25  6:39 UTC (permalink / raw)
  To: emacs-orgmode


Jean Louis <bugs@gnu.support> writes:

> * Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-24 21:51]:
>>
>> Jean Louis <bugs@gnu.support> writes:
>> >> The start of the local variables list should be no more than 3000
>> >> > characters from the end of the file
>> >>
>> >>
>> >> Given the length of the email, I guess this is why Emacs saw the variables
>> >> as being within the correct range.
>> >
>> > Yes thank you. I was thinking Emacs will do that only in files where
>> > it recognizes some comments or no comments and that variables need
>> > to be pretty down in the file, on the bottom. Now I learn it is not
>> > so.
>> >
>> > That is security issue.
>>
>> Why is it a security issue? The variables do need to be close to the end
>> — 3000 characters is only about 50 lines.
>
> Emacs users, Org users on our mailing lists are not so private. Their
> names and email addresses are in the public database. Spammer can
> construct phishing type of an email, including something like Org news
> or something and send such email to users. Among let us say 3000
> people there will be percentage of users that will say Y to invoke the
> local variables due to lack of knowing what is it doing to computer.
>
> After that, anything becomes possible, including intrusion into
> computer, capturing all email addresses, passwords, sending spam
> emails from computer and so on.

this is just baseless fear mongering based on nothing but speculation.

Of your suggested 3000 users, only a very small percentage use Emacs as
their mail client. Of those, only an even smaller number will have their
mail client configured to render messages with a mode that supports
local variables and even a smaller number of those would say yes to
executing the code. In fact, anyone who has gone to the extent of
configuring their Emacs email client to open messages with a mime type
of x-org (or even just based on an attachment with *.org in the file
name) is more than likely to be sufficiently technically aware not to
say yes when asked.

Few, if any user, is going to download some random attachment in an
email message, open it in emacs and then say yes to a message warning
them that doing so might be dangerous. Such ill-informed users have been
pretty much weeded out by all the other scam phishing out there by now.
To convince them to go through such steps would require some pretty
convincing content - a simple org news attachment or similar is unlikely
to do it.

Even if you do get them to say yes, they are still a long way from being
able to compromise the computer Emacs is running on. Gaining some level
of access is one thing, actually being able to do something with that
access is another. Trying to compromise a computer, which these days
typically involves privilege escalation, would be extremely difficult to
achieve with elisp. The best you could hope for would be to install a
trojan or back door what would allow the attacker to install other
tools. Could be possible, but is definitely non-trivial.

This ability has been around in Emacs for a very long time - more than
30 years, possibly even longer. There has not been a single recorded
incident of large number of users being compromised as a result of this
feature. I've not even heard of small numbers being compromised as a
result of this feature.

I'm sure you will disagree. My suggestion is that if you believe this is
a security issue, you put together a proof of concept to demonstrate the
vulnerability - this is how such security issues get resolved.
Demonstrate how the security issue can be exploited with actual proof of
concept code rather than mere speculation and that will provide
something concrete which can be dealt with. I suspect you will find it
much harder to achieve once you actually try to make it work.

--
Tim Cross


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-23 19:20                     ` Jean Louis
  2020-11-24  7:55                       ` Ihor Radchenko
@ 2020-11-25  6:57                       ` Texas Cyberthal
  2020-11-25  9:51                         ` Jean Louis
  1 sibling, 1 reply; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-25  6:57 UTC (permalink / raw)
  To: Jean Louis; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

Hi Jean,

> Now, what is exomind?

https://cyberthal-docs.nfshost.com/cyborganize/exomind/

What you described is not how you think, it is how you wish your CRM
info retrieval system to perform conveniently.  Almost nobody has a
formal thought algorithm, because brains have ADD compared to
computers.

Textmind is a tool for general human text thoughts.  It's unspecialized.

If you have a huge number of incoming text of a special type, such as
customer leads, who are just cogs that you don't genuinely ponder,
then Textmind is the wrong tool for that job.  You need SME CRM
software.

Just common sense.  Combine harvester works "better" than a push
lawnmower, but everyone still needs a push lawnmower.

Ok, Textmind feels more like a riding lawnmower to me, because so
comfy, but also better detail work, like a wheedwhacker... and the
analogy falls apart.

> Contract signed between your company 123 and person ABC?

I might like a separate Textmind for a company.  If separate, then
file under ~/1-Mansort/1-Textmind/2-Linked/7-Name/2-Flat/Doe-John~.
Otherwise, sounds like something a relational database should handle.

> Image on which there is only your family member, not you, which has its date?

Same path, but ~/Surname-/Given-name~, and binaries are stored in Binmind.

> Image of you, with the date?

Same path, but ~/2-Me~.

- Image without date in the file name and not embedded?

Depends on image content.

- Software git tree related to mailing things?

~/1-Mansort/1-Textmind/2-Linked/2-Codex/~

Large physical keyboards are the best human to computer input device
for work and nothing on the horizon challenges that.  Keyboards are
spreading to more enterprise contexts, such as keyboards in cop cars,
as software eats everything.

> The other complete thought algorithm is Pubmind, for longform content.
> But it doesn't work without Textmind.

https://cyberthal-docs.nfshost.com/cyborganize/pubmind/

I suppose it takes Textmind+Pubmind to make a complete thought
algorithm.  Pubmind terminates in publications rather than action.
Pubmind is only necessary once Textmind starts growing clogged with
publications that no longer belong inside one's personal exomind.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25  5:06                         ` Jean Louis
@ 2020-11-25  7:00                           ` Tim Cross
  2020-11-25  8:23                             ` Security issues in Emacs packages Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Tim Cross @ 2020-11-25  7:00 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode


Jean Louis <bugs@gnu.support> writes:

> * Tim Cross <theophilusx@gmail.com> [2020-11-24 23:40]:
>> If people are really concerned about security, they should look first at
>> their use of repositories like MELPA. There is no formal review or
>> analysis of packages in these repositories, yet people will happily
>> select some package and install it.
>
> Interesting that you are one who mentions that. There are just few
> people ever mentioned it.
>
> I am still in process of the review of MELPA packages and its
> system. There are many security issues.
>
> Package signing is one example. It does not offer much of security
> when packages are signed automatically, but it raises level of
> security.
>
> MELPA packages and archive-contents are not PGP signed, while GNU ELPA
> packages are signed.
>

IMO signing of packages is irrelevant when there is no formal review
process or even any formal process to verify the credentials of
signatures. In fact, just adding signing would likely be
coutner-productive as it would give the impression of some sort of
security where there is none.

Basically, anyone can upload anything to MELPA. The only way anyone
would find out that an uploaded package has malicious code is if someone
does a code review and spots the malicious payload. Even once they find
that, there is little chance of being able to attribute the actions to
any individual because no real identity vetting is conducted. MELPA is
the wild west.

The new non-GNU repository has bene setup precisely due to both the
licensing issue and the fact many MELPA packages recommend/encourage the
use of non-free software/services. While non-GNU will improve this
situation, I don't believe there are any plans to actively review the
code in the packages. So, like MELPA, all you really have to go on is
package reputation. You cannot have any high level of confidence a
package does not contain malicious code other than an expectation that
if it is used by a sufficiently large enough number of users, it is
unlikely.

this is not an issue unique to Emacs. You only have to look at the
issues both Google's play store and Apples app store have had in the
past to see what the risks are. Both Google and Apple have put large
amounts of resources into trying to ensure their repository content is
safe and yet they still have failures. Something like GNU Emacs has
nowhere near the same resources, so is unlikely to come even close to
the same level of security.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Local variables issue - Re: One vs many directories
  2020-11-25  5:54                           ` Tim Cross
@ 2020-11-25  7:01                             ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-25  7:01 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode

* Tim Cross <theophilusx@gmail.com> [2020-11-25 08:54]:
> 
> Jean Louis <bugs@gnu.support> writes:
> 
> > Observing users who are asked questions upon invokation of other
> > software I can say that many times users just click one of the
> > options, either YES or NO, but without real regard to the
> > meanings. The purpose to click either YES or NO is to continue one
> > step forward and randomity decides later what happens.
> 
> You cannot prevent people from making bad decisions. Saying yes to
> something when you don't know what it means is like using the same
> weak password for everything. There has been massive amounts of
> communication and education out there to let people know about the
> risks. If they choose to ignore it or follow practices which are unsafe,
> it is their tough luck.

I do agree only that it is too general to apply here. That is specific
case of showing a dialogue with potential dangers to users who did not
specify those local variables and probably do not need such!

If you personally specify local variables you need them and know what
it is. That is fine.

It is general design that was meant for hackers in beginning stages of
Emacs development. Today many people use Emacs who may not be
hackers. Subset of those people will say YES to anything.

It is possible to prevent people to make bad decisions and it is easy,
simply don't ask them with the option to make bad decision. Disabling
local variables by default would be better decision.

I think that it is not possible today to change the default. Design is
flawed. From a view point of text editor should not ask user to
execute anything by default. User should enable "Local variables
detection" when user wish to get asked about executions.

> We need to encourage people to take more responsibility for their
> actions, not less.

I do fully agree on that statement, only it is too general and not
specific. I have presented my specific case how I have been answering
YES to that dialogue by thinking it is something necessary to read the
file properly. I had misunderstandings. Since some time I have the
general rule to answer NO on such dialogues. Would there be some
malicious intention in those years the intruder would be quite
successful.

One could fetch the external program and call it "general Emacs
enhancement" and open up a backdoor shell into the system.

To encourage people to take more responsibility is not necessarily
general principle for GNU Emacs.

And to encourage them alone will never work. To gain any
responsibility person needs knowledge or information. Driving car
without knowledge is impossible.

Thus pushing some kinds of responsibilities to user, coercing user to
decide on something that user does not understand itself lacks
one part of responsibility.

If user is informed what are local variables or is using them already
or reads manual and understands dangers, then user has acquired
knowledge to be able to reason when such dialogue pops up with YES or
NO. In general the answer YES can ruin your data and computing, and
users are not aware of it.

When somebody is not aware of what is doing that is not condition of
encouragement, rather condition of lack of responsibility.

> One important component of this is allowing the consequences for bad
> decisions to occur and not spend endless resources protecting people
> from themselves.

The YES/NO dialogue was invented by programmers and not by users. So
it was never an initial decision of the user who reads file from other
person, to be asked in the first place if something in that text file
should get executed.

It may also negatively impact Emacs's image as software:
https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=emacs

> If your asked to do something and your clearly told that doing so might
> be unsafe and your given an option not to do it which is just as easy to
> perform and you still decide to do it, that decision is on you.

Problem is with the assumption that user is "clearly told". I have
used Emacs since 1999 and I was all the time in scratch buffers and
did not really know it is for Emacs Lisp. I have been putting my notes
there. And I have ignored many functions of Emacs and used it to
program in other programming languages. Despite that I did read the
manual I did not clearly get information that there is programming
language built-in and it could execute any code. Despite knowing about
packages and installing them I did not know how it works. That is my
personal reality. I was playing tetris and I did not know it is
program that is loaded and executed. For me that was a built-in
feature, something that Richard Stallman and others invented and
built-in.

> The alternative is to remove extremely useful functionality from
> many responsible users because of an unknown number of others who
> make poor decisions.

Review that statement of yours again as you said what I am saying:
unknown number of others who make poor decisions.

Functionality need not be removed from Emacs to have or to design more
safer computing environment.

I have just opened new.txt file and used M-x
add-file-local-variable-prop-line only to verify how dialogue really
looks like:

The local variables list in new.txt
contains values that may not be safe (*).

Do you want to apply it?  You can type
y  -- to apply the local variables list.
n  -- to ignore the local variables list.
!  -- to apply the local variables list, and permanently mark these
      values (*) as safe (in the future, they will be set automatically.)

  * ivy-mode : 1

Then I switch from my programmers view point to let us say translator
view point. Translator who is introduced to Emacs as excellent text
editor and has to translate from German language to some other
language. Such translator would go through the Emacs tutorial and
learn how to open files, save files, use the keys. Translator cannot
possibly be expected to take any responsibilities for this dialogue as
translator that I know would never understand or be able to understand
what are these terms:

- "local" as in "local variables" would not be clear what it means local
  as there is no context that is understandable. Hacker and
  experienced user can understand it. Translator cannot. There is only
  general definition of "local" and that one does not apply to this
  context, one has to read the Emacs Manual fully to understand it and
  that is not what many people do when editing text.

- "variables" is programming term that translator is faced with and
  cannot possibly know what is meant with it. All what translator
  knows is that he go the file from other person and is now faced with
  the dialogue. There is no way for such person to responsibly make
  any decision, neither YES or NO. Translator will choose one of them
  to pass through the process, not to make the decision.

- "values" from the view point of translator is vague and cannot be
  understood. What values? Where?

- "may not be safe (*)" -- while symbol * may be used as reference
  this also may not be clear. Then what is "safe"? It is not clear
  from the dialogue context how that cannot be safe. Translator is
  sitting on computer and have been using typewriter and other
  computers for whole his life and will say "I was always safe" so why
  should it not be safe for me. And out of misunderstanding or protest
  will say YES to it.

- "Do you want to apply it?" -- to translator this is vague, as
  translator is not programmer but is faced with programming
  decisions that translator cannot understand. If translator wanted to
  open the file this may be understood as further approval to open the
  file. So if translator is opening the file, why would not translator
  like to apply it? Sure translator wants to apply it, damn YES!

- "to ignore the local variables list" -- means as well little and
  nothing to translator. Finally all that translator wanted is to open
  up text editor to translate the legal document hanging in front of
  him from German language to his local language and to earn some
  money. Such person may not be inclined to ignore things, damn YES!

- "!  -- to apply the local variables list, and permanently mark
  these" -- after several botherings translator may be inclined to not
  get bothered again, so let me ! do that, fine!

And after many such attempts translator may get bothered with the
dialogue that in the ends answers YES on any such dialogue.

I do understand that feature is built-in and files depend on it by
default. And while I support more safer solution, I do not support
that it should be removed as a default feature as it is for decades
late to design it safer.

But then this dialogue can be improved as it is very clear that
dialogue is handling possible security issue:
  
The local variables list in new.txt
contains values that may not be safe (*).

Do you want to apply it?  You can type
y  -- to apply the local variables list.
n  -- to ignore the local variables list.
!  -- to apply the local variables list, and permanently mark these
      values (*) as safe (in the future, they will be set automatically.)

  * ivy-mode : 1

Some words there can be hyperlinks to give knowledge to the user on
what is actually user deciding about, so various terms in the dialogue
can be hyperlinks to various parts in the manual. That way user may
get the real and straight access to information to make an informed
decision rather being left alone and called not responsible.

> Furthermore, keep in mind that this ability in Emacs has been around
> for longer than many users have been alive.

Yes, and that does not make it safer. My opinion is that it was bad
design for general public. Before 30 years there was not that many
users and people were in general much more interested in computing and
active computer use such as programming. Today the interest goes more
towards entertainment and passive computer use as that is what largest
corporations promote. The number of programmers did not increase
proportionally with the number of computers and computer users. We are
getting dumber as people, not smarter.

> I've been using it for nearly 30 years and have participated in many
> forums over that time. I have yet to hear of a single security
> incident occurring because of local variables.  That doesn't mean
> such incidents have not occurred, but it does likely mean they are
> rare.

That is hardly indication. When design is bad and something happens to
the user only those experienced and knowledgable will be able to reach
the forum or mailing list to report something like that.

If user is not knowledgable about local variables and already press
YES when it should be NO, then such user will never reach to report it
to you.

End of 1998 proprietary OS on my computer freezed. There was nothing
special going on, it just freezed and I had no other option but to
reset it. After the reset I could enter the system without any
problems or warnings and there was no file any more. While OS did
function files were not there and it was not nice to lose
files. Neither I have went to Internet, neither called anybody to
complain about that, just nothing, I was faced with condition outside
of control and did not know there could be helped to it. This would
happen to those who are affected by security flaws.




^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 18:58                     ` Jean Louis
  2020-11-25  6:39                       ` Tim Cross
@ 2020-11-25  8:10                       ` Dr. Arne Babenhauserheide
  2020-11-25  8:36                         ` Local variables liberties Jean Louis
  1 sibling, 1 reply; 121+ messages in thread
From: Dr. Arne Babenhauserheide @ 2020-11-25  8:10 UTC (permalink / raw)
  To: Jean Louis; +Cc: Diego Zamboni, Texas Cyberthal, emacs-orgmode, Ihor Radchenko

[-- Attachment #1: Type: text/plain, Size: 1556 bytes --]


Jean Louis <bugs@gnu.support> writes:

> * Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-24 21:51]:
>> 
>> Jean Louis <bugs@gnu.support> writes:
>> >> The start of the local variables list should be no more than 3000
>> >> > characters from the end of the file
>> >> 
>> >> 
>> >> Given the length of the email, I guess this is why Emacs saw the variables
>> >> as being within the correct range.
>> >
>> > Yes thank you. I was thinking Emacs will do that only in files where
>> > it recognizes some comments or no comments and that variables need
>> > to be pretty down in the file, on the bottom. Now I learn it is not
>> > so.
>> >
>> > That is security issue.
>> 
>> Why is it a security issue? The variables do need to be close to the end
>> — 3000 characters is only about 50 lines.
>
> Emacs users, Org users on our mailing lists are not so private. Their
> names and email addresses are in the public database. Spammer can
> construct phishing type of an email, including something like Org news
> or something and send such email to users. Among let us say 3000
> people there will be percentage of users that will say Y to invoke the
> local variables due to lack of knowing what is it doing to computer.

That isn’t what I meant with my question. What I meant is: Why is it a
security issue that the variable cannot only be at the exact end of the
file but instead can be in the last 3000 characters of the file?

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 18:54           ` Jean Louis
@ 2020-11-25  8:14             ` Dr. Arne Babenhauserheide
  2020-11-25  8:46               ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Dr. Arne Babenhauserheide @ 2020-11-25  8:14 UTC (permalink / raw)
  To: Jean Louis; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

[-- Attachment #1: Type: text/plain, Size: 1151 bytes --]


Jean Louis <bugs@gnu.support> writes:

> * Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-24 21:48]:
>> 
>> Jean Louis <bugs@gnu.support> writes:
>> 
>> > Some people maybe access multiple Org files through Agenda, me I
>> > don't. Some items are "non existent" and I do not know how to ask
>> > agenda to refresh itself.
>> 
>> Simply press the letter g.
>
> What function is on g on your side?

(org-agenda-redo-all &optional EXHAUSTIVE)

> I press g and I get error: invalid key g
>
>> For my own setup I run code in a hook to update the agenda whenever I
>> change a TODO state, clock in or clock out, but that has performance
>> problems when I do it while the Agenda is shown.
>
> That sounds that it will use computing power. 

Yes, it does, but it gives me the interaction I want.

> Thank you. I have plan
> to switch anything action related to database system and use Org to
> view tasks, not to handle or store them.

That might cost you reaction-time in the end, because org then cannot
just keep the file open.

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Security issues in Emacs packages
  2020-11-25  7:00                           ` Tim Cross
@ 2020-11-25  8:23                             ` Jean Louis
  2020-11-25  9:07                               ` tomas
  2020-11-25 22:46                               ` Tim Cross
  0 siblings, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-25  8:23 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode

* Tim Cross <theophilusx@gmail.com> [2020-11-25 10:01]:
> 
> Jean Louis <bugs@gnu.support> writes:
> 
> > * Tim Cross <theophilusx@gmail.com> [2020-11-24 23:40]:
> >> If people are really concerned about security, they should look first at
> >> their use of repositories like MELPA. There is no formal review or
> >> analysis of packages in these repositories, yet people will happily
> >> select some package and install it.
> >
> > Interesting that you are one who mentions that. There are just few
> > people ever mentioned it.
> >
> > I am still in process of the review of MELPA packages and its
> > system. There are many security issues.
> >
> > Package signing is one example. It does not offer much of security
> > when packages are signed automatically, but it raises level of
> > security.
> >
> > MELPA packages and archive-contents are not PGP signed, while GNU ELPA
> > packages are signed.
> >
> 
> IMO signing of packages is irrelevant when there is no formal review
> process or even any formal process to verify the credentials of
> signatures. In fact, just adding signing would likely be
> coutner-productive as it would give the impression of some sort of
> security where there is none.

When user receives a signed package from GNU ELPA, that means it comes
from GNU ELPA. If signed package is then distributed by mirrors or
other websites users who enable package signature verifications will
know that package still comes from GNU ELPA, and not from Chinese
distributor. If the package is tampered the signature verification
will not allow installation of the package.

Variable package-check-signature is not enabled by default and it is
due to similar issue just as local variables.

Users who seek to verify the credential of the signatures can do so in
human non-automated way as that is also how GnuPG instructions advise
users to do so. The GPG/PGP keys are in ~/.emacs.d/elpa/gnupg/ and
users can contact GNU ELPA maintainers and verify the signature. M-x
package-install will automatically verify signatures if the option
package-check-signature has been enabled.

That it does add to security shows the fact that GNU/Linux
distributions do sign packages. There is difference if the package
comes from trusted source or not trusted source. 

> Basically, anyone can upload anything to MELPA.

Maintainers verifies the package initially for certain conventions,
after that, how I have understood it, packages are automatically
pulled from Git. The more authors give packages to MELPA the more
insecurity probability is raised.

GNU ELPA how I understand it, I may be wrong, works like this:

1) packages are uploaded to GNU ELPA
2) then automatically signed by GNU ELPA PGP keys
3) offered for distribution

The point number (1) is human, not automated. Author decides when is
the package ripe for distribution and what is "release".

Git repository is never release and not meant to be "release". Git is
for collaborative development and users are made blind that it is some
kind of release while it is not. One shall always assume that Git
repository contains development versions not ready for public.

MELPA pulls those packages, correct me if I am wrong, automatically
from Git repositories without regard if the package is actually
release. That does not align or respect the established Emacs
conventions how packages should be released, if they are multi files
they should be in .tar file otherwise .el and there are version
numbers that MELPA fiddles with and makes possible conflicts and
introduces confusions.

In GNU ELPA authors decide when package is release ready and when
it should be released.

In MELPA authors only apply for their packages to be pulled out
automatically and offered for distribution.

Both repositories could be compromised but probability is becoming
larger and larger that by automatic pulling of packages something
worse happens.

MELPA cannot know possibly who is behind authors who offer those
packages for distribution and who has access or who may do something
malicious.

Some new similar package like angry-police-captain could serve for
potential attacks.

#+TITLE: <2020-10-23 Fri 18:28>  WTF angry-police-captain
#+AUTHOR: Jean Louis
- This should scrap information from a third party unknown website and
  show it in minibuffer. Function does not work, and yes, it is just
  one function inside. Good example of nonsensical
  "packages". *Deleted*

While similar packages can be made for entertainment they can be also
used to track users and save data that should not be saved. Update to
this package would not be checked by MELPA, and users who have enabled
it would continue using it. And package could suddenly start doing
something else. Author of the package could know how many users are
using it as package is actually fetching from their website. By
fetching the information from website the website can know many things
about those users such as their locations, operating system and
versions, etc. and could invoke specific malicious stuff for those
specific users including send different information to users by their
different location or other attributes.

For that reason MELPA's automatic pulling of packages and race to
offer "large package repository" is rather by its design detrimental
for future. I hope it will change, but currently that is unlikely.

> The only way anyone would find out that an uploaded package has
> malicious code is if someone does a code review and spots the
> malicious payload. Even once they find that, there is little chance
> of being able to attribute the actions to any individual because no
> real identity vetting is conducted. MELPA is the wild west.

Thank you for saying your observation.

> The new non-GNU repository has bene setup precisely due to both the
> licensing issue and the fact many MELPA packages recommend/encourage the
> use of non-free software/services. While non-GNU will improve this
> situation, I don't believe there are any plans to actively review the
> code in the packages.

For my personal uses I am reviewing packages and constructing list of
required packages that I may use and subset of my group would use.

There also exist possibility of annotation of packages or one could
make a feedback by users so that more things can be discovered about
packages. 

> So, like MELPA, all you really have to go on is package
> reputation. You cannot have any high level of confidence a package
> does not contain malicious code other than an expectation that if it
> is used by a sufficiently large enough number of users, it is
> unlikely.

Interpreting statistics is not for everyone. It would be nice that
users give a human feedback which can be used for package reputation.

If one counts "download statistics" that is incorrect to be used for
reputation.

If let us say imaginary, a package about angry-police-captain would
contain some malicious code, then if user cannot differentiate what is
reputation and download, then number of 1000+ downloads would be quite
convincing to load the package.

Download number is now used for reputation as it is currently the only
attribute that may be obtained.

> this is not an issue unique to Emacs. You only have to look at the
> issues both Google's play store and Apples app store have had in the
> past to see what the risks are.

Of course, I know that. That is why there is no Google on any of my
mobile phones as they run LineageOS operating system. I would switch
to Replicant would I have access to supported hardware. All our
clients and staff members are warned not to use the Google.

Do you think MELPA authors would act on these comments to change
something?



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Local variables liberties
  2020-11-25  8:10                       ` Dr. Arne Babenhauserheide
@ 2020-11-25  8:36                         ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-25  8:36 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide
  Cc: Diego Zamboni, Texas Cyberthal, emacs-orgmode, Ihor Radchenko

* Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-25 11:11]:
> 
> Jean Louis <bugs@gnu.support> writes:
> 
> > * Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-24 21:51]:
> >> 
> >> Jean Louis <bugs@gnu.support> writes:
> >> >> The start of the local variables list should be no more than 3000
> >> >> > characters from the end of the file
> >> >> 
> >> >> 
> >> >> Given the length of the email, I guess this is why Emacs saw the variables
> >> >> as being within the correct range.
> >> >
> >> > Yes thank you. I was thinking Emacs will do that only in files where
> >> > it recognizes some comments or no comments and that variables need
> >> > to be pretty down in the file, on the bottom. Now I learn it is not
> >> > so.
> >> >
> >> > That is security issue.
> >> 
> >> Why is it a security issue? The variables do need to be close to the end
> >> — 3000 characters is only about 50 lines.
> >
> > Emacs users, Org users on our mailing lists are not so private. Their
> > names and email addresses are in the public database. Spammer can
> > construct phishing type of an email, including something like Org news
> > or something and send such email to users. Among let us say 3000
> > people there will be percentage of users that will say Y to invoke the
> > local variables due to lack of knowing what is it doing to computer.
> 
> That isn’t what I meant with my question. What I meant is: Why is it a
> security issue that the variable cannot only be at the exact end of the
> file but instead can be in the last 3000 characters of the file?

Not that I really answered on that meaning. In that meaning I find it
troublesome that Local variables will work by formatting of any kind

Example would be when there are OTHER things intertwined with local
variables. The file with this text below still works, and it is not
necessary that it works in that way. My eye goes to the end of
file. My expectation is not that local variables work anywhere in the
file just by counting number of characters as such ends of files can
look any how, formatting is too free and I would make it rigid that
users can look with their eyes easily to where those local variables
really are.

I would rather support that Local variables cannot start in the column
like 10, maybe they can start in column up to 5th or something similar
and that their End: cannot be longer then few lines from the bottom
and to be highlighted by default.


Some file

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam
lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam
viverra nec consectetur ante hendrerit. Donec et mollis
dolor. Praesent et diam eget libero egestas mattis sit amet vitae
augue. Nam tincidunt congue enim, ut porta lorem lacinia
consectetur. Donec ut libero sed arcu vehicula ultricies a non                                                                      Local Variables:
consectetur. Donec ut libero sed arcu vehicula ultricies a non                                                                      ivy-mode: 1
consectetur. Donec ut libero sed arcu vehicula ultricies a non                                                                      End:
tortor. Lorem ipsum dolor sit amet, consectetur adipiscing                                                                          ivy-mode: 1
elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed,                                                              End:
adipiscing id dolor. Pellentesque auctor nisi id magna consequat                      
sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt
feugiat nisl imperdiet. Ut convallis libero in urna ultrices
accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at
malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis
parturient montes, nascetur ridiculus mus. In rutrum accumsan
ultricies. Mauris vitae nisi at sem facilisis semper ac in est.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25  8:14             ` Dr. Arne Babenhauserheide
@ 2020-11-25  8:46               ` Jean Louis
  2020-11-25 11:46                 ` Ihor Radchenko
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25  8:46 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

* Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-25 11:14]:
> 
> Jean Louis <bugs@gnu.support> writes:
> 
> > * Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-24 21:48]:
> >> 
> >> Jean Louis <bugs@gnu.support> writes:
> >> 
> >> > Some people maybe access multiple Org files through Agenda, me I
> >> > don't. Some items are "non existent" and I do not know how to ask
> >> > agenda to refresh itself.
> >> 
> >> Simply press the letter g.
> >
> > What function is on g on your side?
> 
> (org-agenda-redo-all &optional EXHAUSTIVE)

When I do C-c a it runs (org-agenda) but I do not have "g" and I am on
development version. The C-c a window is made so that I cannot go with
cursor inside and that I cannot even expect the key map neither invoke
command by M-x and I cannot even M-:

All that is wrong and not aligned to Emacs common interface. It is bug
that bugs. Agenda buffer should allow users those standard Emacs
features.

> > Thank you. I have plan to switch anything action related to
> > database system and use Org to view tasks, not to handle or store
> > them.
> 
> That might cost you reaction-time in the end, because org then cannot
> just keep the file open.

Do you mean my reaction time or Org reaction time? I did not
understand about to keep file open, how do you mean?

You remember I said Org files with tasks are on my side almost always
related to some people, among them I am included. So I find Org file
per person in the directory wherever it is by clicking F4. Then task
list in the Org file would update itself as I have got the tip on how
to execute the SQL block. Do you mean that SQL block would cost me
reaction time? If so, that can be. In the Hyperscope database managed
by Emacs and displayed within tabulated-list-mode on this T410
Thinkpad the list of entries looks almost instant, I just press left
or right and I get new list. Each time there is SQL query.

Without you telling me I would not be thinking on that, but it is
true, the larger or more complex the query then it could be
processing.

But if there is large list of tasks not done, that means anyway that
something is terribly wrong with it.

Those tasks done, can appear under different heading. But then I
cannot selectively automatically execute block under one heading at
file opening time while not executing block under different heading.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-25  8:23                             ` Security issues in Emacs packages Jean Louis
@ 2020-11-25  9:07                               ` tomas
  2020-11-25  9:26                                 ` Jean Louis
  2020-11-25 22:46                               ` Tim Cross
  1 sibling, 1 reply; 121+ messages in thread
From: tomas @ 2020-11-25  9:07 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 167 bytes --]

On Wed, Nov 25, 2020 at 11:23:27AM +0300, Jean Louis wrote:

[...]

> [...] and not from Chinese distributor [...]

I think this was an unnecessary slur.

Cheers
 - t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-25  9:07                               ` tomas
@ 2020-11-25  9:26                                 ` Jean Louis
  2020-11-25 10:41                                   ` tomas
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25  9:26 UTC (permalink / raw)
  To: tomas; +Cc: emacs-orgmode

* tomas@tuxteam.de <tomas@tuxteam.de> [2020-11-25 12:08]:
> On Wed, Nov 25, 2020 at 11:23:27AM +0300, Jean Louis wrote:
> 
> [...]
> 
> > [...] and not from Chinese distributor [...]
> 
> I think this was an unnecessary slur.

Why, there is legitimate mirror in China.

I did not mean nothing wrong with it. I hope nobody gets offended.

I was just thinking on mirrors like when using /etc/apt/sources.list
on Debian GNU/Linux and sources come from let us say "Digital Ocean"
servers. It is not official mirror of Debian, but if packages are
signed by Debian keys then I do not mind as I know they are not
tampered.

I hope I have expressed myself now more clear.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25  6:57                       ` Texas Cyberthal
@ 2020-11-25  9:51                         ` Jean Louis
  2020-11-25 10:39                           ` Texas Cyberthal
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25  9:51 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-25 09:58]:
> Hi Jean,
> 
> > Now, what is exomind?
> 
> https://cyberthal-docs.nfshost.com/cyborganize/exomind/

How I like those thoughts. 

> Mind vs brain 
> Your brain is the squishy jelly between your ears. 
> Your mind is what disappears when that jelly gets shaken too hard by
> a punch.

There are those who die and come back and view things from above and
can think and use their mind even though brain was turned off
temporarily.

> Exomind — an individual's PIMS and the personal info it contains. One
> can wax philosophical about how far the exomind extends into situated
> cognition. Perhaps the Internet is a shared global exomind. Anyway,
> Cyborganize is a personal exomind.

I just get idea how exoskelet does that.

You also spoke of device, do you really mean physical device?

> What you described is not how you think, it is how you wish your CRM
> info retrieval system to perform conveniently.  Almost nobody has a
> formal thought algorithm, because brains have ADD compared to
> computers.

I cannot get it as I do not know what is ADD.

> If you have a huge number of incoming text of a special type, such
> as customer leads, who are just cogs that you don't genuinely
> ponder, then Textmind is the wrong tool for that job.  You need SME
> CRM software.

But I have M-x already that works.

Thank you for examples of file sorting with 10 Bins.

> https://cyberthal-docs.nfshost.com/cyborganize/pubmind/

Thank you, I was reading.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* org-sbe to automate some source block executions
  2020-11-24  9:45         ` Eric S Fraga
  2020-11-24  9:51           ` Jean Louis
@ 2020-11-25 10:19           ` Jean Louis
  2020-11-25 11:39             ` Ihor Radchenko
  2020-11-25 11:46           ` One vs many directories Jean Louis
  2 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25 10:19 UTC (permalink / raw)
  To: Ihor Radchenko, Texas Cyberthal, emacs-orgmode

* Eric S Fraga <e.fraga@ucl.ac.uk> [2020-11-24 12:46]:
> On Tuesday, 24 Nov 2020 at 12:00, Jean Louis wrote:
> > Can I automated the execution of Babel code upon opening of the Org
> > file?
> 
> You can, by using file local variables.  For instance, for some files, I
> do this:
> 
> #+begin_src org
>   ,* local variables                         :noexport:
>   # Local Variables:
>   # eval: (org-sbe "startup")
>   # End:
> #+end_src
> 
> which will evaluate the named src block "startup" when file is
> opened.

I am trying to implement it, do you see here anything below that I am
doing wrong? Error is that it cannot find source block stages

** Stages
   
#+BEGIN_SRC sql :var results=stages :engine postgresql :exports results
SELECT -- salesflowstages_priority AS "Priority", 
       salesflowstages_publicstage AS "Development Stages" --,
--       salesflowstages_description AS "Description" 
FROM salesflowstages
WHERE salesflowstages_salesflows = 1 
ORDER BY salesflowstages_priority ASC
#+END_SRC

# Local Variables:
# eval: (org-sbe "stages")
# End:


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25  9:51                         ` Jean Louis
@ 2020-11-25 10:39                           ` Texas Cyberthal
  2020-11-25 11:02                             ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-25 10:39 UTC (permalink / raw)
  To: Jean Louis; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

Hi Jean,

> There are those who die and come back and view things from above and can think and use their mind even though brain was turned off temporarily.

I didn't say that the mind always turns off when the brain is damaged.

> You also spoke of device, do you really mean physical device?

Brain-Computer Interface is a term that usually means an
electromagnetic connection between nerves and electronics.  However,
really a keyboard is a superior version of that for non-motor tasks,
despite being insulated on both ends with skin and plastic.  Human
fingers are amazingly dextrous, so their bandwidth is high.
Eventually mammalian brain plasticity will permit implants to surpass
keyboards, but that will take a while and might require implantation
as a child to achieve maximum results.  The generational technology
gap moves ever inward, towards our very genes.  Obsolete thyself to
perpetuate thy meme-ery.

> I cannot get it as I do not know what is ADD.

Attention Deficit Disorder

> But I have M-x already that works.

Because you built your own SME CRM.  My point is that an SME CRM
should probably be a separate entity from a Textmind.  Their purposes
conflict.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-25  9:26                                 ` Jean Louis
@ 2020-11-25 10:41                                   ` tomas
  0 siblings, 0 replies; 121+ messages in thread
From: tomas @ 2020-11-25 10:41 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 800 bytes --]

On Wed, Nov 25, 2020 at 12:26:11PM +0300, Jean Louis wrote:
> * tomas@tuxteam.de <tomas@tuxteam.de> [2020-11-25 12:08]:
> > On Wed, Nov 25, 2020 at 11:23:27AM +0300, Jean Louis wrote:
> > 
> > [...]
> > 
> > > [...] and not from Chinese distributor [...]
> > 
> > I think this was an unnecessary slur.
> 
> Why, there is legitimate mirror in China.
> 
> I did not mean nothing wrong with it. I hope nobody gets offended.

I'm not. I don't assume (even suspect) bad intention at all.
And I don't want to make a state affair of it. I just wanted
to mirror the metaphor you used ("Chinese distributor" as
"untrusted instance") which seems somewhat problematic. We
all do this, myself not the least. I'm happy whenever someone
points that out to me.

That's all :-)

Cheers
 - t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25 10:39                           ` Texas Cyberthal
@ 2020-11-25 11:02                             ` Jean Louis
  2020-11-26 16:04                               ` Texas Cyberthal
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25 11:02 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-25 13:40]:
> > You also spoke of device, do you really mean physical device?
> 
> Brain-Computer Interface is a term that usually means an
> electromagnetic connection between nerves and electronics.  However,
> really a keyboard is a superior version of that for non-motor tasks,
> despite being insulated on both ends with skin and plastic.

hahahha you are right

> Because you built your own SME CRM.  My point is that an SME CRM
> should probably be a separate entity from a Textmind.  Their
> purposes conflict.

Really, but for me those similarities extend each other. Not that I am
sorting files by Textmind but I do have similar method in sorting
files. You sort files by tags in a hierachy, that is the concept of
Textmind. How tags are called or how they relate to each other is then
rather implementation.

Anyway I wish to know more of that, subscribe me to your mailing
list. In last days I got more ideas than I was thinking I will, all
from this Org mailing list.

And now slowly I start implementing.

I like Org but I also like more structured data.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: org-sbe to automate some source block executions
  2020-11-25 10:19           ` org-sbe to automate some source block executions Jean Louis
@ 2020-11-25 11:39             ` Ihor Radchenko
  2020-11-25 15:06               ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-25 11:39 UTC (permalink / raw)
  To: Jean Louis, Texas Cyberthal, emacs-orgmode

> I am trying to implement it, do you see here anything below that I am
> doing wrong? Error is that it cannot find source block stages

You should assign a name to your source block. Also, I am clueless why
you need a variable ":var results=stages". You should probably do
something like the following:

** Stages

#+name: stages   
#+BEGIN_SRC sql :engine postgresql :exports results
SELECT -- salesflowstages_priority AS "Priority", 
       salesflowstages_publicstage AS "Development Stages" --,
--       salesflowstages_description AS "Description" 
FROM salesflowstages
WHERE salesflowstages_salesflows = 1 
ORDER BY salesflowstages_priority ASC
#+END_SRC

# Local Variables:
# eval: (org-sbe "stages")
# End:

Best,
Ihor


Jean Louis <bugs@gnu.support> writes:

> * Eric S Fraga <e.fraga@ucl.ac.uk> [2020-11-24 12:46]:
>> On Tuesday, 24 Nov 2020 at 12:00, Jean Louis wrote:
>> > Can I automated the execution of Babel code upon opening of the Org
>> > file?
>> 
>> You can, by using file local variables.  For instance, for some files, I
>> do this:
>> 
>> #+begin_src org
>>   ,* local variables                         :noexport:
>>   # Local Variables:
>>   # eval: (org-sbe "startup")
>>   # End:
>> #+end_src
>> 
>> which will evaluate the named src block "startup" when file is
>> opened.
>
> I am trying to implement it, do you see here anything below that I am
> doing wrong? Error is that it cannot find source block stages
>
> ** Stages
>    
> #+BEGIN_SRC sql :var results=stages :engine postgresql :exports results
> SELECT -- salesflowstages_priority AS "Priority", 
>        salesflowstages_publicstage AS "Development Stages" --,
> --       salesflowstages_description AS "Description" 
> FROM salesflowstages
> WHERE salesflowstages_salesflows = 1 
> ORDER BY salesflowstages_priority ASC
> #+END_SRC
>
> # Local Variables:
> # eval: (org-sbe "stages")
> # End:


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24  9:45         ` Eric S Fraga
  2020-11-24  9:51           ` Jean Louis
  2020-11-25 10:19           ` org-sbe to automate some source block executions Jean Louis
@ 2020-11-25 11:46           ` Jean Louis
  2020-11-25 13:07             ` Eric S Fraga
  2020-11-25 13:12             ` Ihor Radchenko
  2 siblings, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-25 11:46 UTC (permalink / raw)
  To: Ihor Radchenko, Texas Cyberthal, emacs-orgmode

* Eric S Fraga <e.fraga@ucl.ac.uk> [2020-11-24 12:46]:
> On Tuesday, 24 Nov 2020 at 12:00, Jean Louis wrote:
> > Can I automated the execution of Babel code upon opening of the Org
> > file?
> 
> You can, by using file local variables.  For instance, for some files, I
> do this:
> 
> #+begin_src org
>   ,* local variables                         :noexport:
>   # Local Variables:
>   # eval: (org-sbe "startup")
>   # End:
> #+end_src

I have got it to work as I had to name the source block. It does
evaluates and I get the result in the message buffer, but it does not
expands in the Org buffer. That is what I wish to find out how.

** Stages
#+NAME: stages   
#+BEGIN_SRC sql :engine postgresql :exports results :results replace
SELECT 1 AS table;
#+END_SRC

# Local Variables:
# eval: (org-sbe "stages")
# End:


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25  8:46               ` Jean Louis
@ 2020-11-25 11:46                 ` Ihor Radchenko
  2020-11-26 12:47                   ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-25 11:46 UTC (permalink / raw)
  To: Jean Louis, Dr. Arne Babenhauserheide; +Cc: Texas Cyberthal, emacs-orgmode

> When I do C-c a it runs (org-agenda) but I do not have "g" and I am on
> development version. The C-c a window is made so that I cannot go with
> cursor inside and that I cannot even expect the key map neither invoke
> command by M-x and I cannot even M-:

C-c a will first show so-called agenda dispatcher asking you what kind
of agenda view you want to get. You need to press a key according to
the popup window (i.e. `t' to see all not done items). Then, you will
get the proper agenda buffer with all the keymaps set and `g' bound to
refreshing the chosen agenda view in the buffer.

> All that is wrong and not aligned to Emacs common interface. It is bug
> that bugs. Agenda buffer should allow users those standard Emacs
> features.

I am wondering what is the common Emacs interface you refer to. I am not
aware about any standard way to prompt user while also showing detailed
description of what to expect from different choices.

Best,
Ihor

Jean Louis <bugs@gnu.support> writes:

> * Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-25 11:14]:
>> 
>> Jean Louis <bugs@gnu.support> writes:
>> 
>> > * Dr. Arne Babenhauserheide <arne_bab@web.de> [2020-11-24 21:48]:
>> >> 
>> >> Jean Louis <bugs@gnu.support> writes:
>> >> 
>> >> > Some people maybe access multiple Org files through Agenda, me I
>> >> > don't. Some items are "non existent" and I do not know how to ask
>> >> > agenda to refresh itself.
>> >> 
>> >> Simply press the letter g.
>> >
>> > What function is on g on your side?
>> 
>> (org-agenda-redo-all &optional EXHAUSTIVE)
>
> When I do C-c a it runs (org-agenda) but I do not have "g" and I am on
> development version. The C-c a window is made so that I cannot go with
> cursor inside and that I cannot even expect the key map neither invoke
> command by M-x and I cannot even M-:
>
> All that is wrong and not aligned to Emacs common interface. It is bug
> that bugs. Agenda buffer should allow users those standard Emacs
> features.
>
>> > Thank you. I have plan to switch anything action related to
>> > database system and use Org to view tasks, not to handle or store
>> > them.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Local variables insecurities - Re: One vs many directories
  2020-11-25  6:39                       ` Tim Cross
@ 2020-11-25 12:38                         ` Jean Louis
  2020-11-25 13:05                           ` Eric S Fraga
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25 12:38 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode

* Tim Cross <theophilusx@gmail.com> [2020-11-25 09:41]:
> >> Why is it a security issue? The variables do need to be close to the end
> >> — 3000 characters is only about 50 lines.
> >
> > Emacs users, Org users on our mailing lists are not so private. Their
> > names and email addresses are in the public database. Spammer can
> > construct phishing type of an email, including something like Org news
> > or something and send such email to users. Among let us say 3000
> > people there will be percentage of users that will say Y to invoke the
> > local variables due to lack of knowing what is it doing to computer.
> >
> > After that, anything becomes possible, including intrusion into
> > computer, capturing all email addresses, passwords, sending spam
> > emails from computer and so on.
> 
> this is just baseless fear mongering based on nothing but
> speculation.

My experience with such people come from last more than 25
years. CVE list is the reference I already quotes. Some thing were
improved like this:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=684695

So one should know how dangerous it was to introduce local variables
with possibility to automatically eval anything there.

> Of your suggested 3000 users, only a very small percentage use Emacs as
> their mail client.

Those which I know through Emacs list mostly use it. I am using it. Is
there any way to know who use and who not?

In general I am reading emails with Mutt, but I am answering with
Emacs. Sending emails is often by Emacs or by Mutt. I use sometimes
M-x rmail as well

> Of those, only an even smaller number will have their mail client
> configured to render messages with a mode that supports local

I have not configured anything. In fact I have opened the email and I
was surprised that I am getting those dialogues to execute local
variables. And I an in mail-mode now. Mutt opens new emacsclient and I
edit the file.

Obviously user does not need to configure anything. You maybe refer to
specific mode where it does not execute.

It will try to execute even if I open .TXT file.

The very design of Local variables I do not find trustful for these
explained reasons. I do not protest against it as now is too late, but
as I mentioned more educational references could be provided in the
dialogue that asks user to execute local variables or not.

> variables and even a smaller number of those would say yes to
> executing the code. In fact, anyone who has gone to the extent of
> configuring their Emacs email client to open messages with a mime
> type of x-org (or even just based on an attachment with *.org in the
> file name) is more than likely to be sufficiently technically aware
> not to say yes when asked.

I do not need to configure emacs to anything to get the local variable
execution dialogue, verify it on your side.

I can basically get any attachments by email, try to view them in
Emacs and it will execute.

> Few, if any user, is going to download some random attachment in an
> email message

Sorry, but I have no choice but to download all attachments. Majority
of email clients do not offer choice to download specific attachments
they download whole message as one.

> open it in emacs and then say yes to a message warning them that
> doing so might be dangerous.

It does not warn to be dangerous. There is no word of danger in the
dialogue.

I would rather like the dialogue to does what you say but it does not,
I would prefer it like this:

                 ===========
		  DANGEROUS
		 ===========

But it is not like that, and I have elaborated why it is not like
that. Text writers are not programmers. You assume that every user
starts from your viewpoint of 30 years experienced Emacs wizard. And I
am speaking of design view point. Emacs is still called "editor"
today.

The description of Emacs I get in Hyperbola GNU/Linux-libre is:

The extensible, customizable, self-documenting real-time display
editor, without D-Bus support

Nowhere it says in the description that it can potentially expose me
to malicious evaluations of software just by opening a text file. That
you know what Emacs is really and me too, it does not make it more
secure.

We make assumptions that we will know that users will be safe, but
that is wrong assumption and there would be no CVE as I have already
referenced it it it would be so.

> Such ill-informed users have been pretty much weeded out by all the
> other scam phishing out there by now.

I would not say so. As non-native English speaker to say for users
that they are ill-informed sounds to me not appropriate. We invite
users to use Emacs, they will download, open, and may be offered to
read the ebook or other interesting text, and text will ask them to
evaluate the variables. You say that the subset of those users who
will know what is "variable", "value", "evaluation", "safe" is small
and not important, and I think this is most important for the future
of next 100 years for Emacs being useful to many people. For that
reason I cannot call such users ill-informed, rather not informed and
coerced into decisions which they are not able to take as they are not
informed.

> To convince them to go through such steps would require some pretty
> convincing content - a simple org news attachment or similar is
> unlikely to do it.

Maybe you get informed, that is very easy, easier than you
think. There are many ways to do that and that is very simple by
tricking users, as Emacs related mailing lists are harvested and from
time to time users can be sent emails and emails can offer them
themes, programs, to trick them. It is very easy to convince users.

Examples from other computing areas on how users are tricked:
https://news.softpedia.com/news/Facebook-Users-Tricked-into-Loading-Malicious-Code-in-Their-Browsers-146604.shtml

https://techcrunch.com/2019/08/16/android-users-tricked-adware-apps/

https://www.independent.co.uk/life-style/gadgets-and-tech/news/google-chrome-adblocker-fake-download-scam-users-tricked-adblock-plus-extension-a7992711.html

https://www.dailymail.co.uk/sciencetech/article-4682528/Facebook-users-tricked-sharing-hoax-message.html

https://www.offthegridnews.com/privacy/facebook-users-give-personal-data/

> Even if you do get them to say yes, they are still a long way from
> being able to compromise the computer Emacs is running on.

I cannot be sure to what you refer. If email is sent to 10,000 people
there will be subset of people who will say yes, and what is
programmed in the local variables could be anything.

> Gaining some level of access is one thing, actually being able to do
> something with that access is another. Trying to compromise a
> computer, which these days typically involves privilege escalation,
> would be extremely difficult to achieve with elisp.

Fetch from Internet and execute. That is what majority of intruders
do. If you are not intruder you cannot know. There are rootkits
everywhere on Internet. Fetch and execute. Sometimes simpler than that.

> The best you could hope for would be to install a trojan or back
> door what would allow the attacker to install other tools. Could be
> possible, but is definitely non-trivial.

Exactly. Experience over 18 years with server administration tells me
about that. 

> This ability has been around in Emacs for a very long time - more than
> 30 years, possibly even longer. There has not been a single recorded
> incident of large number of users being compromised as a result of this
> feature.

Also the intrustions that have taken place on hosting servers I have
not reported anywhere. It is not relevant really and I have explained
that when intrusion does happen user may not go to report to the list
or connect to experienced hackers. On the other hand user is faced
with a dialogue that requires user to know what is programming,
variable, value and safe. Users do not know.

Today I was watching Ralph that broke the Internet and somebody
mentioned to him "safe" and he said he feels safe. That reminds me of
that dialogue. Something contains values that may not be safe? Well I
am safe, damn YES.

When expressing "safe" one has to say about the context, safe from
what? 

> I've not even heard of small numbers being compromised as a result
> of this feature.

You can as well make program popular and root and need not hear of it
ever. There is plethora of programs that one does not hear of it, why
should you hear of it? When there is really good way to intrude into
people's computers those are not published for everybody to
know. Facebook data was downloaded continually by intruders back in
time. I remember before 16 years a simple website that I reference to
a friend in the same room could give me access to all his files. It
was amuzing. Today there are many problems with Javascript and Emacs
is just maybe not so wide spread to invoke public incidents. The CVE
list should be enough to say that there are security incidents coming
again and again.

> I'm sure you will disagree. My suggestion is that if you believe
> this is a security issue, you put together a proof of concept to
> demonstrate the vulnerability - this is how such security issues get
> resolved.

Just put eval: do anything malicious. That is simplest. Fetch URL,
save, chmod, execute. Anything can be there. 

> Demonstrate how the security issue can be exploited with actual
> proof of concept code rather than mere speculation and that will
> provide something concrete which can be dealt with. I suspect you
> will find it much harder to achieve once you actually try to make it
> work.

Well, you say so, but this one worked pretty well:

# Local Variables:
# eval: (progn (delete-file "/tmp/new/new") (message "Done"))
# End:

I could as well send files to myself by using their email system
whatever is there like mail, mailx, mutt, maybe Emacs stuff as
well. Or I could send me their password store, I could get
~/.authinfo, or maybe even test if sudo works without password and
then place my insecure DNS servers and redirect to phishing
websites. Just anything becomes possible with Emacs variables.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-25 12:38                         ` Local variables insecurities - " Jean Louis
@ 2020-11-25 13:05                           ` Eric S Fraga
  2020-11-25 13:13                             ` Jean Louis
  2020-11-26  8:39                             ` Christian Moe
  0 siblings, 2 replies; 121+ messages in thread
From: Eric S Fraga @ 2020-11-25 13:05 UTC (permalink / raw)
  To: Jean Louis; +Cc: Tim Cross, emacs-orgmode

On Wednesday, 25 Nov 2020 at 15:38, Jean Louis wrote:
> I have not configured anything. In fact I have opened the email and I
> was surprised that I am getting those dialogues to execute local
> variables. 

Very strange.  It was my email that instigated this part of the
thread.  I can view my email and I do not get asked to set any locate
variables or, in this case, evaluate the elisp expression.  Out of
curiosity, what mail reader did you use that actually interprets file
local variables?  Gnus article view does not.

-- 
: Eric S Fraga via Emacs 28.0.50, Org release_9.4-118-g2a4578.dirty


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25 11:46           ` One vs many directories Jean Louis
@ 2020-11-25 13:07             ` Eric S Fraga
  2020-11-25 13:14               ` Jean Louis
  2020-11-25 13:12             ` Ihor Radchenko
  1 sibling, 1 reply; 121+ messages in thread
From: Eric S Fraga @ 2020-11-25 13:07 UTC (permalink / raw)
  To: Jean Louis; +Cc: Texas Cyberthal, emacs-orgmode, Ihor Radchenko

On Wednesday, 25 Nov 2020 at 14:46, Jean Louis wrote:
> I have got it to work as I had to name the source block. 

Yes, org-sbe looks for the first source block with the name
given.  Nothing to do with headings etc.

> It does evaluates and I get the result in the message buffer, but it
> does not expands in the Org buffer. That is what I wish to find out
> how.

What do you get on the same src block if you explicitly C-c C-c there?

-- 
: Eric S Fraga via Emacs 28.0.50, Org release_9.4-118-g2a4578.dirty


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25 11:46           ` One vs many directories Jean Louis
  2020-11-25 13:07             ` Eric S Fraga
@ 2020-11-25 13:12             ` Ihor Radchenko
  2020-11-25 13:32               ` Jean Louis
  1 sibling, 1 reply; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-25 13:12 UTC (permalink / raw)
  To: Jean Louis, Texas Cyberthal, emacs-orgmode


> ... It does
> evaluates and I get the result in the message buffer, but it does not
> expands in the Org buffer.

It is expected behaviour. According to the docstring of org-sbe, it only
returns the value, but does not actually change buffer.

If you want to replace the RESULTS, you need to use the following:

# Local Variables:
# eval: (let ((pos (org-babel-find-named-block "stages"))) (when pos (save-excursion (org-with-point-at pos (org-babel-execute-src-block)))))
# End:

Best,
Ihor


Jean Louis <bugs@gnu.support> writes:

> * Eric S Fraga <e.fraga@ucl.ac.uk> [2020-11-24 12:46]:
>> On Tuesday, 24 Nov 2020 at 12:00, Jean Louis wrote:
>> > Can I automated the execution of Babel code upon opening of the Org
>> > file?
>> 
>> You can, by using file local variables.  For instance, for some files, I
>> do this:
>> 
>> #+begin_src org
>>   ,* local variables                         :noexport:
>>   # Local Variables:
>>   # eval: (org-sbe "startup")
>>   # End:
>> #+end_src
>
> I have got it to work as I had to name the source block. It does
> evaluates and I get the result in the message buffer, but it does not
> expands in the Org buffer. That is what I wish to find out how.
>
> ** Stages
> #+NAME: stages   
> #+BEGIN_SRC sql :engine postgresql :exports results :results replace
> SELECT 1 AS table;
> #+END_SRC
>
> # Local Variables:
> # eval: (org-sbe "stages")
> # End:


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-25 13:05                           ` Eric S Fraga
@ 2020-11-25 13:13                             ` Jean Louis
  2020-11-25 13:58                               ` Eric S Fraga
  2020-11-26  8:39                             ` Christian Moe
  1 sibling, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25 13:13 UTC (permalink / raw)
  To: Tim Cross, emacs-orgmode

* Eric S Fraga <e.fraga@ucl.ac.uk> [2020-11-25 16:06]:
> On Wednesday, 25 Nov 2020 at 15:38, Jean Louis wrote:
> > I have not configured anything. In fact I have opened the email and I
> > was surprised that I am getting those dialogues to execute local
> > variables. 
> 
> Very strange.  It was my email that instigated this part of the
> thread.  I can view my email and I do not get asked to set any locate
> variables or, in this case, evaluate the elisp expression.  Out of
> curiosity, what mail reader did you use that actually interprets file
> local variables?  Gnus article view does not.

I use Mutt.

The message is opened in Emacs in mail-mode

Then I have been testing and even text files invoke local variables.

When I send messages I often send it from Emacs, but that is different
subject.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25 13:07             ` Eric S Fraga
@ 2020-11-25 13:14               ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-25 13:14 UTC (permalink / raw)
  To: Ihor Radchenko, Texas Cyberthal, emacs-orgmode

* Eric S Fraga <e.fraga@ucl.ac.uk> [2020-11-25 16:08]:
> On Wednesday, 25 Nov 2020 at 14:46, Jean Louis wrote:
> > I have got it to work as I had to name the source block. 
> 
> Yes, org-sbe looks for the first source block with the name
> given.  Nothing to do with headings etc.
> 
> > It does evaluates and I get the result in the message buffer, but it
> > does not expands in the Org buffer. That is what I wish to find out
> > how.
> 
> What do you get on the same src block if you explicitly C-c C-c there?

I get results in the buffer. That is what I would like, to get
expanded results in the buffer upon opening of the Org file.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25 13:12             ` Ihor Radchenko
@ 2020-11-25 13:32               ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-25 13:32 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-25 16:16]:
> 
> > ... It does
> > evaluates and I get the result in the message buffer, but it does not
> > expands in the Org buffer.
> 
> It is expected behaviour. According to the docstring of org-sbe, it only
> returns the value, but does not actually change buffer.
> 
> If you want to replace the RESULTS, you need to use the following:
> 
> # Local Variables:
> # eval: (let ((pos (org-babel-find-named-block "stages"))) (when pos (save-excursion (org-with-point-at pos (org-babel-execute-src-block)))))
> # End:

That works well, thank you for the tip.

Of course I will not be writing all that by hand, program would simply
invoke the creation and generation of Org file and write headings and
the local variables. Next time I open the Org file related to that
person I can see all the pending tasks or tasks done with hyperlinks
to their corresponding actual tracking places in the database.

I have already made the function to capture Org tasks into the
database, concept is here:

(defun hyperscope-capture-org-heading ()
  "Captures Org heading and stores it in the Hyperscope dynamic
  knowledge repository"
  (interactive)
  (let* ((body (org-copy-subtree nil nil nil t))
	 (body (pop kill-ring))
	 (body (org-no-properties body))
	 (heading (org-get-heading))
	 (created (org-property-values "CREATED"))
	 (date (if created (substring (car created) 1 11) nil))
	 (body (with-temp-buffer
		 (insert body)
		 (org-mode)
		 (org-back-to-heading)
		 (kill-line)
		 (delete-matching-lines ":PROPERTIES:")
		 (delete-matching-lines ":CREATED:")
		 (delete-matching-lines ":ID:")
		 (delete-matching-lines ":END:")
		 (buffer-string))))
    (hyperscope-add-note-to-set heading body date)))

So I am now transitioning all Org tasks into little bit different and
more streamlined system for me personally.

Nevertheless, when I use a browser I can still use org-capture and
later just parse all headings automatically and insert into the
database.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-25 13:13                             ` Jean Louis
@ 2020-11-25 13:58                               ` Eric S Fraga
  2020-11-25 14:07                                 ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Eric S Fraga @ 2020-11-25 13:58 UTC (permalink / raw)
  To: Jean Louis; +Cc: Tim Cross, emacs-orgmode

On Wednesday, 25 Nov 2020 at 16:13, Jean Louis wrote:
> I use Mutt.
> The message is opened in Emacs in mail-mode

Ah, so mutt saves content in a file which is then opened by
Emacs.  Okay, that makes sense.  Gnus does things the other way around:
opens the buffer (associated with a file in the draft directory),
inserts the content, and then puts the user in control.  File local
variables don't get a chance to be interpreted then.

> Then I have been testing and even text files invoke local variables.

Yes, of course.  That's the whole point?

(and, yes, I've been reading the thread so I know the concerns about
security etc.)

-- 
: Eric S Fraga via Emacs 28.0.50, Org release_9.4-118-g2a4578.dirty


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-25 13:58                               ` Eric S Fraga
@ 2020-11-25 14:07                                 ` Jean Louis
  2020-11-25 20:54                                   ` Tim Cross
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25 14:07 UTC (permalink / raw)
  To: Tim Cross, emacs-orgmode

* Eric S Fraga <e.fraga@ucl.ac.uk> [2020-11-25 16:58]:
> On Wednesday, 25 Nov 2020 at 16:13, Jean Louis wrote:
> > I use Mutt.
> > The message is opened in Emacs in mail-mode
> 
> Ah, so mutt saves content in a file which is then opened by
> Emacs.  Okay, that makes sense.  Gnus does things the other way around:
> opens the buffer (associated with a file in the draft directory),
> inserts the content, and then puts the user in control.  File local
> variables don't get a chance to be interpreted then.

That is specific to Gnus. Any file opened by Emacs any will still
invoke the dialogue for local variables.

> > Then I have been testing and even text files invoke local variables.
> 
> Yes, of course.  That's the whole point?

You know that point is bad design and assumption that every user is
programmer who knows what are local variables and what are definitions
of Emacs functions, it is incredible situation.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: org-sbe to automate some source block executions
  2020-11-25 11:39             ` Ihor Radchenko
@ 2020-11-25 15:06               ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-25 15:06 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-25 14:40]:
> > I am trying to implement it, do you see here anything below that I am
> > doing wrong? Error is that it cannot find source block stages
> 
> You should assign a name to your source block. Also, I am clueless why
> you need a variable ":var results=stages". You should probably do
> something like the following:

Because I did not know #+NAME: is there for source block names. Now I
have solved it all.

As I am transitioning with tasks it becomes also little questionable
how to structure the rest of files.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-25 14:07                                 ` Jean Louis
@ 2020-11-25 20:54                                   ` Tim Cross
  2020-11-25 22:09                                     ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Tim Cross @ 2020-11-25 20:54 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode


Jean Louis <bugs@gnu.support> writes:

> * Eric S Fraga <e.fraga@ucl.ac.uk> [2020-11-25 16:58]:
>> On Wednesday, 25 Nov 2020 at 16:13, Jean Louis wrote:
>> > I use Mutt.
>> > The message is opened in Emacs in mail-mode
>>
>> Ah, so mutt saves content in a file which is then opened by
>> Emacs.  Okay, that makes sense.  Gnus does things the other way around:
>> opens the buffer (associated with a file in the draft directory),
>> inserts the content, and then puts the user in control.  File local
>> variables don't get a chance to be interpreted then.
>
> That is specific to Gnus. Any file opened by Emacs any will still
> invoke the dialogue for local variables.
>
>> > Then I have been testing and even text files invoke local variables.
>>
>> Yes, of course.  That's the whole point?
>
> You know that point is bad design and assumption that every user is
> programmer who knows what are local variables and what are definitions
> of Emacs functions, it is incredible situation.

I guess this is probably the main point where we disagree.

Emacs is first and foremost a programmers editor. It was never designed
as a general purpose editor, but rather specifically as an editor for
programmers.

If you jump into a formula 1 race car, you would find it almost
impossible to drive. The gearbox would be unfamiliar and difficult to
use, the clutch would be difficult to use etc. If you got it going, you
would have a high likelihood of crashing. Luckily, you would probably
just stall and get nowhere.

Is this the fault of the design of the race car or the driver? Would it
make sense to change the design of a race car to use a standard gearbox
and clutch just because at some point someone who is not a race car
driver might want to drive it?

Are there risks associated with local variables. Yes. Is there
sufficient protection against these variables being used for malicious
purposes in Emacs. I think the answer is yes. Is there any evidence of
these variables being used for malicious purpose. None that I am aware
of. Has there been bugs in the implementation of this facility - yes.
Have these bugs been addressed once identified - yes.

With respect to your email example, the number of people who are exposed
is even less - it is really only those who are using it in the same
manner as you. That is, where they have configured their mail client
(such as Mutt) to use Emacs as the external editor. None of the Emacs
mail clients I have used do this (this includes VM, mu4e, gnus,
wonderlust and mew).

anyone who has gone to the effort to configure their mail system to use
an external editor and who then answers yes to the statement
"...contains values that may not be safe. Do you want to apply it?" is
someone with inherently unsafe practices. I doubt any change in wording
or phrasing would be of any help for them. However, the correct way to
deal with this would be to offer up a patch to the Emacs developers
which improve this wording. I would suggest the set of people who are
technically aware enough or have sufficient technical interest to have
adopted emacs as their email viewer and who would still answer yes to
any dialogue warning them of unsafe actions when opening content from an
unknown source is very small.

Local variables is a powerful and useful feature. Like many powerful
features, it can be abused. We differ in our opinions on whether those
safe guards are sufficient. I believe they are and I believe you are
over stating the risks. I don't believe we will arrive at any consensus
and I feel this thread has run its course. You are of course free to
respond, but I will refrain from further participation as this has
wondered off topic for org mode and I see little to be gained from
further back and forth.


--
Tim Cross


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-25 20:54                                   ` Tim Cross
@ 2020-11-25 22:09                                     ` Jean Louis
  2020-11-26  2:06                                       ` Tom Gillespie
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25 22:09 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode

* Tim Cross <theophilusx@gmail.com> [2020-11-25 23:54]:
> I guess this is probably the main point where we disagree.
> 
> Emacs is first and foremost a programmers editor. It was never designed
> as a general purpose editor, but rather specifically as an editor for
> programmers.

Yes. And when I was born as baby I was designed for milk, not for
typing, times change. People use GNU/Linux and Emacs is not advertised
as programmers or exclusively programmers editor. Some other editors
are advertised that way. So think how many hundreds of thousands of
users are working with Emacs.

Here is how Debian GNU/Linux describes it:
https://packages.debian.org/buster/emacs

If there are 10 programmers there are probably 100 if not 500
non-programmers.

> If you jump into a formula 1 race car, you would find it almost
> impossible to drive. The gearbox would be unfamiliar and difficult to
> use, the clutch would be difficult to use etc. If you got it going, you
> would have a high likelihood of crashing. Luckily, you would probably
> just stall and get nowhere.
> 
> Is this the fault of the design of the race car or the driver?

Race cars are not distributed through GNU/Linux operating systems and
are not easily downloadable by everybody, in general, they are also
expensive. While it all sounds entertaining, Emacs is not a race
car. And we cannot say to users not to use it if they are not Formula
One Drivers.

> With respect to your email example, the number of people who are exposed
> is even less - it is really only those who are using it in the same
> manner as you. That is, where they have configured their mail client
> (such as Mutt) to use Emacs as the external editor. None of the Emacs
> mail clients I have used do this (this includes VM, mu4e, gnus,
> wonderlust and mew).

I do not need to use Emacs with Mutt to invoke local variables. I can
get files by any means and by any opening of the file with Emacs it
will be invoked. Somebody could send me file to download and
open. File can come from anywhere, it is not Mutt related really.

Gnus buffers and email clients do not invoke local variables and that
is fine. But security issue is not email centric, but file centric.

> anyone who has gone to the effort to configure their mail system to use
> an external editor and who then answers yes to the statement
> "...contains values that may not be safe. Do you want to apply it?" is
> someone with inherently unsafe practices.

That is very rigid assumption. People set editors for various email
clients since decades. Try to think from another people's view points.

Here is example:
https://stackoverflow.com/questions/15865495/opening-a-file-in-emacs-values-that-are-not-safe

That person has quite different view point. Person asks "Why it would
not be safe?" and one should know when one person writes there for an
answer there are probably thousand other persons who did not write for
the answer.

Other person asked:

"Thanks, that's very helpful. Why would a file (i.e. the author of the
file) require or ask Emacs to apply configuration values when just
opening/visiting the file? – Amelio Vazquez-Reina"

I know why, but people using Emacs are asking why. Many will not ask
and will say, damn YES, as I feel safe!

Denial of Service Attacks possible:
https://github.com/aquamacs-emacs/aquamacs-emacs/issues/147
https://gitmemory.com/issue/davidswelt/aquamacs-emacs/147/478196367

.emacs considered not safe:
https://www.cs.ait.ac.th/~on/O/oreilly/tcpip/puis/ch11_05.htm

OK then now back to Org discussions.

Jean


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-25  8:23                             ` Security issues in Emacs packages Jean Louis
  2020-11-25  9:07                               ` tomas
@ 2020-11-25 22:46                               ` Tim Cross
  2020-11-25 23:07                                 ` Jean Louis
  2020-11-26  5:29                                 ` Greg Minshall
  1 sibling, 2 replies; 121+ messages in thread
From: Tim Cross @ 2020-11-25 22:46 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode


Jean Louis <bugs@gnu.support> writes:

> * Tim Cross <theophilusx@gmail.com> [2020-11-25 10:01]:
>>
>> Jean Louis <bugs@gnu.support> writes:
>>
>> > * Tim Cross <theophilusx@gmail.com> [2020-11-24 23:40]:
>> >> If people are really concerned about security, they should look first at
>> >> their use of repositories like MELPA. There is no formal review or
>> >> analysis of packages in these repositories, yet people will happily
>> >> select some package and install it.
>> >
>> > Interesting that you are one who mentions that. There are just few
>> > people ever mentioned it.
>> >
>> > I am still in process of the review of MELPA packages and its
>> > system. There are many security issues.
>> >
>> > Package signing is one example. It does not offer much of security
>> > when packages are signed automatically, but it raises level of
>> > security.
>> >
>> > MELPA packages and archive-contents are not PGP signed, while GNU ELPA
>> > packages are signed.
>> >
>>
>> IMO signing of packages is irrelevant when there is no formal review
>> process or even any formal process to verify the credentials of
>> signatures. In fact, just adding signing would likely be
>> coutner-productive as it would give the impression of some sort of
>> security where there is none.
>
> When user receives a signed package from GNU ELPA, that means it comes
> from GNU ELPA. If signed package is then distributed by mirrors or
> other websites users who enable package signature verifications will
> know that package still comes from GNU ELPA, and not from Chinese
> distributor. If the package is tampered the signature verification
> will not allow installation of the package.
>

I think you missed my point. There is no benefit in MELPA adopting
signed packages because there is no formal code review and no vetting of
the individuals who submit the code. If you have no controls in place
over the contents of what is being signed, the value of the signatures
as a security measure is drastically reduced. Yes, the valid signature
may provide some assurances as to where the package originated, but that
means little if the contents could be anything.

The situation with ELPA is a little better because those who maintain
the code are required to assign legal copyright to GNU. However, I'm not
sure how much checking is done to verify the information in those
assignments. As far as I know, there is no formal code review. A number
of the Emacs developers do perform some informal review, but as we all
know from the issues with openssl, informal reviews provide little
assurance. This is not a criticism of GNU or emacs developers. The
amount of resources necessary to perform formal review is much larger
than the available resources. On the whole, the emacs user community
appears to be happy with the current situation. If they were not, it
would be on the community to step up and do something about it.

As it stands, the signing of ELPA packages only provides assurance that
they are packages assembled by GNU. These signatures do not provide any
real assurance regarding the content of the packages other than they are
GPL's and do not recommend or encourage the use of non-free software.


> That it does add to security shows the fact that GNU/Linux
> distributions do sign packages. There is difference if the package
> comes from trusted source or not trusted source.
>

The question is what level of trust should you assume. With ELPA, all
you can really trust is that the package has a GPL license and does not
recommend/require the use of non-free software. There is little trust
that the package does not do something malicious or includes code which
may compromise the user's security. to provide that level of assurance,
you would need formal code reviews, which is not feasible given
available resources. I think it is important users are aware of this
limitation. Furthermore, I ask the question "Does having signed packages
imply a level of expected assurance which is higher than it really is?"
In other words, do users expect that a package is completely safe just
because it was downloaded from an official GNU ELPA repository?

>> Basically, anyone can upload anything to MELPA.
>
> Maintainers verifies the package initially for certain conventions,
> after that, how I have understood it, packages are automatically
> pulled from Git. The more authors give packages to MELPA the more
> insecurity probability is raised.
>
> GNU ELPA how I understand it, I may be wrong, works like this:
>
> 1) packages are uploaded to GNU ELPA
> 2) then automatically signed by GNU ELPA PGP keys
> 3) offered for distribution
>
Last time I looked, ELPA also supported 'external' packages where the
data is retrieved from an external git repository. I think org is one
such package.

> The point number (1) is human, not automated. Author decides when is
> the package ripe for distribution and what is "release".
>
> Git repository is never release and not meant to be "release". Git is
> for collaborative development and users are made blind that it is some
> kind of release while it is not. One shall always assume that Git
> repository contains development versions not ready for public.
>

Why? This is not normal. Git repositories contain all versions, both
production and development. What is production and what is development
is managed through branches and tags. Anyone who wants can clone the
ELPA git repository.

> MELPA pulls those packages, correct me if I am wrong, automatically
> from Git repositories without regard if the package is actually
> release. That does not align or respect the established Emacs
> conventions how packages should be released, if they are multi files
> they should be in .tar file otherwise .el and there are version
> numbers that MELPA fiddles with and makes possible conflicts and
> introduces confusions.

this is wrong. In melpa you specify either a commit (SHA) or a branch or
both. The repository owner has control over this. MELPA doesn't just
pull data from the repository because there has bene an update. You can
configure things so that whenever data is committed to a release branch,
it is pulled, but this is under the control of the repository owner. It
isn't that different to ELPA where the maintainer will either push new
data to the ELPA repository (or ask someone with write permission to
pull it from their repository).

>
> In GNU ELPA authors decide when package is release ready and when
> it should be released.
>
> In MELPA authors only apply for their packages to be pulled out
> automatically and offered for distribution.
>

You imply authors do not have control over when new releases are made.
This is not the case. They have full control.

> Both repositories could be compromised but probability is becoming
> larger and larger that by automatic pulling of packages something
> worse happens.

The risks between the two systems are not significantly different
because neither system performs any formal review of the code. In some
respects, this is more of an issue for ELPA because there is likely a
higher expectation that the code from ELPA can be trusted more than the
code from MELPA. ELPA also has a scaling challenge. Currently, anyone
who has the ability to push data to ELPA for a package also has the
ability to push to any directory (package), not just the package they
are maintainer for. This means that access to write permission for the
ELPA repository needs to be restricted to trusted users, which in turn
places more pressure on those trusted users to manage requests to update
data. As the number of ELPA packages increases, either more people will
need to be trusted or more pressure placed on those who are. As you
increase the number of people with write access you also increase the
risks.


>
> MELPA cannot know possibly who is behind authors who offer those
> packages for distribution and who has access or who may do something
> malicious.
>

The situation with ELPA is not much better. Yes, the authors are
required to sign over copyright, but what does that really tell you
about the author. How much vetting is done to verify those copyright
assignments? How much vetting is done to verify the identities of those
people? More importantly, how much of the code is formally reviewed?

The assumption that because a package is from ELPA it is safe is wrong.
This is the danger - an expectation that because the package is from
ELPA it is more trustworthy than a package from MELPA. The only thing
you really know for certain about a package from ELPA is that it has a
GPL license and it does not recommend or require non-free software. Any
review of the code in the package is informal and not guaranteed to
occur after every update. The requirement to assign copyright and the
fact at least some informal review is performed does provide some level
of assurance you don't get from MELPa, but it is a mistake to assume
that just because a package comes from ELPA it is safe or does not
include any significant security issues.

> Some new similar package like angry-police-captain could serve for
> potential attacks.
>
> #+TITLE: <2020-10-23 Fri 18:28>  WTF angry-police-captain
> #+AUTHOR: Jean Louis
> - This should scrap information from a third party unknown website and
>   show it in minibuffer. Function does not work, and yes, it is just
>   one function inside. Good example of nonsensical
>   "packages". *Deleted*
>
> While similar packages can be made for entertainment they can be also
> used to track users and save data that should not be saved. Update to
> this package would not be checked by MELPA, and users who have enabled
> it would continue using it. And package could suddenly start doing
> something else. Author of the package could know how many users are
> using it as package is actually fetching from their website. By
> fetching the information from website the website can know many things
> about those users such as their locations, operating system and
> versions, etc. and could invoke specific malicious stuff for those
> specific users including send different information to users by their
> different location or other attributes.
>

and the same thing is possible with ELPA. You may need to be a little
mor subtle and you may need to play 'the long game', but there is
nothing inherent in the ELPA process which provides protection against
this other than the valuable and incredible dedication of Emacs
developers. The problem is, informal processes for code review are
notoriously unreliable. We just have to look at what happened in the
openssl project to see how badly things can go wrong despite all good
intentions. In fact, your own words demonstrate the issue. You have a
belief/expectation that ELPA packages are safer than MELPA packages
because they are from a source you trust. However, without any formal
review of the code in those packages, that level of trust may not be
warranted.

So how big a risk are ELPA packages in reality? This is a difficult
thing to quantify. Yes, I do think there is lower risk with ELPA than
MELPA because even informal review is better than no review. I also
think that if you wanted to introduce a malicious package into the Emacs
ecosystem you would follow the path of least resistance, which is MELPA.
I also think the risk and reward calculations make Emacs packages a
lower risk - the effort required to get a malicious package adopted and
the rewards such effort would provide just don't add up. There are far
more rewarding options out there. However, I do think people need to
install packages with caution, regardless of whether they are from ELPA
or MELPA or anywhere else.

> For that reason MELPA's automatic pulling of packages and race to
> offer "large package repository" is rather by its design detrimental
> for future. I hope it will change, but currently that is unlikely.
>

The automatic pulling is not the issue. As long as there is no formal
review of code in packages, any method used is vulnerable. Regardless of
the approach, at the end of the day your trusting the author/maintainer
will do the right thing. This is true for both MELPA and ELPA. It also
includes trusting the maintainer won't make a mistake and that they have
good operational security and are not themselves compromised.


<snip>

>> So, like MELPA, all you really have to go on is package
>> reputation. You cannot have any high level of confidence a package
>> does not contain malicious code other than an expectation that if it
>> is used by a sufficiently large enough number of users, it is
>> unlikely.
>
> Interpreting statistics is not for everyone. It would be nice that
> users give a human feedback which can be used for package reputation.
>
> If one counts "download statistics" that is incorrect to be used for
> reputation.
>
> If let us say imaginary, a package about angry-police-captain would
> contain some malicious code, then if user cannot differentiate what is
> reputation and download, then number of 1000+ downloads would be quite
> convincing to load the package.
>
> Download number is now used for reputation as it is currently the only
> attribute that may be obtained.
>

that is not what I meant by reputation and number of downloads is not
the metric I use. What I meant by reputation is what others write about
the package - what is discussed in forums, what comes up with a google
search etc. I maintain a JS package which has over 100k downloads per
week. This means nothing to me and I suspect to most users. The
reputation for the package is based on what is in the issue/bug tracker,
how quickly issues are addressed and how many other packages or systems
use the package.

I think we have exhausted this topic now. It really is something which
should be discussed on the emacs-devel list rather than an org list. I
do think people probably need to be more aware of the risks associated
with all emacs packages, regardless of source, but probably best in a
more general emacs forum rather than this list.

--
Tim Cross


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-25 22:46                               ` Tim Cross
@ 2020-11-25 23:07                                 ` Jean Louis
  2020-11-25 23:39                                   ` Tim Cross
  2020-11-26  5:29                                 ` Greg Minshall
  1 sibling, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-25 23:07 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode

* Tim Cross <theophilusx@gmail.com> [2020-11-26 01:47]:
> I think you missed my point. There is no benefit in MELPA adopting
> signed packages because there is no formal code review and no vetting of
> the individuals who submit the code.

Do you think it is really their reason? Or maybe you are developer in
MELPA?

There is still difference if package comes from MELPA or from third
party archive, definitely signing would say this package was signed by
MELPA and other package was not signed by trusted key, so who is that?
Is the MD5SUM same as original? It would give some initiative to
investigate.

Packages are not audited that is so. I think audit can be quick by
using grep for some dangerous commands, I have already found rm -rf as
example command in one of packages, not as malicious one. One could
search for (shell-command and verify such and similar functions.

> If you have no controls in place over the contents of what is being
> signed, the value of the signatures as a security measure is
> drastically reduced. Yes, the valid signature may provide some
> assurances as to where the package originated, but that means little
> if the contents could be anything.

What you explain is logical to me, users though need better
information. One big DANGER should be given to users.

> As it stands, the signing of ELPA packages only provides assurance that
> they are packages assembled by GNU. These signatures do not provide any
> real assurance regarding the content of the packages other than they are
> GPL's and do not recommend or encourage the use of non-free
> software.

There is no absolute. Signing says about origins. Mirrors are placed
anywhere in the world, including behind Internet. It is one way for
users to verify origin and if source has been changed.

> The question is what level of trust should you assume. With ELPA, all
> you can really trust is that the package has a GPL license and does not
> recommend/require the use of non-free software. There is little trust
> that the package does not do something malicious or includes code which
> may compromise the user's security. to provide that level of assurance,
> you would need formal code reviews, which is not feasible given
> available resources.

Last month I could see that several packages were here and there
improved by developers so they do look into code and how much they do
I cannot know.

> I think it is important users are aware of this
> limitation. Furthermore, I ask the question "Does having signed
> packages imply a level of expected assurance which is higher than it
> really is?"  In other words, do users expect that a package is
> completely safe just because it was downloaded from an official GNU
> ELPA repository?

Download numbers on MELPA tells me that answer should be rather
positive, any package is safe to be installed. See
numbers. Information is no enough to teach users. More attention is
necessary. 

> Last time I looked, ELPA also supported 'external' packages where the
> data is retrieved from an external git repository. I think org is one
> such package.

Majority of GNU ELPA packages are external how I know about it, but
authors decide WHEN to upload them.

> > The point number (1) is human, not automated. Author decides when is
> > the package ripe for distribution and what is "release".
> >
> > Git repository is never release and not meant to be "release". Git is
> > for collaborative development and users are made blind that it is some
> > kind of release while it is not. One shall always assume that Git
> > repository contains development versions not ready for public.
> >
> 
> Why? This is not normal. Git repositories contain all versions, both
> production and development. What is production and what is development
> is managed through branches and tags. Anyone who wants can clone the
> ELPA git repository.

How I see practically, people hack on git master branches and main
branch need not be considered release ready. Git hosting websites then
have special section for releases. Git branch is not a release
according to what I know, it is revision control system or version
control system. Git often looks pretty different than release as
package. Of course everybody can clone. Point is that software is no
ripe. Maybe somebody else knows if Git can tell that software is ripe,
what I know it is not so. Author has to say when it is ripe for
release. 

> > MELPA pulls those packages, correct me if I am wrong, automatically
> > from Git repositories without regard if the package is actually
> > release. That does not align or respect the established Emacs
> > conventions how packages should be released, if they are multi files
> > they should be in .tar file otherwise .el and there are version
> > numbers that MELPA fiddles with and makes possible conflicts and
> > introduces confusions.
> 
> this is wrong. In melpa you specify either a commit (SHA) or a branch or
> both. The repository owner has control over this. MELPA doesn't just
> pull data from the repository because there has bene an update. You can
> configure things so that whenever data is committed to a release branch,
> it is pulled, but this is under the control of the repository owner. It
> isn't that different to ELPA where the maintainer will either push new
> data to the ELPA repository (or ask someone with write permission to
> pull it from their repository).

OK it is great that it is so. Are you maybe author doing it? Is there
any reference that authors are doing so? I have MELPA downloaded you
could tell me how do I see that author is deciding if package is for
release?

> You imply authors do not have control over when new releases are made.
> This is not the case. They have full control.

Sure they have for themselves. Do they have it for MELPA?

> The situation with ELPA is not much better. Yes, the authors are
> required to sign over copyright, but what does that really tell you
> about the author. How much vetting is done to verify those copyright
> assignments? How much vetting is done to verify the identities of those
> people? More importantly, how much of the code is formally reviewed?

Valid questions!

> The assumption that because a package is from ELPA it is safe is
> wrong.

Safer, not safe.

Assumption by majority is that any packages from anywhere are
safe. Downloads prove it.

> So how big a risk are ELPA packages in reality? This is a difficult
> thing to quantify. Yes, I do think there is lower risk with ELPA than
> MELPA because even informal review is better than no review.

Side note: ELPA is protocol, GNU ELPA is repository. MELPA ELPA should
be rather more correct name.

I can see all those points and I would like there is better code review.

> > For that reason MELPA's automatic pulling of packages and race to
> > offer "large package repository" is rather by its design detrimental
> > for future. I hope it will change, but currently that is unlikely.
> >
> The automatic pulling is not the issue. As long as there is no formal
> review of code in packages, any method used is vulnerable.

So is there automatic pulling?

I compare automatic pulling and building to author's decision on when
a package would be issued.

Jean


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-25 23:07                                 ` Jean Louis
@ 2020-11-25 23:39                                   ` Tim Cross
  2020-11-26  5:24                                     ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Tim Cross @ 2020-11-25 23:39 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode


Jean Louis <bugs@gnu.support> writes:

>>
>> this is wrong. In melpa you specify either a commit (SHA) or a branch or
>> both. The repository owner has control over this. MELPA doesn't just
>> pull data from the repository because there has bene an update. You can
>> configure things so that whenever data is committed to a release branch,
>> it is pulled, but this is under the control of the repository owner. It
>> isn't that different to ELPA where the maintainer will either push new
>> data to the ELPA repository (or ask someone with write permission to
>> pull it from their repository).
>
> OK it is great that it is so. Are you maybe author doing it? Is there
> any reference that authors are doing so? I have MELPA downloaded you
> could tell me how do I see that author is deciding if package is for
> release?
>

You can clone the melpa repository and see the recipes for each package.

It depends on how the author specifies their MELPA recipe. They can
define their recipe based on a specific commit (SHA). If they do this,
it doesn't matter how often or when MELPA pulls from the repository as
they will always get the same commit.

They can also specify a branch rather than a commit SHA. In this case,
MELPA will retrieve updates from that branch, so when that branch is
updated, it will pull new data. In this case, it is up to the developer
to manage their 'release' branch appropriately. when they are ready for
a new release, they push their updates to the release branch and update
the version tag. This is pretty much the same as ELPA works for external
packages (those which don't manage their code within the GNU ELPA repository itself)


>
> So is there automatic pulling?
>
> I compare automatic pulling and building to author's decision on when
> a package would be issued.
>

Your model is flawed. You can have both automatic pulling AND author
control over when a new package is issued.

If author defines their MELPA recipe to use a SHA a new package will not
be issued until they update their recipe with a new SHA.

If author defines their MELPA recipe to pull from a release branch, a
new package will not be issued until they update the release branch and
version tag.

MELPA does not automatically generate a new package just because
something has changed within the git repository. It has to be a change
to a specified branch and update to the version tag or it has to be a
change in the recipe with an update to the commit SHA.

--
Tim Cross


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-25 22:09                                     ` Jean Louis
@ 2020-11-26  2:06                                       ` Tom Gillespie
  2020-11-26  5:06                                         ` Jean Louis
                                                           ` (2 more replies)
  0 siblings, 3 replies; 121+ messages in thread
From: Tom Gillespie @ 2020-11-26  2:06 UTC (permalink / raw)
  To: Jean Louis; +Cc: Tim Cross, emacs-orgmode

Hi Jean,

Some points in summary before a long email.
1. Having an accepting default behavior as a user (i.e., saying yes to
   all prompts) is bad security practice. The only thing that systems
   can do is prompt as infrequently as possible in hopes that people
   don't get prompt fatigue. Emacs does this.
2. If mutt is launching Emacs, you can pass --eval "(setq
   enable-local-eval nil)" on the command line and all file local
   variables will be ignored and treated as plain text.
3. If people don't read the manual and don't read the prompt, there
   isn't much more that Emacs can do while still empowering the
   user. In those cases we also can't assume that the community will
   be of much help either, as we are trying to be here.
4. That said, the local variables prompt could be more alarming and
   provide a quick way to access the manual about local
   variables. I'll look into a patch for that.

Now on to the rest!

Full disclosure. I make use of file local variables every day
and I have spent quite a while writing orgstrap which relies heavily
on them, so I am definitely biased.

Emacs is a sharp tool. Experts need sharp tools. If someone complains
about the security of prompts but also admits that they always say yes
to prompts without reading them, then no one will take them seriously
when they try to argue that it is the prompt that is insecure. It is
like complaining that the forest is dangerous while insisting on
eating the berries of all the plants and picking up all the snakes.
The forest is dangerous, but not merely because the berries and the
snakes exist in it. Heck, some snakes even try to warn you! There are
some rattlesnakes that have evolved to not rattle because idiot humans
go find and kill them. Now everyone suffers because there are silent
rattlesnakes that will strike without warning.

Degrading usability because some users are irresponsible just
reinforces the irresponsible behavior and everyone loses. The endgame
for all prompts is a two-man two-key system where the switches are
separated by 30 feet and must be turned within 1 second of each
other. How else could we be sure that the user really meant to say
yes!? Emacs is scary, but not nuclear launch system levels of scary.

Furthermore, Emacs does try to account for users who don't read the
manual and has sane and safe defaults. Namely it does not blindly
execute code but prompts the user and lets them know that something is
going on. Further, when it prompts the user it does not provide a
default action, it forces them to answer so that they must attend to
what they are doing. This provides the user with an opportunity to
become aware of a feature of Emacs that is new to them. The only other
option is to never execute local variables until a user reads the
manual and changes their config. Such a design infantilizes the user
and does not empower them.

Emacs isn't just a dissociated tool, or at least it tries not to be
(lots of people also complain about the splash screen being enabled by
default!). The Emacs community often also goes out of its way to share
its knowledge when such situations arise (as we are doing here). We
can't reach everyone (yet!) but many people donate time and effort to
share. Emacs and Org both actively encourage users to participate in
the mailing lists because venues like StackOverflow are not guaranteed
to be seen by the community and are not officially supported.

Finally on this point, if we are willing to open the manual we see
that Emacs tries to educate users about this, the first line of the
section on file local variables is "File-local variables can be
dangerous."

With regard to the local variables prompt. Maybe the right thing to do
in this case would be to add a "?" option so that users can open the
manual? That seems like it would help. That said, the second line of
the prompt reads "contains variables that may not be safe (*)" which
should be alarming. I guess it could be changed to "THIS FILE COULD
PWN YOU. Please review potentially unsafe variables marked with an
asterisk (*)." Or just make the second line a bold warning? I have a
patch I need to send in to make it possible to use lexical scope in
eval local variables, I'll take a look at this while I'm there.

It is forgivable to not be utterly terrified of systems that can
execute arbitrary code, given that they mostly look like rocks, and we
are surrounded by them all day. However, they are utterly terrifying
existences! While I think it would be great for the Emacs splash
screen to come with a big warning that says "WARNING THIS PROGRAM
ENABLES YOU TO EXECUTE ARBITRARY CODE" I admit that it took me nearly
a decade to begin to understand what arbitrary code execution means
and why I should be scared of it. Those words are meaningless to a 12
year old who at best will think "What is the big deal about arbitrary
code? I can already run any code that I want!"

This is why I pointed you to orgstrap. The eval: (org-sbe startup)
local variable is utterly terrifying to me. I added a layer that
allows me to know that I have audited the block that I'm about to
execute by calculating the checksum of the elisp. Now we have an
audited code evaluation system. Much less terrifying, with a chance to
prevent nasal demons rather than playing prompt fatigue roulette and
hoping it is never my turn. I can't read the instructions for you nor
explain better than the link itself https://github.com/tgbugs/orgstrap
why you might want to use it if you care about security while still
wanting to run code to simplify complex processes.

You ask why people need local variables in the first place. The answer
is partially because they got sick of getting emails from people who
had misconfigured systems and didn't read the manual and the
instructions for how to properly configure them to run a file (sound
familiar?). They also got sick of people screwing up the indentation
of files and not following coding conventions, so they got the
computer to do it for them because it is way more effective than
trying to do it with politics.

People who don't follow instructions don't follow instructions. This
seems like an obvious statement, but its consequences are nearly
impossible to deal with and there is not much we can do about it other
than to reduce the number of instructions we have to give. Local
variables are a great way to reduce the number of instructions. I have
tested this (unscientifically) and I can report that error rates are
lower and users are happier when they can accept local variables and
let the author of the file worry about the details. Hard to follow
instructions waste everyone's time if they are followed at all. There
are better workflows, but they are not foolproof and not obvious. How
could they be? Few to none are born knowing cryptography much less the
best practices for how to employ it.

People put up fences and warning signs, and some folks will still
climb over them. I suppose we could go back to only using Turing
incomplete systems and languages.  Those are probably safe.

As alluded to in one of my previous emails, questioning the existence
of a feature is often a sign to slow down and take the time to
understand what you might be missing. Sometimes there is nothing
there, but in Emacs that is rarely the case. To quote myself "Emacs is
useful because countless others have encountered problems the likes of
which a single person only rarely dreams. Not only that but they have
probably already implemented a solution that is fairly easy to find
once you encounter the problem and in 80% of the cases can be used
unmodified."  There are features of Emacs that I suspect I will never
know about no matter how long I use it and that is as it should be.

There are members of the larger community who I suspect have seen
countless users, some new, some veteran, come to question and complain
about a feature that they rarely personally use and thus do not
understand. Such observers know from experience that there are likely
thousands of other users for whom that very feature is a critical part
of their daily workflow. Someone posted to this list a few months ago
suggesting that org be stripped of all the complexity and broken into
smaller projects because they didn't see the need to include things
like org-babel in the core.  Fortunately the community has long
experience with these kinds of limited perspectives and knows how to
deal with them, but they cannot simply be ignored.

Best,
Tom


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Is Org really so simple?
  2020-11-23 18:08                     ` Is Org really so simple? Jean Louis
  2020-11-23 20:41                       ` Tom Gillespie
@ 2020-11-26  3:08                       ` Ihor Radchenko
  2020-11-26  8:57                         ` Jean Louis
  2020-11-26 18:07                         ` Dr. Arne Babenhauserheide
  1 sibling, 2 replies; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-26  3:08 UTC (permalink / raw)
  To: Jean Louis; +Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode

> Only philosophy I know is that it is plain text. Is there any official
> philosophy? I have no idea, at least manual does not give me
> references. I cannot find "philosophy", send me references.

You are right. There is no official "philosophy" in org. In my reply I
tried to follow the topic starter's view:

 Texas Cyberthal <texas.cyberthal@gmail.com>:
> By philosophy, I mean the dev consensus on the correct way to do
> things, and coded configuration and usability biases.

According to my experience with org-mode development (I am not talking
about third-party packages here), it is discouraged to change org-mode
towards hiding metadata in org files or store *unique* data (that cannot
be derived from the contents of the org files) related to org-mode
externally (not in org files). It is not official statement, but rather
my impression so far.

> Question is what is meant by database, it can be anything. One can
> save LISP data. Recent files, desktop, eww bookmarks, init.el or
> .emacs file are also all similar databases, there is the underused
> EIEIO with persistent stuff that represent built-in database
> functionality.

Org-mode does not limit user customisations. It does not limit
third-party packages either. Users are free to use any other tools,
store their data anywhere other than org files (why would org force
users to do otherwise?). What I referred to earlier is just the core
org-mode development.

> And people try to do exactly that, people are developing Org in the
> manner to relate objects in Org file to anything else. And they do
> hard work as they do it manually. Relational database speeds up and
> does not tell user to manually hyperlink various relations.

Could you provide some more examples? I do not see how relational
database is different from creating hyperlinks in org. Either way, the
user needs to file an object/headline somewhere into org file, which is
inherently manual.

> I see hard work by many people who try to enhance Org as hierarchical
> knowledge of data because people want to have feature X, but group of
> those enhancements in reality belong to relational databases and not
> to text files.

It is an interesting point. I would be happy if some existing tools
could be reused instead of re-inventing the wheel for org. Do you have
concrete examples where it can be useful? If you have, I encourage you
to bring up a feature request to discuss this possibility with org-mode
devs.

Best,
Ihor

Jean Louis <bugs@gnu.support> writes:

> * Ihor Radchenko <yantar92@gmail.com> [2020-11-23 17:18]:
>   :PROPERTIES:
>   :CREATED:  [2020-11-23 Mon 18:42]
>   :ID:       edebb3e7-e755-4ecc-a5e8-a3353a3f5fd0
>   :END:
>> Dear Jean Louis,
>> 
>> Your description of the database reminds me how org-roam handles the
>> files - it also uses an external database for linking and allows quick
>> incremental search that does not really depend on where the
>> files/headings are stored.
>
> Sounds good, I can see there is graph database used.
>
>> However, what you are talking about is against org-mode philosophy,
>> as I know it.
>
> Only philosophy I know is that it is plain text. Is there any official
> philosophy? I have no idea, at least manual does not give me
> references. I cannot find "philosophy", send me references.
>
> It says "to keep simple things simple". But Org is far far from being
> simple any more. It offers good principles, paradigms and people built
> many enhancements upon those. Speedily it becomes way much more than
> simple.
>
> Headings do not look any more as headings, it looks like pieces of
> code to a person that is new. Properties, tags, clocks, schedule,
> deadline, all that tries to store itself under specific heading. There
> is easily too much of it and things are not simple any more.
>
>> Currently, the dev's stance is that org files must be
>> self-sufficient.
>
> There is no compact principle there practically. Anything is
> possible. That Org files are not practically self-sufficient shows the
> fact that there are 129 Emacs packages in one Org distribution. 
>
>> Org-mode should not depend on external database to manage the org
>> files and operations with them. Everything must be plain text!
>
> Question is what is meant by database, it can be anything. One can
> save LISP data. Recent files, desktop, eww bookmarks, init.el or
> .emacs file are also all similar databases, there is the underused
> EIEIO with persistent stuff that represent built-in database
> functionality.
>
> That Org files are not self-sufficient shows the demand that there is
> almost no Org user who does not have add-ons, packages, modifications,
> configurations.
>
> Would it be really self-sufficient there would be no development going
> on, right?
>
> Babel executions clearly show that Org is not self sufficient and
> depends on number of external software.
>
> I don't mind of philosophy, in fact I would like that philosophy is
> really that what it wanted to be, but that time is over.
>
> I am just pointing out that it is by many means not self sufficient.
>
> Is by default LaTeX export enabled? I think it is. How big is the
> LaTeX package? It is huge, and Org depends on it for export.
>
> Thus Org is far far from being self-sufficient.
>
> Almost every system has GDBM database, if Emacs would have bindings to
> GDBM, there would be so much less of development in general for many
> various packages and Emacs would be expanding faster and easier.
>
> In fact I think that author and initial developers could not predict
> at the time where the Org goes and that speaking of self-sufficient
> and "plain text" only is history.
>
> Before I found out about Org I was using back in time `hnb' in console
> to track various planning tasks. It works nice and simple. That is
> really self sufficient. Org definitely not.
>
> HNB - Hierarchical Notebook
> http://hnb.sourceforge.net/
>
> In the mean time I have created database where I can store TODO,
> Notes, Calls, SMS, People, Invoices, Groups, Mailing Lists and so on,
> and made my own shell and Perl interfaces to it. And I used to manage
> it through: GeDaFe - PostgreSQL Generic Database Interface
> http://gedafe.github.io/doc/gedafe-sql.en.html and this was and is
> hierarchical or better graph knowledge management and relational
> database.
>
> Creating simple table in the database automatically helped me to
> manage that table. It is trivial to create NOTES table with schedule
> date, clock in, TODO or other conditions and tags. The interface is
> just there and automatic to whatever table I create the interface is
> there to add/modify/delete/search/refine records. That is what I would
> say "simple" and keeping things simple and indefinitely extensible
> without modification of software. The fundamental GeDaFe principle I
> would like to try to implement in Emacs. And same database I use for
> web interface I am using also within Emacs.
>
> GeDaFe principle is following:
>
> - define your data (like handling notes, TODO, or executing scripts within notes)
>
> - work and forget about any underlying functions,
>   add/create/delete/modify/index or search, make reports with simple exports
>
> - expand with more definitions of data when necessary (like add
>   various properties, or other data tables, like contacts, invoices,
>   etc.) and repeat the process.
>
> Org also shows that it does not hold "Notes" only, it holds more than
> that, I have written average book size technical documents with
> it. Only just one part of the document is printed from one single node
> that belongs to single project among many. People use such documents
> on the ground. My use case is not for simple notes.
>
> A node in a tree can be anything, and Org enhancements develop by that
> principle. For example there is org-contacts where nodes are meant to
> be "People". Such development is so much hard coded.
>
> Simpler would be to define the type of nodes and work by their
> types. One could need just one type table and one node table and that
> is about all.
>
> The type table could say:
>
> - this node is heading
> - or, this node is text under heading
> - or, this node is paragraph among many others
> - or, this node is hyperlink to WWW URI
> - or, this node is hyperlink to file
> - this node is movie to play
> - this type is PDF to be opened on page 3
> - this one is really note
> - this one is note but with action assigned like TODO, etc.
>
> Nodes could have its properties defined like for anything. Nodes can
> reference its parent nodes. Node can be parent to any heading.
>
> Once such 2 tables are defined magic starts to take place, it becomes
> its subtree with all kinds of node types including Babel execution and
> similar. Meta data is meta, it can be updated but need not be
> visible. Computer is handling meta data.
>
> Node can be a page in a subtree that becomes a website.
>
> Node can be object for person or company, or just anything.
>
> I am currently using my nodes to quickly research various subjects by
> using that type of dynamic knowledge repository.
>
> Org file is dynamic knowledge repository.
>
> About Dynamic Knowledge Repositories (DKR)
> https://www.dougengelbart.org/content/view/190/163/
>
> Then around 2015 I have discovered Cherrytree and have made bunch of
> notes with it, and that is self-sufficient one program that keeps
> simple things simple as it is much more simpler than Org. It offers a
> visual interface to all features related to the knowledge management
>
> Cherrytree - hierarchical note taking application with rich text and syntax highlighting
> https://www.giuspen.com/cherrytree/
>
> TAGS in Cherrytree are automatic if I remember well, TAG is simply
> name of the node. If I call node TODO, then nodes under are simply
> TODO items. 
>
> Later I discovered there is something similar in Emacs so I started
> with Org and use it mostly for instruction writing and project
> management. And I find many options over kill for me. On the other
> hand my usage of Org would be overkill for somebody, so it depends of
> viewpoints.
>
> In general I was always using headings and subheadings, trees, lists, notes by using text.
>
> Somewhere 2004 I started using Markdown one among first as I found it
> simpler than ASCIIDOC and M4, but not as perfect.
>
> 2020 and 2021 I like to raise the level of dynamic knowledge
> journaling to the meta level where I think less about underlying
> functions in software.
>
> That experience also tells that Org is definitely not simple.
>
> Among hnb, GeDaFe database approach, Cherrytree and Org mode, for
> "keeping things simple" like note taking and TODO items, project
> management, Cherrytree was the best for me.
>
> Among all those for keeping complex things simple the database
> approach is the best. Of course that I use database within Emacs and
> it is not visible to user what it is. Database allows simultaneous
> operation by several people on distance and that is the groupware
> feature as envisioned by Doug Engelbart.
>
> For document writing and nice formatting with LaTeX export, Org mode
> is the best personally.
>
> For notes, database based notes are best as only so I have relations
> between the note and other objects. With 200,000 contacts in the
> database which I can quickly access and assign notes to them, how
> would that work with Org? Hardly. Notes are related to people, to
> projects, plans, opportunities, research subjects, companies and so
> on. There is no simple way in Org mode to relate one note to multiple
> other related subjects.
>
> And people try to do exactly that, people are developing Org in the
> manner to relate objects in Org file to anything else. And they do
> hard work as they do it manually. Relational database speeds up and
> does not tell user to manually hyperlink various relations.
>
> I have sent thousands of tasks to people by using this function
> below. And I had to define for each Org file who are "assignees" for
> that Org file. And I have like 50 assignees, so I need to copy and
> paste their nick names or identifiers into the Org file. There it
> comes the attribute of being "self-sufficient", it becomes
> self-sufficient because I had to define all assignees into that
> specific file, but I find it tedious and not useful.
>
> (defun rcd/org-send-assigned-task ()
>   "Sends assigned task to designated individual as Org"
>   (interactive)
>   (let* ((member-data (rcd-org-extract-assigned-member-email-data))
> 	 (id (if member-data (first member-data) nil))
> 	 (signature (if (equal (type-of (symbol-value (fifth member-data))) 'cons)
> 	 		(third (symbol-value (fifth member-data))) ""))
> 	 (file (rcd-org-subtree-to-file signature))
> 	 (subject (rcd/org-find-headline))
> 	 (esubject (escape-% subject))
> 	 (ask (unless id (y-or-n-p "No assignment found. Do you want to send it by email?")))
> 	 (name (if id (third member-data)))
> 	 ;; (name (if ask (read-from-minibuffer "Name:") name))
> 	 (voice (format "The task '%s' is being sent to '%s'" subject name))
> 	 (email (if id (if (equal (type-of (fourth member-data)) 'cons)
> 			   (car (fourth member-data))
> 			 (fourth member-data))))
> 	 (email (if ask (cf-search-email (read-from-minibuffer "Search for email: ")) email))
> 	 (really (y-or-n-p (format "Do you really want to send it to: %s?" (if ask email name)))))
>     (if (and really (or id ask))
>       (if (string-match "@" email)
> 	(progn
> 	  ;; (message (escape-% subject))
> 	  (speak voice)
> 	  (mutt-send-file name email esubject file))
> 	(message "No email specified"))
>       (message "Aborted sending."))))
>
>> Moreover, some devs are even reluctant to hide metadata (like unique
>> ID implemented in org-id module) from users (which is possible and
>> also partially implemented).
>
> I hope that I have demonstrated that one who develops could review
> several various paradigms and learn more. I am fine with any decision
> of design for Org mode as I use it as it is and I have for me other
> ways of managing data. I am not sure how much those features have been
> discussed to say that hiding meta data is good or not good. It is
> better to discuss and find what is more useful.
>
> What I can see is that people complain for speed and they build
> extensions that help with it. Extensions are external while built-in
> Org does not keep up with the dynamic how people expect it to be.
>
> For example I would expect Org to be very simple, very very simple, I
> would rewind it back to its roots. Somebody else would like
> complexities. Currently I can see that Org is not made for
> complexities. It is better to unwind the development and make Org in
> core very basic and speedy and let people enhance it with external
> packages. In general it is better to remain simple. Even that may not
> be possible any more.
>
> I see hard work by many people who try to enhance Org as hierarchical
> knowledge of data because people want to have feature X, but group of
> those enhancements in reality belong to relational databases and not
> to text files. Developers wish to accommodate various people and yet
> by doing so they develop it into complex software. (129 .el packages
> for one Emacs mode!?)
>
> Among those one shall read the Doug Engelbart's paradigms, then
> especially if one is developer of system of data management that many
> people use, one shall explore other paradigms, including various
> approaches to data handling. And overall one shall keep it simple as
> it is main fundament of Org to be simple, while practical fact remains
> that it is not anymore simple, not at all. 
>
> I remember back in time with BASIC programming language that it had
> also something like a built-in database that one could put on the
> bottom of the file. Then there is also Perl's __DATA__ that is placed
> straight into the file and one could also place images and other
> stuff. Maybe the meta data could be kept this way in just one heading
> named Meta data, and this heading would not be exported, it could be
> hidden from the user and it could contain the database necessary for
> single Org file. By pressing key to show properties one could see
> properties or simply make them hidden. By making a copy of subtree the
> metadata would also copy as usual. By exporting, one could make Org
> without meta data, and I like using this information as I like sending
> Org headings without personal meta data to third parties.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24  9:00       ` Jean Louis
  2020-11-24  9:45         ` Eric S Fraga
  2020-11-24 18:47         ` Dr. Arne Babenhauserheide
@ 2020-11-26  3:32         ` Ihor Radchenko
  2020-11-26 11:58           ` Jean Louis
  2 siblings, 1 reply; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-26  3:32 UTC (permalink / raw)
  To: Jean Louis; +Cc: Texas Cyberthal, emacs-orgmode

> Can I automated the execution of Babel code upon opening of the Org
> file?

Adding to other suggestions, you can always add a custom function to
org-mode-hook instead of playing with file-local variables.

> Then we comes to actual execution of tasks. How do we get reminded?
>
> Is the reminder only if I press {C-c a} for org-agenda? Do I need to
> do action to get reminded?

You can always configure Emacs to run agenda on startup. Just add a
command to your init file ;)

For automatic reminders, there is built-in org-notify.el or external
org-alert package (https://github.com/spegoraro/org-alert).

> Personal problem is that tasks are sparse and separate in various Org
> files and not centralized. I become dependent of org-agenda to do what
> I need but it never does what I need.

I agree that org-agenda has many issues that cannot be easily solved
because of its complexity. However, everything you describe (including
multi-occur) can also be achieved with org-ql
(https://github.com/alphapapa/org-ql) - analogue of SQL query language
for org-mode (with more optimisations in comparison with org-agenda). 

Best,
Ihor

Jean Louis <bugs@gnu.support> writes:

> * Ihor Radchenko <yantar92@gmail.com> [2020-11-23 08:43]:
>> >> I am wondering what you mean by Org's philosophy. Why would it have anything to do with directories?
>> >
>> > Org's philosophy is to have one or a handful of directories without
>> > nesting of directories.  Users are not expected to have their Org
>> > files in a deeply nested tree.  Org also prefers big files with large
>> > trees rather than lots of little files.
>> >
>> > By philosophy, I mean the dev consensus on the correct way to do
>> > things, and coded configuration and usability biases.
>> 
>> I believe that org support all possibilities. The user can decide to
>> keep many (possibly nested) org files, a few large org files, or
>> anywhere in between. There are several parallel feature sets allowing to
>> work in a single file as well as with a bunch of smaller files.
>
> Yes, sure, and I guess you mentioned some people have problems with
> many files. And I have no problem at all with many files as they are
> per subject separated, per person or per subject separated. They are
> not hyperlinked to each other, it is me who make system to hyperlink
> to files.
>
> Searching for Joe Doe, F4 and I am in Org file for Joe Doe. My
> personal TODO list need not really show the tasks assigned to Joe Doe,
> I could show only * TODO Joe Doe and when I click there then I can get
> all tasks for Joe Doe as new Org file.
>
> It means I am accessing hundreds of Org files from the meta level by
> using conceptual location backed by the database.
>
> Some people maybe access multiple Org files through Agenda, me I
> don't. Some items are "non existent" and I do not know how to ask
> agenda to refresh itself. This is not big deal as I do not access
> items throgh Agenda, though I find it very useful. 
>
> org-agenda is trying to put all tasks and notes from various files
> into one list and that is of course not so easy task considering that
> files can be anywhere on the file system and that they need to be
> "remembered". 
>
>> For a single file, the user can search headings with org-goto (without a
>> need to explicitly travel through all the nesting headline levels),
>> reveal only headings satisfying certain keyword/tag/any other search
>> criteria with org-sparse-tree, or built agenda views restricted to a
>> single file (or even subtree).
>
> M-x org-goto is useful feature to find headlines. And I never use it,
> just standard Emacs search is enough within a file. Meanings I am
> searching are often inside of the headline. And it is not my perosnal
> way locating things.
>
> Personally, I am using parts of Org, like specific headling to export
> it and to send to remote person, or to print the file as project and
> to bind it nicely.
>
> When I see repetitive action, for example that I have to send "Daily
> Report" template to a person by email, than I just bookmark that in
> Emacs with {C-x r m} under something that I think is the meaning of
> it. Then I forget about it. Next time when I need to send report, I am
> {C-x r b} and quickly completing it and then I am exporting and
> inserting into the email.
>
> In general I speak of subsets or sub-lists among lists. List of Org
> files is one list, list of headings within Org file is other list, and
> list of specific subject related headings or bookmarks to such is
> third subset of lists.
>
>> For multiple files located anywhere in the filesystem, there is always
>> org-refile capable of filing the information to proper place
>> searching deeply nested headlines with ease regardless of the file the
>> information is physically located in. Headlines from multiple files can
>> be grouped using agenda views for any given search criteria (showing
>> todo items or items for a single day/week is just a tiny subset of what
>> agenda can do).
>
> That may be useful for those who find it while my use case is
> different, here is how it is for me:
>
> ** TODO Heading [1/2] [50%]
>
> 1) [X] Do this
> 2) [ ] Do that
>
> that is my personal use case. I do not do things like:
>
> ** TODO Do this
>
> Description of the task
>
> And so far I know org-refile works on headings. It does not work on
> list items.
>
> Sometimes the task describes something that belongs to other file, I
> just kill and yank to other file. And I keep RCS revision control
> system of files.
>
> As user may have many various sparse tasks to do or notes that require
> action and attention in soonest future it is best to consolidate tasks
> into one centralized system.
>
> Such system should encompass all tasks or notes that require attention
> or action in soonest future and should offer constant reminders to
> user on what has to be done and when and which people are related to
> the task.
>
> When I mentioned "sparse tasks" I refer to my usage and handling of
> mess:
>
> 1) Bunch of Org files, org-agenda and Org mode tries to accommodate me
>    by consolidating everything into lists
>
> 2) There are hundreds of such tasks all over, Org tries to consolidate
>    it.
>
> 3) There are various tasks and actions to do that are not recorded in
>    Org files, those cannot be handled by Org.
>
> 4) There are database based Tasks in several groupings, some are just
>    tagged with TODO, some are recorded in actual action requiring
>    groups.
>
> Instead of attempting to be perfect by using Org files for me
> personally is best to consolidate all tasks in the database as such
> are related either to people mostly or to some subjects related to me
> personally which again belongs to "People".
>
> And Org file for people need not have a task there, it can be exported
> automatically into the Org.
>
> - when searching for Person Robert S., I locate person and press F4
>
> - Org file for that person is automatically created
>
> - heading * Tasks is automatically created and expanded there by using SQL
>
> Concept is here:
>
> * Tasks
>
> #+BEGIN_SRC sql :engine postgresql :exports results :results value raw 
> SELECT '** [[(todo ' || simpletodos_id || ')][TODO]] ' || simpletodos_datecreated::date || ' ' ||
> simpletodos_name || E'\n\n' || simpletodos_description FROM simpletodos
> WHERE simpletodos_contacts = 23187;
> #+END_SRC
>
> #+RESULTS:
> ** [[(todo120)][TODO]] 2017-11-07 Do something
>
> Something I need to do. (THIS IS HEADING OR TASK DESCRIPTION).
>
> The SQL query need to defined only one time and not in the Org file,
> but in the program that creates the Org file for the user. Instead of
> the SQL query in the specific Org file it could be a simple Emacs
> expression that never changes such as (tasks-for-user)
>
> Then the SQL query generates the headings under #+RESULTS: and those
> headings come from centralized consolidated database of tasks.
>
> It is then interesting that this column of the database can include
> any kind of the mode that Emacs supports, it could include any kind of
> file, be it image, video or anything as long as such task is assigned
> to the user. It could include other Org files and collection of Org
> files or just description or database based whole Org file if
> necessary. It becomes very abstract and liberated from limits.
>
> That way I would be editing tasks on the meta level by clicking on
> TODO link. If task would be done and completed it could be shown in
> separate section of Org file related to user.
>
> Additional buttons can be automatically included such as:
>
> - All tasks for user -> Hyperlink to meta level consolidated TODO management
>
> - Add task for user
>
> - Re-assign from this user to other user
>
> That is using Org mode as viewer of various information, not only as
> handler of the information.
>
> The cruft with org-agenda is then removed as then by pressing F5 I get
> the list of all tasks and I could filter it how I wish. Which is
> similar to org-agenda. The list is coming from the database and is
> blazing fast.
>
> Then I can filter using helm or ivy completion or built-in completion:
>
> - I can simply type name of person related to the task, be it myself
>   or somebody else. Majority of "my" tasks are related to other
>   people. I search by people, sometimes by companies or organizations.
>
> - I can type subject name or tag, any tag that need not be defined in
>   single Org file and I find the task
>
> - then if task is related to the person, I could quickly jump into
>   persons meta report, from where there is Org files, other files,
>   picture links all summarized in the meta Org profile, similar like
>   FBI profiles we see on movies, one find the person's name and can
>   see anything about that person.
>
> - or I could delete the task, re-assign, modify the task. It becomes
>   semi-automatically modified in the Org file of the user.
>
> Can I automated the execution of Babel code upon opening of the Org
> file?
>
> When all tasks become centralized by any means, in my case in the
> central database, then Org files get liberated from tasks and become
> structural and relational. I can edit each task and I can always see
> the updated list of the tasks and relations from one object to the
> other. Hyperlinks get automatically created.
>
> Personal problem is that tasks are sparse and separate in various Org
> files and not centralized. I become dependent of org-agenda to do what
> I need but it never does what I need.
>
> Example is the need to relate task to people. Tasks are people related.
>
> Purchasing cloths for your daughter? People.
>
> Visiting museum? People related.
>
> Some people are in Kenya, I do not think always on them. But I might
> when I come there. Then I would write "Kenya" to get people I need to
> put attention on. If tasks are centralized I can quickly jump to list
> of Kenyan people.
>
> If tasks are not centralized I need to put some tag under all those
> people's files "Kenya" which is repetitive and error prone activity.
>
> And I get trapped into "Org mode" for years. Which I am now, I am
> trapped but it does not help me to manage things how I think.
>
> I do value org-agenda but it is large effort to make SQL query out of
> the Org mode. And very expensive effort as it is huge program:
>
> -rw-r--r-- 1 415K Oct 19 10:20 org-agenda.el
>
> If I organize all my tasks centrally and only display them in Org
> files related to people, then making similar features like org-agenda
> becomes trivial.
>
> - Agenda for current week becomes trivial SQL query such as to select
>   those tasks by current week. Result becomes a list that may be used
>   either in Emacs completion or tabulated list mode or in Org or any
>   kind of modes.
>
> - To list entries with any kind of tags also become trivial, at least
>   for centralized database tasks that have been tagged.
>
> - searching for keywords is trivial single line SQL query.
>
> - multi-occur is not trivial, as that would involve searching in all
>   Org files. It asks for indexing Org files and going over them.
>
> - Finding any FLAGGED entries would become trivial
>
> It opens plethora of various means of reporting and accessing various
> action related notes or tasks.
>
> By general principle and due to nature of tasks that they do need
> attention, I think that all tasks should be centralized, any how, it
> does not matter how. From that principle I find it better that
> majority of tasks are handled in just few files and not many files as
> it becomes complex and users cannot any more remember which files.
>
> org-agenda and Org try to remember that for user, but there are many
> ways how Org files can be left without attention.
>
> If my staff member in other country uses Emacs such can access
> database and see assigned tasks. I can also export centralized tasks
> for the user and send such to user as Org file.
>
> If user updates tasks, as long as hyperlinks in the user's Org file
> are not disturbed, I can review the work of the user and just click on
> the hyperlink to update such task or mark them as DONE. Opinion of
> staff member on what is done and what is not done is not necessarily
> my opinion.
>
> Description of content body of the heading can be programmatically
> captured and entered into centralized database as a task.
>
> Then we comes to actual execution of tasks. How do we get reminded?
>
> Is the reminder only if I press {C-c a} for org-agenda? Do I need to
> do action to get reminded?
>
> I think computer shall be programmed to remind me on the start. Tasks
> that are in the database can be shown directly in Emacs, but SQL
> queries can be run and shown upon first log in into computer. Emails
> could be sent, SMS could be sent to remind me or other people assigned
> to the task. This brings attention and where people put attention that
> is becoming reality.
>
> Tasks could be shown by using timer in the mini buffer to remind user
> of what has to be done and what is next, what is today to be done.
>
> Keys can be assigned to TODAY, WEEK, MONTH, YEAR.
>
> Birthdays can be consolidated automatically, as if there is database
> of people, then their birtdays are automatic types of notes or tasks.
>
> People who travel often would like to see other people in the city. By
> changing one's location one could get list of known people and places
> in the city. If I am in Mombasa, Kenya I may forget that good
> restaurant as there are not many and visitor has to be brought in good
> one, not bad one (which there are many).
>
> With the introduction of emacs-libpq into GNU ELPA such features may
> become reality.
>
> emacs-libpq @ Github
> https://github.com/anse1/emacs-libpq
>
> Summary:
>
> - tasks are people related
>
> - plethora of Org files makes hard life to developers trying to satisfie users' needs
>
> - tasks should be centralized and related to objects such as people, organizations, subjects
>
> - Org files may be used as viewers for centralized task systems with
>   all the features left as they are as all properties and tags and
>   anything can be obtained from the database. Nothing changes.
>
> - upon saving Org file or upon click or invocation, the task in the
>   database can be updated if some description has been changed, but
>   updates can take place in the database directly.
>
> - tasks get liberated from any limits and formats, they can be just
>   hyperlinks or hyperdocuments to just anything.
>
> - integration and relation to many other objects becomes easier possible
>
> - searching, indexing, making plans, or creating new meta Org files on
>   the fly by using SQL queries becomes trivial. org-agenda of 450k can
>   become easily redundant
>   
> - once centralized, there must be reminding system that works within
>   or without Emacs, tasks are accessed by blazing speed, related
>   people's files are quickly located, various queries and ways of
>   reporting tasks in the list or meta Org file on the fly becomes
>   possible.
>
> I use "meta Org file" only to say that format is useful for displaying
> structured and relational information for the reason that it has
> hyperlinking support. As long as hyperlinks can be shown in any mode
> then reports could be displayed any how. 


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-24 18:47         ` Dr. Arne Babenhauserheide
  2020-11-24 18:54           ` Jean Louis
@ 2020-11-26  3:47           ` Ihor Radchenko
  1 sibling, 0 replies; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-26  3:47 UTC (permalink / raw)
  To: Dr. Arne Babenhauserheide, Jean Louis; +Cc: Texas Cyberthal, emacs-orgmode

> For my own setup I run code in a hook to update the agenda whenever I
> change a TODO state, clock in or clock out, but that has performance
> problems when I do it while the Agenda is shown.

You do not have or update the whole agenda view.

I use the following code to update the clocking highlights in agenda
even when I clock-in/out outside the agenda buffer:

https://github.com/yantar92/emacs-config/blob/master/config.org#update-highlight-from-currently-clocked-task-in-agenda-even-if-the-task-was-clocked-inout-from-outside

The same can be done for todo state changes using
org-agenda-change-all-lines

Best,
Ihor

"Dr. Arne Babenhauserheide" <arne_bab@web.de> writes:

> Jean Louis <bugs@gnu.support> writes:
>
>> Some people maybe access multiple Org files through Agenda, me I
>> don't. Some items are "non existent" and I do not know how to ask
>> agenda to refresh itself.
>
> Simply press the letter g.
>
> For my own setup I run code in a hook to update the agenda whenever I
> change a TODO state, clock in or clock out, but that has performance
> problems when I do it while the Agenda is shown.
>
>     (defvar todo-modified-from-agenda nil "Indicates whether org-mode todo state changes were triggered from the agenda. Check this to avoid trying to propagate the change back into the agenda")
>     ;; continuously update agenda view, from http://thomasf.github.io/solarized-css/test/org-hacks.html
>     (defun kiwon/org-agenda-redo-in-other-window ()
>       "Call org-agenda-redo function even in the non-agenda buffer."
>       (interactive)
>       (when (not (and (boundp 'todo-modified-from-agenda) todo-modified-from-agenda)) ; org-state non-nil means we’re coming from the org-after-todo-state-change-hook, which would throw when changing todo states from agenda due to a circular action
>         (let ((agenda-window (get-buffer-window (or (and (boundp 'org-agenda-buffer-name) org-agenda-buffer-name) "plan.org") t)))
>           (when agenda-window
>     	(with-selected-window agenda-window
>     	  (org-agenda-redo))))))
>     ;; advice agenda todo to avoid redo, thanks to http://nullprogram.com/blog/2013/01/22/
>     (defadvice org-agenda-todo (before org-agenda-disable-redo activate)
>       (setq todo-modified-from-agenda t))
>     (defadvice org-agenda-todo (after org-agenda-enable-redo activate)
>       (setq todo-modified-from-agenda nil))
>     
>     (add-hook 'org-clock-in-hook 'kiwon/org-agenda-redo-in-other-window)
>     (add-hook 'org-clock-out-hook 'kiwon/org-agenda-redo-in-other-window)
>     (add-hook 'org-after-todo-state-change-hook 'kiwon/org-agenda-redo-in-other-window)
>
>
> Best wishes,
> Arne
> -- 
> Unpolitisch sein
> heißt politisch sein
> ohne es zu merken


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-26  2:06                                       ` Tom Gillespie
@ 2020-11-26  5:06                                         ` Jean Louis
  2020-11-26  5:31                                         ` Jean Louis
  2020-11-26  5:34                                         ` Greg Minshall
  2 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-26  5:06 UTC (permalink / raw)
  To: Tom Gillespie; +Cc: Tim Cross, emacs-orgmode

* Tom Gillespie <tgbugs@gmail.com> [2020-11-26 05:07]:
> Hi Jean,
> 
> Some points in summary before a long email.
> 1. Having an accepting default behavior as a user (i.e., saying yes to
>    all prompts) is bad security practice. The only thing that systems
>    can do is prompt as infrequently as possible in hopes that people
>    don't get prompt fatigue. Emacs does this.

I know, and do not speak for one person but for those who will not
know. To ask users who do not know programming using editor for text
editing and to assume that users will know programming terms:
variables, values, applying, safe and ANYTHING else that is written in
eval: is bad security practice.

> 2. If mutt is launching Emacs, you can pass --eval "(setq
>    enable-local-eval nil)" on the command line and all file local
>    variables will be ignored and treated as plain text.

Sure, I know, but human text editors will not know. They are faced
with YES/NO. What has to be improved is the YES/NO dialogue that has
no hyperlinks to its corresponding explanations and asks users things
with wrong assumption that user will understand them.

> 3. If people don't read the manual and don't read the prompt, there
>    isn't much more that Emacs can do while still empowering the
>    user.

Empowering can take place in the dialogue as such has enhancement
space. Do you think it is good idea?

>   In those cases we also can't assume that the community will be of
>   much help either, as we are trying to be here.

Community is of great help. Users are many and just fraction of users
are in this community for example. Only subset of users even while
being in community or reading emails or website will be participating
in such.

> 4. That said, the local variables prompt could be more alarming and
>    provide a quick way to access the manual about local
>    variables. I'll look into a patch for that.

Yes, that is it. To empower user is to give him straight better
reference on what to do.

Following places could become buttons:

The local variables list in new-concept.org
    ^^^^^^^^^^^^^^^
    Button to A below
    
contains values that may not be safe (*).
^^^^^^^^^^^^^^^                 ^^^^
Button to A below               Button to A below

Template:

Do you want to apply it?  You can type
               
y  -- to apply the local variables list.
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	 Button to A below
	 
n  -- to ignore the local variables list.

!  -- to apply the local variables list, and permanently mark these
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
	 Button to A
      values (*) as safe (in the future, they will be set automatically.)

  * eval : (let ((pos (org-babel-find-named-block "stages"))) (when
    pos (save-excursion (org-with-point-at pos
    (org-babel-execute-src-block)))))
    ^^^^^^
    Button to A below.

The template how it looks originally:

The local variables list in new-concept.org
contains values that may not be safe (*).

Do you want to apply it?  You can type
y  -- to apply the local variables list.
n  -- to ignore the local variables list.
!  -- to apply the local variables list, and permanently mark these
      values (*) as safe (in the future, they will be set automatically.)

  * eval : (let ((pos (org-babel-find-named-block "stages"))) (when pos (save-excursion (org-with-point-at pos (org-babel-execute-src-block)))))

Button A should follow here:
^^^^^^^^^
File: emacs.info,  Node: Safe File Variables,  Prev: Specifying File Variables,  Up: File Variables

49.2.4.2 Safety of File Variables
.................................


Right now situation is this:

- if user press C-g to abort the file will be loaded, which is good

- user will not be able to access any of the visible buttons by using
  cursor because somebody made cursor invisible in that
  dialogue. Cursor should be made visible that keys can be used to
  access buttons

- There shall be on minibuffer some key like "? TO READ MANUAL" to go
  straight to the manual section above which is warning user much
  better.

- IF THE USER press C-g, or tries to escape it or clicks by using
  keyboard on the button, or even switch to the buffer with keyboard,
  or uses mouse to activate the button, or uses ? to activate to read
  manual, in all those cases the dialogue should be interrupted and
  file loaded. User should not be left facing dialogue if it was clear
  from user's interaction that there was doubt with the meanings of
  the dialoue.

- Adding references on unsafe local variables to TUTORIAL

> Full disclosure. I make use of file local variables every day
> and I have spent quite a while writing orgstrap which relies heavily
> on them, so I am definitely biased.

With such enhancement there is no need to change history of the past,
we just change the future and history for the future.

> Emacs is a sharp tool. Experts need sharp tools. If someone
> complains about the security of prompts but also admits that they
> always say yes to prompts without reading them, then no one will
> take them seriously when they try to argue that it is the prompt
> that is insecure.

I never say YES by the rule. I have explained sincerely that I did say
YES for number of years as I was thinking those are enhancements that
make things work. And I have used Emacs in that way for long
time. Overall I did not encounter many files with local variables
because I did not read other people's files for long time. Please try
to get the perspective. I was programming myself but in other
languages and never used local variables. If I do not read other
people's files it is hard to encounter Local variables. When it came
about 2016 to start reading other people's files that is where I
rather pressed YES. I did not put attention on each function and those
meanings and did not know meanings of functions.

If you say that it is important to take users seriously, then take
their behavior with the editor seriously and their proneness to
failures as well. Do not expect power users.

> It is like complaining that the forest is dangerous while insisting
> on eating the berries of all the plants and picking up all the
> snakes.

I think that analogy of Tom with the racing car is better.

To make your analogy better it would be like you have the forest with
excellent mushrooms and you invite general public to the forest. Then
you face public with some of potentially poisonous mushrooms and you
start asking them if they wish to accept Amanita muscaria mushroom as
it could be possibly unsafe. But people came to see those potentially
good mushrooms and did not hear of posionous mushrooms, damn, let me
say YES, I am here and I feel safe!

> Degrading usability because some users are irresponsible just
> reinforces the irresponsible behavior and everyone loses.

Usability is already degraded. You can enhance it. It is not nice
calling users irresponsible just because they did not read the manual
and fully understand it. In addition to Emacs Manual by asking users
to decide if variables are safe or not, Emacs is in the same time
asking users to know meanings of ALL possible functions and variables
that are located in such files. That is one big chunk of assumptions
and conditions that user should become responsible by such viewpoint.

In that case it would be best to lock the Emacs of using it unless ALL
users can pass the test to know everything written in the Emacs manual
and Emacs Lisp manual as well.

> Furthermore, Emacs does try to account for users who don't read the
> manual and has sane and safe defaults. Namely it does not blindly
> execute code but prompts the user and lets them know that something is
> going on. Further, when it prompts the user it does not provide a
> default action, it forces them to answer so that they must attend to
> what they are doing. This provides the user with an opportunity to
> become aware of a feature of Emacs that is new to them.

While that purpose is good and that is same purpose that I am
supporting our opinions differ.

Do you see how you said: "This provides the user with an opportunity
to become aware of a feature of Emacs that is new to them." -- this is
what is my wish too. I just think that one cannot become aware of a
feature that is new to them.

> The only other option is to never execute local variables until a
> user reads the manual and changes their config.

That is optional only in historical terms or if we make time machine
to go back and make more future prone defaults.

> With regard to the local variables prompt. Maybe the right thing to do
> in this case would be to add a "?" option so that users can open the
> manual?

Button and ?

? was or is at most cases shown to user, but on the dialogue speaking
of safety is not shown. 

> That seems like it would help. That said, the second line of
> the prompt reads "contains variables that may not be safe (*)" which
> should be alarming. I guess it could be changed to "THIS FILE COULD
> PWN YOU. Please review potentially unsafe variables marked with an
> asterisk (*)."

You could include that for advanced users. The point of discussion is
that millions are not advanced users and using terminology such as
variable, value, apply, safe is out of the context for the user who is
not advanced. Using "pwn" would be hard to understand.

When word is out of the context such cannot be understood.

I gave one reference from Stack-something where users do not
understand "safe" and then other one came with the comment also not
understanding "safe".

Safe in the context of the dialogue and relation to computing means
safe to user's data, privacy and safe computing. One has to know
that majority of computer users are not aware of security problems in
computing and that they put things on risk.

Users who are not programmers or just know how to edit files,
translate, make reports, they need not know what is programming and
computer terminology. If that would be so than there would be no
computing dictionaries, the manual and Emacs Lisp manual just to name
few examples.

I have my staff members who are using Emacs. They do not know it. One
is in Tanzania, one is in Kampala, Uganda. They will know how to edit
Org file and how to send me portion of it, but they did not learn
nothing about computing.

For them the word "safe" is never in the context of computing! Because
if one does not know the context around the word meaning is lost. For
them "safe" means free from danger or the risk of harm. That is in the
personal context, did anybody tell them there is something in the
computing context? References from Stack- show example that people
understand it so. When saying "safe" one has to say "safe to your
data" and if there are no references to context then there shall be
references to manual as example.

I am not sure if "bold" is right way to warn users if it does not work
well on console. Underlined, different colored, links are showing
better in console and if somebody does not use colors I think
underlined will show better.

So if you can do something about that to enhance references to
meanings of what dialogue is telling to user, that would be great.

Jean


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-25 23:39                                   ` Tim Cross
@ 2020-11-26  5:24                                     ` Jean Louis
  2020-11-26  6:46                                       ` Tim Cross
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-26  5:24 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode

* Tim Cross <theophilusx@gmail.com> [2020-11-26 02:40]:
> > OK it is great that it is so. Are you maybe author doing it? Is there
> > any reference that authors are doing so? I have MELPA downloaded you
> > could tell me how do I see that author is deciding if package is for
> > release?
> >
> 
> You can clone the melpa repository and see the recipes for each
> package.

I did before some time.

> It depends on how the author specifies their MELPA recipe. They can
> define their recipe based on a specific commit (SHA). If they do this,
> it doesn't matter how often or when MELPA pulls from the repository as
> they will always get the same commit.

I have not seen that, and I have assumed you would know better and
wanted to see how authors are reporting that package is ready for
release and I do not see that.

Recipes are like this:

(0blayout :repo "etu/0blayout-mode" :fetcher github)

(0x0 :url "https://git.sr.ht/~zge/nullpointer-emacs" :fetcher git)

(0xc :fetcher github :repo "AdamNiederer/0xc")

So that recipe alone does not tell me that author reports that new
package is ready, it is fetched from git, but there are parts of code
that I did not see that is why I am assuming you know it better.

> Your model is flawed. You can have both automatic pulling AND author
> control over when a new package is issued.

To make it practical tell me where is that author's control?

I have quick view of files and any recipe files in directory
melpa/recipes do not give me any pointers, it is all automated and
fetched from git.

> If author defines their MELPA recipe to use a SHA a new package will not
> be issued until they update their recipe with a new SHA.

You seem to be very confident and for this reason I assume you know it
better, but due to contradictions please show one practical recipe or
package where author has control on when is package ready to be
released.

$ grep sha *

on recipes does not give any reference.

$ grep commit *

eval-in-repl:              :commit  "origin/master")
git-auto-commit-mode:(git-auto-commit-mode :fetcher github :repo "ryuslash/git-auto-commit-mode")
git-commit:(git-commit :fetcher github
git-commit:            :files ("lisp/git-commit.el")
git-commit:            :old-names (git-commit-mode))
git-commit-insert-issue:(git-commit-insert-issue :fetcher gitlab :repo "emacs-stuff/git-commit-insert-issue")
vc-auto-commit:(vc-auto-commit :fetcher github :repo "thisirs/vc-auto-commit")
what-the-commit:(what-the-commit :fetcher github
what-the-commit:         :repo "danielbarbarito/what-the-commit.el")

So there is nothing I can find that points or references to what you
say.

> If author defines their MELPA recipe to pull from a release branch, a
> new package will not be issued until they update the release branch and
> version tag.

I am sorry I do not see reference to it. You are convincing but I do
not see reference.

Recipe for bar-cursor:
(bar-cursor :repo "ajsquared/bar-cursor"
:fetcher github)

Recipe for magit:

(magit :fetcher github
       :repo "magit/magit"
       :files ("lisp/magit"
               "lisp/magit*.el"
               "lisp/git-rebase.el"
               "Documentation/magit.texi"
               "Documentation/AUTHORS.md"
               "LICENSE"
	       (:exclude "lisp/magit-libgit.el"
			 ;; Cannot remove this yet because it would
			 ;; also be removed from the stable version.
			 ;; "lisp/magit-section.el"
			 )))

Repo magit/magit:
https://github.com/magit/magit

I have given you references, maybe I cannot read that well, so you can
give me references to show if authors have participation in decision.

Jean


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-25 22:46                               ` Tim Cross
  2020-11-25 23:07                                 ` Jean Louis
@ 2020-11-26  5:29                                 ` Greg Minshall
  2020-11-26  5:53                                   ` Jean Louis
  2020-11-26  6:35                                   ` Tim Cross
  1 sibling, 2 replies; 121+ messages in thread
From: Greg Minshall @ 2020-11-26  5:29 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode, Jean Louis

Tim,

> I think you missed my point. There is no benefit in MELPA adopting
> signed packages because there is no formal code review and no vetting
> of the individuals who submit the code.

it occurs to me there might be one benefit: if George, whom you trust,
says, "I've been running version 1.2.3 of package xYandZ from MELPA and
i have a lot of confidence in it", then if you find that version of that
package with a trusted MELPA signature, you maybe know that you and
George are running the same software.  i.e., it helps with the "web of
trust" (if people still talk of that).

(so, the requirement for this is not audited packages, but a solid,
"secure", release procedure by MELPA.)

cheers, Greg


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-26  2:06                                       ` Tom Gillespie
  2020-11-26  5:06                                         ` Jean Louis
@ 2020-11-26  5:31                                         ` Jean Louis
  2020-11-26  6:18                                           ` Tom Gillespie
  2020-11-26 11:44                                           ` Detlef Steuer
  2020-11-26  5:34                                         ` Greg Minshall
  2 siblings, 2 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-26  5:31 UTC (permalink / raw)
  To: Tom Gillespie; +Cc: Tim Cross, emacs-orgmode

Additionally, as a good example of faulty design, user is coerced to
ACCEPT local variables rather than is given fair choice.

As there is the option ! to "apply local variables and permanently
mark these values" but there is no option "not to apply local
variables and permanently mark these values".

That is not fair choice. It pushes user to finally ! apply and accept it, but
does not give chance to permanently ignore it.


Do you want to apply it?  You can type
y  -- to apply the local variables list.
n  -- to ignore the local variables list.
!  -- to apply the local variables list, and permanently mark these
      values (*) as safe (in the future, they will be set automatically.)


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-26  2:06                                       ` Tom Gillespie
  2020-11-26  5:06                                         ` Jean Louis
  2020-11-26  5:31                                         ` Jean Louis
@ 2020-11-26  5:34                                         ` Greg Minshall
  2020-11-26  5:49                                           ` Jean Louis
  2 siblings, 1 reply; 121+ messages in thread
From: Greg Minshall @ 2020-11-26  5:34 UTC (permalink / raw)
  To: Tom Gillespie; +Cc: Tim Cross, emacs-orgmode, Jean Louis

Tom,

> 2. If mutt is launching Emacs, you can pass --eval "(setq
>    enable-local-eval nil)" on the command line and all file local
>    variables will be ignored and treated as plain text.

maybe that is one thing that could really help here.  possibly mutt and
other emacs-based mail readers, when putting up a received e-mail
message, should by default do just that (and, also, '(setq
enable-local-variables :safe)'?).

i use mh-e, and it does *not* seem to do that.  but, if emacs is niche,
mh-e is the niche-squared. :)

cheers, Greg


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-26  5:34                                         ` Greg Minshall
@ 2020-11-26  5:49                                           ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-26  5:49 UTC (permalink / raw)
  To: Greg Minshall; +Cc: Tom Gillespie, Tim Cross, emacs-orgmode

* Greg Minshall <minshall@umich.edu> [2020-11-26 08:34]:
> Tom,
> 
> > 2. If mutt is launching Emacs, you can pass --eval "(setq
> >    enable-local-eval nil)" on the command line and all file local
> >    variables will be ignored and treated as plain text.
> 
> maybe that is one thing that could really help here.  possibly mutt and
> other emacs-based mail readers, when putting up a received e-mail
> message, should by default do just that (and, also, '(setq
> enable-local-variables :safe)'?).
> 
> i use mh-e, and it does *not* seem to do that.  but, if emacs is niche,
> mh-e is the niche-squared. :)

I have sent summary of our discussion here to the bug #44837 for
further review, we may switch to better Org related subjects here if
you people agree.

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44837


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-26  5:29                                 ` Greg Minshall
@ 2020-11-26  5:53                                   ` Jean Louis
  2020-11-26  6:35                                   ` Tim Cross
  1 sibling, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-26  5:53 UTC (permalink / raw)
  To: Greg Minshall; +Cc: Tim Cross, emacs-orgmode

* Greg Minshall <minshall@umich.edu> [2020-11-26 08:29]:
> Tim,
> 
> > I think you missed my point. There is no benefit in MELPA adopting
> > signed packages because there is no formal code review and no vetting
> > of the individuals who submit the code.
> 
> it occurs to me there might be one benefit: if George, whom you trust,
> says, "I've been running version 1.2.3 of package xYandZ from MELPA and
> i have a lot of confidence in it", then if you find that version of that
> package with a trusted MELPA signature, you maybe know that you and
> George are running the same software.  i.e., it helps with the "web of
> trust" (if people still talk of that).
> 
> (so, the requirement for this is not audited packages, but a solid,
> "secure", release procedure by MELPA.)

Maybe principles from Freenet Web of Trust could be somehow
implemented for Emacs users and our discussions.
https://www.draketo.de/english/freenet/friendly-communication-with-anonymity



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-26  5:31                                         ` Jean Louis
@ 2020-11-26  6:18                                           ` Tom Gillespie
  2020-11-26  9:10                                             ` Jean Louis
  2020-11-26 11:44                                           ` Detlef Steuer
  1 sibling, 1 reply; 121+ messages in thread
From: Tom Gillespie @ 2020-11-26  6:18 UTC (permalink / raw)
  To: Jean Louis; +Cc: Tim Cross, emacs-orgmode

> As there is the option ! to "apply local variables and permanently
> mark these values" but there is no option "not to apply local
> variables and permanently mark these values".

I have a longer reply that I will send tomorrow, but wanted to respond
to this.

Yes exactly! I have the equivalent complaint in the draft extras from
my previous message! I actually implemented a blacklist for file local
variables in orgstrap because it is a critical security feature. The
fact that it is missing is absolutely a bug and is extremely annoying
for some of my current workflows where I have local variables that I
never want to accept.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-26  5:29                                 ` Greg Minshall
  2020-11-26  5:53                                   ` Jean Louis
@ 2020-11-26  6:35                                   ` Tim Cross
  2020-11-26 12:27                                     ` Greg Minshall
  1 sibling, 1 reply; 121+ messages in thread
From: Tim Cross @ 2020-11-26  6:35 UTC (permalink / raw)
  To: Greg Minshall; +Cc: emacs-orgmode, Jean Louis


Greg Minshall <minshall@umich.edu> writes:

> Tim,
>
>> I think you missed my point. There is no benefit in MELPA adopting
>> signed packages because there is no formal code review and no vetting
>> of the individuals who submit the code.
>
> it occurs to me there might be one benefit: if George, whom you trust,
> says, "I've been running version 1.2.3 of package xYandZ from MELPA and
> i have a lot of confidence in it", then if you find that version of that
> package with a trusted MELPA signature, you maybe know that you and
> George are running the same software.  i.e., it helps with the "web of
> trust" (if people still talk of that).
>
> (so, the requirement for this is not audited packages, but a solid,
> "secure", release procedure by MELPA.)
>

It could, but to get that level of assurance, you not only have to
verify the signature is valid (something which is automated if enabled),
you also need to verify that both packages have the exact same
signature, which is pretty much a manual process. So in addition to
telling you the version number, George would also need to communicate
the signature and that would need to be compared to the signature you
have in the package you downloaded to know that the packages are in fact
the same (you cannot rely on version numbers for any real verification).

Signatures are a good thing and MELPA should implement them. However,
what they are really useful for is ensuring the package you have
downloaded has not been modified since it was created and signed.

--
Tim Cross


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-26  5:24                                     ` Jean Louis
@ 2020-11-26  6:46                                       ` Tim Cross
  0 siblings, 0 replies; 121+ messages in thread
From: Tim Cross @ 2020-11-26  6:46 UTC (permalink / raw)
  To: Jean Louis; +Cc: emacs-orgmode


Jean Louis <bugs@gnu.support> writes:

> * Tim Cross <theophilusx@gmail.com> [2020-11-26 02:40]:
>> > OK it is great that it is so. Are you maybe author doing it? Is there
>> > any reference that authors are doing so? I have MELPA downloaded you
>> > could tell me how do I see that author is deciding if package is for
>> > release?
>> >
>>
>> You can clone the melpa repository and see the recipes for each
>> package.
>
> I did before some time.
>
>> It depends on how the author specifies their MELPA recipe. They can
>> define their recipe based on a specific commit (SHA). If they do this,
>> it doesn't matter how often or when MELPA pulls from the repository as
>> they will always get the same commit.
>
> I have not seen that, and I have assumed you would know better and
> wanted to see how authors are reporting that package is ready for
> release and I do not see that.
>
> Recipes are like this:
>
> (0blayout :repo "etu/0blayout-mode" :fetcher github)
>
> (0x0 :url "https://git.sr.ht/~zge/nullpointer-emacs" :fetcher git)
>
> (0xc :fetcher github :repo "AdamNiederer/0xc")
>
> So that recipe alone does not tell me that author reports that new
> package is ready, it is fetched from git, but there are parts of code
> that I did not see that is why I am assuming you know it better.
>
>> Your model is flawed. You can have both automatic pulling AND author
>> control over when a new package is issued.
>
> To make it practical tell me where is that author's control?
>
> I have quick view of files and any recipe files in directory
> melpa/recipes do not give me any pointers, it is all automated and
> fetched from git.
>
>> If author defines their MELPA recipe to use a SHA a new package will not
>> be issued until they update their recipe with a new SHA.
>
> You seem to be very confident and for this reason I assume you know it
> better, but due to contradictions please show one practical recipe or
> package where author has control on when is package ready to be
> released.
>
> $ grep sha *
>
> on recipes does not give any reference.
>
> $ grep commit *
>
> eval-in-repl:              :commit  "origin/master")
> git-auto-commit-mode:(git-auto-commit-mode :fetcher github :repo "ryuslash/git-auto-commit-mode")
> git-commit:(git-commit :fetcher github
> git-commit:            :files ("lisp/git-commit.el")
> git-commit:            :old-names (git-commit-mode))
> git-commit-insert-issue:(git-commit-insert-issue :fetcher gitlab :repo "emacs-stuff/git-commit-insert-issue")
> vc-auto-commit:(vc-auto-commit :fetcher github :repo "thisirs/vc-auto-commit")
> what-the-commit:(what-the-commit :fetcher github
> what-the-commit:         :repo "danielbarbarito/what-the-commit.el")
>
> So there is nothing I can find that points or references to what you
> say.
>
>> If author defines their MELPA recipe to pull from a release branch, a
>> new package will not be issued until they update the release branch and
>> version tag.
>
> I am sorry I do not see reference to it. You are convincing but I do
> not see reference.
>
> Recipe for bar-cursor:
> (bar-cursor :repo "ajsquared/bar-cursor"
> :fetcher github)
>
> Recipe for magit:
>
> (magit :fetcher github
>        :repo "magit/magit"
>        :files ("lisp/magit"
>                "lisp/magit*.el"
>                "lisp/git-rebase.el"
>                "Documentation/magit.texi"
>                "Documentation/AUTHORS.md"
>                "LICENSE"
>          (:exclude "lisp/magit-libgit.el"
>        ;; Cannot remove this yet because it would
>        ;; also be removed from the stable version.
>        ;; "lisp/magit-section.el"
>        )))
>
> Repo magit/magit:
> https://github.com/magit/magit
>
> I have given you references, maybe I cannot read that well, so you can
> give me references to show if authors have participation in decision.
>

The available recipe options are all clearly documented in the README
for the melpa repository. Most maintainers don't use the :commit option
because it is extremely inconvenient, but it is there if they want it.
It is inconvenient because it means the recipe has to be updated, which
means a pull request has to be accepted before the package can be released.

Most maintainers will maintain a specific branch for releases. This is
normal practice in version control. Often, this is the master branch,
but 'release' and 'melpa' are also commonly used. Code is not pushed
onto these branches until it is ready for release. The package
maintainer has full control of this branch and therefore has full
control over when new code is released. This is also the model used by
GNU ELPA for external packages.

This is not the model you imply, where MELPA just grabs the data
whenever it wants and releases new version without management by the
package maintainer, resulting in the release of code that is not ready
for release.

--
Tim Cross


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-25 13:05                           ` Eric S Fraga
  2020-11-25 13:13                             ` Jean Louis
@ 2020-11-26  8:39                             ` Christian Moe
  1 sibling, 0 replies; 121+ messages in thread
From: Christian Moe @ 2020-11-26  8:39 UTC (permalink / raw)
  To: Eric S Fraga; +Cc: emacs-orgmode, Jean Louis


Located Eric's message and can confirm the same for mu4e (no query about
setting/evaluating anything upon opening the message).

cm

Eric S Fraga writes:

> On Wednesday, 25 Nov 2020 at 15:38, Jean Louis wrote:
>> I have not configured anything. In fact I have opened the email and I
>> was surprised that I am getting those dialogues to execute local
>> variables.
>
> Very strange.  It was my email that instigated this part of the
> thread.  I can view my email and I do not get asked to set any locate
> variables or, in this case, evaluate the elisp expression.  Out of
> curiosity, what mail reader did you use that actually interprets file
> local variables?  Gnus article view does not.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Is Org really so simple?
  2020-11-26  3:08                       ` Ihor Radchenko
@ 2020-11-26  8:57                         ` Jean Louis
  2020-11-26 18:07                         ` Dr. Arne Babenhauserheide
  1 sibling, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-26  8:57 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-26 06:09]:
>  Texas Cyberthal <texas.cyberthal@gmail.com>:
> > By philosophy, I mean the dev consensus on the correct way to do
> > things, and coded configuration and usability biases.
> 
> According to my experience with org-mode development (I am not talking
> about third-party packages here), it is discouraged to change org-mode
> towards hiding metadata in org files or store *unique* data (that cannot
> be derived from the contents of the org files) related to org-mode
> externally (not in org files). It is not official statement, but rather
> my impression so far.

Personally, and from the idea of having structured referencable
information I have derived my choice to move small pieces of
information to database management as that way I can keep unique IDs
without thinking and without having things sparse on the computer. I
am working on a meta level, editing pieces of information that are yet
to become Org file.

We use Org files for indexing and great chunk of code has been written
to help users index meta data, agenda does that for example. It tries
to make a main index. But it does not cope well with complex user
cases.

In my opinion Org could be more useful would there be more
improvements to collection of meta data from all of the system and
making it more available or exposed and accessible to
users. Multi-occur option in Agenda is nice and serves the same
purpose more or less and other options.

To explain "more exposed", that would mean that there could be easier
to access listing options that user can access the index in more
liberated way. The dialogue for agenda is somehow rigid, it gives
options to do this or that, one has to search or enter queries. But
that is where it stops.

When I say more liberated way, that is analogous to SQL query
language and I do not say users should learn something complicated.

Rather the query that is made by the user should be remembered as such
and be made available as a command, macro or similar that can be saved
for later.

Example is when I search for TODO entries with special TODO kwd, then
I may search for 3-4 keywords or 7-10 keywords during one
day. Then there would be repetition to search again for those
keywords. There is history value access in the minibuffer but that
does not remember searches for the next Emacs session. Having
rememberable customized searches for users would be useful.

Other issue with the Agenda window is that I cannot move from the
minibuffer to other window, as if I wish to enter TODO I may wish in
the same time to open some fiels and look for references while in the
same time I am working with the Agenda options. It is hard for me to
understand why it was made that way, could it be because of read-char
approach? 

> > And people try to do exactly that, people are developing Org in the
> > manner to relate objects in Org file to anything else. And they do
> > hard work as they do it manually. Relational database speeds up and
> > does not tell user to manually hyperlink various relations.
> 
> Could you provide some more examples? I do not see how relational
> database is different from creating hyperlinks in org. Either way, the
> user needs to file an object/headline somewhere into org file, which is
> inherently manual.

That is exactly how I am working personally and the software will be
available when polished. It is based on same principles of having
everything hyperlinked, stored, accessible, indexable, it is dynamic
knowledge repository which I use as for meta Org-like editing of
items. It can transform everything or just one subtree to Org files on
the fly which can be saved or delegated to others.

The explanation itself is in relational databases concept. We are
using Org mode and we already try doing, we are trying hard to make
relations stick together. Compared to SQL databases I see that as hard
work, effort to patch the unpatchable.

Maybe this URL could serve as good example to explain concept of
relational databases in simple manner:
https://www.dummies.com/programming/sql/knowing-just-enough-about-relational-databases/

Or more serious one from IBM (which probably does not explain concepts
well):
https://www.ibm.com/cloud/learn/relational-databases

If table in the database is related (defined or internally connected
by its meaning and values) to other tables, then user is spared of
writing repetitive tasks.

Practical example would be:

- if text file is internally related to Joe Doe, then by clicking on
  the text file such as Org file, I could automatically get various
  hyperlinks to anything related to Joe Doe: Joe's emails list, Joe's
  SMS list, Joe's contact information, I could click and initiate a
  call with my mobile phone and just write notes without thinking on a
  phone number, I could click in Org file and send SMS to Joe that
  will be saved in computer without thinking on Joe's phone number, I
  could see relatives of Joe and find his sister and again have all
  the hyperlinks and relations to various other pieces of information
  related to Joe.

- and if I am in an Org file that has relation to other objects I
  would not need to construct hyperlinks by hand, they would be or
  could be constructed semi-automatically because the relation is
  already known.

Quoting me:

> > And people try to do exactly that, people are developing Org in the
> > manner to relate objects in Org file to anything else.

One example of way too much work is making unique IDs. Either user
decides to make it by invoking M-x, or saves the file and uses hook,
or does not invoke it. So it is in the Org but subset of users does
need Org ID numbers.

When I work with the database and wish to edit something equivalent to
a headline than the unique ID is generated automatically and I do not
need to think of it. It is made by database design.

Excerpt from hlinks table on my side:

CREATE TABLE hlinks (
hlinks_id SERIAL NOT NULL PRIMARY KEY,
....

Instead of customizing Emacs to insert IDs, customizing Org,
customizing specific files, going over specific files to find which
has unique ID which one does not have, having duplicates all over the
place, having pretty ugly and not meaningfull unique ID always shown
on screen and more or less to a degree disturbing, instead of having
them easily editable and changeable and error prone, instead of many
actions related to that unique ID, I have the above one line that does
it for me as database does the work. I need not think any more and
since I created that table I did not think until today about the
unique IDs because they are very reliable, stable, forever, database
is thinking for me, computer is taking job from me, and I am not
working for my computer.

Now if unique ID is related to one of following other tables of
subjects, objects:

- last USER who ever modified the heading, note, task, URL, anything
  related to that ID, I can find that last user. Hyperlink could be
  automatically generated button that points to on the fly generated
  Org buffer showing me such modification.

- I can find ANY USER who ever modified anything related to that
  unique ID and I can find specific time of modification in past, with
  hyperlink that I do not make by hand, that would show me all users
  and from which list I could hyperlink to the first example above.

- There is DATE in the hlinks table, so it is possible to have date as
  hyperlink button from where I can click to find other same date
  related entries, or I could invoke list to find nearby dates.

I do not create hyperlinks more than once in a function:

  (defun hyperscope-insert-buttons (tags)
  (let ((tags (split-string tags)))
    (insert "   Tags: ")
    (dolist (tag tags)
      (hyperscope-insert-button tag)
      (insert " "))))

  (defun hyperscope-insert-button (tag)
  (insert-text-button tag
		      'action
		      `(lambda (b) (hyperscope nil nil nil ,tag))
		      'mouse-action
		      `(lambda (b) (hyperscope nil nil nil ,tag))))

  That is my button. I never create those hyperlinks again. This
  relates only to the tags, but hyperlinks can be for any other type
  of relation.

  If the tag is "Dewi" the hyperlink is automatically shown in the
  header of the entry. It allows me to quickly see all entries for
  "Dewi" tag and come back to it.

- the heading of meta Org can have a status defined by user anyhow and
  I do not mean TODO/DONE but could be anything that changes later
  actions of the user, or automatically generates hyperlinks.

- possible EXPIRATION entry is there, it could be automatically
  hyperlinked to other expired items

- CURATOR entry is there, which is multi user based. User writing in
  the database is not necessarily curator of the entry. All items to
  curator's lists can be shown by hyperlinking automatically.

- HYPERLINK TYPE could be Message-ID to open up specific email
  message, then I could get a hyperlink to open all Message-IDs by
  that attribute

- MIME TYPE is there as if it is text/org then database knows it will
  invoke for me the Org mode. There will be no need for local
  variables, although it could be implemented. If there are various
  mime types the hyperlink can be there for user to list them all.

- HYPERLINK NAME is hyperlinked itself and can be hyperlinked and
  shown from one section to other just as Org mode. Org mode in fact
  can be used to display those pieces of information.

  Discussion here is only there to give ideas to me and others to
  lessen repetitive actions and help us in creating more useful
  features.

- HYPERLINK itself is where user goes. On my side Hyperlinks are
  centralized and this is very handy as I do not repeat myself to edit
  and change numerous files when creating hyperlinks in such
  files. Person does not need a PostgreSQL database to create these
  kind of universal hyperlinks, it just needs to know one centralized
  file. It can be defcustom option in Emacs. But it could be editable
  list. Or it could be simple text file with unique IDs at front and
  description.

  Example of such file would be:

  1 GNU Website, free software for you @@@ https://www.gnu.org
  2 A new skimmer uses WebSockets and a fake credit card @@@ https://blogs.akamai.com/2020/11/a-new-skimmer-uses-websockets-and-a-fake-credit-card-form-to-steal-sensitive-data.html

It is trivial to have a function that is called my-link which would
then parse the file, find the ID number at front and have the user
jump to the link. User could be offered file with links to "store"
link or transfer straight to Org file.

Org file would have the link something like:

[[(my-link 1)][GNU Website, free software for you]]

If the underlying hyperlink changes for some reason such hyperlink
need not be changed in Org files.

What if hyperlink points to specific PDF file on the system? Why
should I hard code in the sparse disconnected Org file a hyperlink to
specific file on the file system? Maybe this file changes its
position, then my hyperlink in Org file will not work, what if same
hyperlink has been used 10, 20 or 50 times in other Org files?

When using centralized approach for hyperlinks you forget about
editing the Org files, you just edit the centralized list of such
hyperlinks. That is what I am doing now.

Yesterday I have implemented new feature based on what we were
speaking about filing files and I have now made redundant long time
filing system. Database has sets, set is like a parent of a subtree or
subtree name. I have connected sets by their unique IDs to the
specific directory on the file system. Directory is based on the ID
number. Maybe you noticed that I file files related to specific person
to their directory on the hard disk, but I never think of the
directory position. In Dired I am invoking s-f and I am asked for
person's name, I choose the person and files are filed there by
year/month/date or otherwise or I can choose the date.

Then we discussed how some people access files by using searches or
indexed databases, searching by terms, queries, tags, and there is
also way to access files by navigating file system what most people
do. And then I mentioned conceptual access. This last one accommodates
better my mind and I was already used to file files by people,
organizations and subject.

From there now I just think of a file and file it under specific
subject.

If I think of specific subject, I can access the file. If I think of
related subjects I can still find somehow the file.

For example I think of LISP something, nothing specific, press key,
type LISP maybe there are 63 entries, but one only is upper case I am
on the LISP entry displayed in Emacs within a second. This entry is a
set or parent of subtree of other sets. I could now quickly jump into
the LISP directory:

The entry (ID numbers need not be shown):

    35147 LISP                                                                   Set →

Now I could jump from that entry into Dired:

  /home/data1/protected/hyperscope/3/5/1/4/7:
  
And the directory ID remains always the same /3/5/1/4/7 regardless if
I modify somewhat the entry. And if I enter the Set or subtree related
to LISP then I could get other entries such as CLISP, Emacs Lisp,
Newlisp, Picolisp and so on.

If I file something in those directories, I could invoke indexing
option to curate some of those sub-directories within
/home/data1/protected/hyperscope/3/5/1/4/7

While this looks complicate when reading, practically it is easier to
file files under specific subjects or categories this way, as this is
the workflow:

- open Dired
- think where you wish to file
- press key to choose what you thought like "LISP"
- press enter

No need to think of the directory as directory has been choosen
automatically.

Next time I need to jump to directory:

- think where to jump
- press key to find the meaning, and ENTER

Back to hyperlinks in Org file. If I am writing an entry in meta
Org-like manner then hyperlinks are generated automatically that go to
related files, that goes to related other subjects.

> Could you provide some more examples? I do not see how relational
> database is different from creating hyperlinks in org.

I am already using this system but is not easy to explain. Meta data
on my side is not hidden but is also not shown. I can edit it as easy
as Org probably easier.

c a - I am editing author's name in free text. If author is in the
      database I would choose author. Author's name can be hyperlinked to
      find other entries under same author. No need to type it by hand.

T - I am editing tags freely, I can enter: emacs lisp todo review; and
    those words would become tags. After ENTER I can immediately see
    hyperlinks to those tags.

Then if I am to edit some special status or type of the node I get
also automatic hyperlinks.

>  Either way, the
> user needs to file an object/headline somewhere into org file, which is
> inherently manual.

Yes, and no. Yes because it is true, and no because Org has been
already developed to help the user and useful enhancements or not
limited.

Concepts I have explained above need not be used with a database.
Concept is of relations and that user would not need to repeat many
actions if concepts are pulled together and integrated. 

Concept of using centralized list would alone spare so much typing for
the user.

How it would be if some headlines are repetitive? Maybe centralized
list of headlines to be choosen from and quickly inserted would help
speed up the process. Deadline would maybe remain the same or other
properties. No need for tedious searching for headling, duplicate, or
copy and yank the headline again. Choose from the central list and
build on that.

Headlines are related to things like people, company, organizations,
and those descriptions of companies, people, etc. majority of Org
users probably keep in the Org file itself. I just think it could be
so. But it is bunch of related information, including files.

If headline is related to central list of IDs that relate to something
then user could automatically invoke or get simply visualized
hyperlinks, or by click decide to insert such.

Central list would have entries like these:

1 Joe Doe @@ ~/files/JoeDoe @@ +1 234 567-8900 @@ joedoe@example.com @@ etc.

Then simple function can construct various hyperlinks for the headline
that has specific property.

Let us say I wish to insert new headline related to Joe Doe in such
imaginary enhancement:

- press key
- choose Joe Doe by maybe completion functions (this prepares property)
- headline is prepared and I just write it while property remains there

Prepared headling could look like this with X being my cursor:

* X                                 :CID-1:

Now I write the headline:

* Joe to purchase ticket in Kahama and travel on Saturday to Dar es Salaam  :CID-1:

If the task is assigned to Communication Officer or senior who has to
advise Joe how to do it, then on the next key press I could get
various hyperlinks because there is CID-1 that relates to Joe Doe:

* Joe to purchase ticket in Kahama and travel on Saturday to Dar es Salaam  :CID-1:

  [Joe's files] [Initiate call] [SMS to Joe] [Send this task to Joe] [Plain email to Joe]

Or the heading can automatically become following

* Joe to purchase ticket in Kahama and travel on Saturday to Dar es Salaam  :CID-1:

-  Joe Doe phone number: +1 234 567-890
-       Joe Doe's files: ~/files/JoeDoe
-       Joe Doe's email: joedoe@example.com
-        Family members: [Sister] [Brother] [Father]
- Other Joe Doe's tasks: [All tasks] [TODO Tasks]
-     People introduced: [173 people introduced]
-              Location: [Show on the map]
-          Transactions: [Show table of transactions]

Or I could just enter some of those hyperlinks specifically. But maybe
when I am choosing heading with the relation CID-1 property I do wish
to have some of those links, or I could prepare the template or
customize how those hyperlinks would look like.

> > I see hard work by many people who try to enhance Org as hierarchical
> > knowledge of data because people want to have feature X, but group of
> > those enhancements in reality belong to relational databases and not
> > to text files.
> 
> It is an interesting point. I would be happy if some existing tools
> could be reused instead of re-inventing the wheel for org. Do you have
> concrete examples where it can be useful? If you have, I encourage you
> to bring up a feature request to discuss this possibility with org-mode
> devs.

By principle concepts and relational automation does belong into core
of the Org mode as Org as of today does follow principles of Doug
Engelbart.

Doug Engelbart Institute - Boosting mankind's capability for coping with complex, urgent problems
https://www.dougengelbart.org/

Draft OHS-Project Plan
https://web.archive.org/web/20070704185333/http://www.bootstrap.org/augdocs/bi-2120.html

TECHNOLOGY TEMPLATE PROJECT OHS Framework 
https://www.dougengelbart.org/content/view/110/460/

About Dynamic Knowledge Repositories (DKR)
https://www.dougengelbart.org/content/view/190/163/

Or maybe you wish to see the Mother of all Demos.

Highlights of the 1968 "Mother of All Demos"
https://www.dougengelbart.org/content/view/276/000/

As there you will see the outline mode hyperlinked to everything being
hyperlinked from anything else, which principles are partially
implemented on the same website, you can see how finely grained one
can reference a paragraph on that website.

Maybe in beginning the Org mode was just enhancement of the Outline
mode which I find great by the way for its simplicity. But today Org
mode has evolved into sparse or disconnected way of doing
things. Developers try their best. In my opinion from somebody who
uses relational tables I do not find that approach nice, I find it
very tedious and time spending activity.

I would like to see Org file being finely grained so that each item of
the list can be referenced, each paragraph to be uniquely referenced
or sets of paragraphs. There is a package that I guess, converts Org
file to OPML which is an acronym for Outline Processor Markup
Language, as Org is outline processor that tries doing it in plain
text. It misses all the meta data so tendencies by people go back to
more structured format.

Because specific paragraph referencing is now not easily possible I am
using database approach of editing chunks of the Org file where then
any piece of Org can become referential.

Maybe the fundamental feature in its basics already exists if the
whole Org file could be exported as LISP data structure. Then user
could say "chunk paragraphs" to get references to single
paragraphs. Or feature could run over the Org file and create unique
IDs or anchors for each paragraph which could then be referenced in
their exports. If Org is exported to HTML then referencing from other
documents to specific paragraph becomes possible. While this is my
wish, it is not necessarily wish for Org.

GNU Hyperbole
https://www.gnu.org/s/hyperbole

The GNU Hyperbole Koutline mode predates Org mode and allows finely
grained referencing. But it is not really plain text. For example
there are no headings or paragraphs as everything is a structured
node. This may not be so handy. Mixture of Koutliner and Org mode is
what I like to build myself. If I work on meta Org-kind-of level then
I am editing nodes and for those nodes I am deciding what they are,
maybe node is a Set or Heading, maybe it is WWW hyperlink, maybe it is
note, maybe single paragraph to be processed as such and formatted as
such in various outputs, maybe it is set of paragraphs, and maybe it
is one chunk of Org file or any other type of file, could be even
image, video, anything. Then when there are chunks defined I can
structure the output or move nodes up and down with easy.

To create Org file from meta Org-like editing is speedy and not
noticable. If one set of chunks of such Org file have been used in
other set or vice versa, I can use reuse those nodes without
duplicating the node. If specific table of transaction is referenced
from multiple files users of Org will want to include it in those
files. That is also what minimizes replication, I do not need to
duplicate the body or meta data or contents of elements but I just
need to say what is the series by semi-visual ordering of those
elements by their priority.

Heading A can be one node, edited by user one time. It need not be
duplicated for other file, rather only a pointer to Heading A can be
included and the Heading then appears in a new Org file.

This type of link here is fine for plain text, really makes sense:

** TODO Some heading here

It just does not scale and does not have relations. As there are no
automatically designated relations then I have to assign it myself:

- to which person this task is assigned? Normally I send tasks to
  person assigned

- which person is related to this task? Do I really need to write the
  name? Then I have no reference or relation back to the person. I
  would like to have but do not. My tasks are "For staff Joe to go to
  location ABC and negotiate with company XYZ".

  If task is related to company which can be just on second to relate
  it, and assigned to staff Joe, which is another second or few to
  find Jow, and location ABC which is another few seconds and related
  to company XYZ which is another few seconds then all what I do are
  selections. No hyperlink writing on the low level.

  The task that is assigned to Joe, then can be sent to Joe with all
  the relevant and related information such as geographic location of
  the location ABC, license number related, region or district where
  it is located, then all contact information related to Joe and
  contact information related to company XYZ, including people names
  related to company XYZ and their contacts. My time is saved. Joe has
  got full information and can fullfil the task. This may include the
  scheduled date and deadlines as well and it could also include list
  of related tasks, without me thinking. 

To say TODO, PENDING, add property this or that by hand, is repetition
that I am not inclined any more to perform, so I am transitioning
everything into meta level. Using few keys I can export it to Org and
use further Org facilities to export into PDF or ASCII, Unicode or
similar.

Org started as enhancement of the outline-mode with focus on plain
text. But it is not any more plain text, it is full of properties that
may not be readable to people who did not write them or who are not
used to it. Properties can also confuse the person and performance of
task can be ruined. So it develops more and more into activity that
does need relational database. If such relational database is
implemented in the Emacs EIEIO or maybe as more simpler LISP data or
various lists of hashes saved in files, or is maybe PostgreSQL or
maybe GDBM or MySQL database, NoSQL, that really does not matter.

What matters is that headings are related to various lists of other
things and users do not have relational facilities. They write them
tedious by hand and developers try to help by hacking something that
has been already invented. You said let us not reinvent the wheel but
Org mode is wheel reinvented regardless if it did not use Engelbart's
principles it became quite similar to Augment as outliner software.

Doug Engelbart Institute - About NLS / Augment - 1968
https://www.dougengelbart.org/content/view/155/87/



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-26  6:18                                           ` Tom Gillespie
@ 2020-11-26  9:10                                             ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-26  9:10 UTC (permalink / raw)
  To: Tom Gillespie; +Cc: Tim Cross, emacs-orgmode

* Tom Gillespie <tgbugs@gmail.com> [2020-11-26 09:19]:
> > As there is the option ! to "apply local variables and permanently
> > mark these values" but there is no option "not to apply local
> > variables and permanently mark these values".
> 
> I have a longer reply that I will send tomorrow, but wanted to respond
> to this.
> 
> Yes exactly! I have the equivalent complaint in the draft extras from
> my previous message! I actually implemented a blacklist for file local
> variables in orgstrap because it is a critical security feature. The
> fact that it is missing is absolutely a bug and is extremely annoying
> for some of my current workflows where I have local variables that I
> never want to accept.

Then maybe just add to the same bug your opinion.



^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-26  5:31                                         ` Jean Louis
  2020-11-26  6:18                                           ` Tom Gillespie
@ 2020-11-26 11:44                                           ` Detlef Steuer
  2020-11-26 12:06                                             ` Jean Louis
  1 sibling, 1 reply; 121+ messages in thread
From: Detlef Steuer @ 2020-11-26 11:44 UTC (permalink / raw)
  To: Jean Louis; +Cc: Tom Gillespie, Tim Cross, emacs-orgmode

Am Thu, 26 Nov 2020 08:31:29 +0300
schrieb Jean Louis <bugs@gnu.support>:

> That is not fair choice. It pushes user to finally ! apply and accept
> it, but does not give chance to permanently ignore it.
> 
> 
> Do you want to apply it?  You can type
> y  -- to apply the local variables list.
> n  -- to ignore the local variables list.
> !  -- to apply the local variables list, and permanently mark these
>       values (*) as safe (in the future, they will be set
> automatically.)

Well, if you are arguing for a user who chose to use emacs, configured
mutt to invoke emacs etc,  but at the same time has no idea he chose a
mighty tool, as in has no clue about programming, variables etc., then
this choice won't help neither. If you have no idea about local
variables, you can not make an informed decision about *anything*
involving the concept of local variables. Besides stopping and reading
the manual.

May be I miss something, but then I miss it :-)

Furthermore this discussion has imho long left the main topic of this list.

Detlef


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-26  3:32         ` Ihor Radchenko
@ 2020-11-26 11:58           ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-26 11:58 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-26 06:34]:
> > Can I automated the execution of Babel code upon opening of the Org
> > file?
> 
> Adding to other suggestions, you can always add a custom function to
> org-mode-hook instead of playing with file-local variables.
> 
> > Then we comes to actual execution of tasks. How do we get
> > reminded?

Yes, that requires customization, file local variables customize
things without user's customization. In the end my use for that slowly
disappears as I am transitioning all tasks to HyperScope. Yesterday I
made simple hard-coded function here that I invoke inside of an Org
heading that captures the heading, date created, and its text and
stores it as a note in the database.

(defun hyperscope-capture-org-heading ()
  "Captures Org heading and stores it in the Hyperscope dynamic
  knowledge repository"
  (interactive)
  (let* ((body (org-copy-subtree nil nil nil t))
	 (body (pop kill-ring))
	 (body (org-no-properties body))
	 (heading (org-get-heading))
	 (created (org-property-values "CREATED"))
	 (date (if created (substring (car created) 1 11) nil))
	 (body (with-temp-buffer
		 (insert body)
		 (org-mode)
		 (org-back-to-heading)
		 (kill-line)
		 (delete-matching-lines ":PROPERTIES:")
		 (delete-matching-lines ":CREATED:")
		 (delete-matching-lines ":ID:")
		 (delete-matching-lines ":END:")
		 (buffer-string))))
    (hyperscope-add-note-to-set heading body date)))

The other use I had for users are tables as I have been writing
tables so much. 

But then I have to write that Joe Doe have paid money to Jane Dane in
the file of Jane Dane as only so I know how much money Jane Dane keeps
on behalf of business. And then I have to write by hand the same
transaction in the file of Joe Doe, as now he has less money. Tracking
it by head is definitely after some time error prone activity.

Database already has few tables for accounts and businesses, so I can
use database backed accounting which is already implemented as journal
package. 

Then if I am doing transaction from Joe Doe I would select Joe Doe
petty cash acccount transferring money to Jane Dane's petty cash
account. I would type less and be less worried about errors. Entries
are stored in the database. If account for Joe Doe is related to Joe
Doe (relations has to be assigned, not just named by person) then I
can invoke the creation of Org table for the Joe Doe's profile.

Majority of times I am creating Org file on the fly for the person
that contains:

* Tasks
* Transactions

Now I will be pushing tasks into meta level and edit them from there
and when Org file is opened that relates to one person then Tasks can
automatically appear in the list ordered by their status or other
attribute.

Transactions I will most probably slowly transition into the database
and they can also automatically appear in the Org table under
Transactions so to be sent easier by using nice Org exports. 

While this approach may not be common, it offers me more free time and
less worries.

> > Is the reminder only if I press {C-c a} for org-agenda? Do I need to
> > do action to get reminded?
> 
> You can always configure Emacs to run agenda on startup. Just add a
> command to your init file ;)

Thank you.

> For automatic reminders, there is built-in org-notify.el or external
> org-alert package (https://github.com/spegoraro/org-alert).

That is definitely good idea. Just little limited as it relates to
user on computer and not to users to which tasks are assigned to.

Think of that as the next and long forgotten enhancement for Org. 

I have this property in Org header:

#+PROPERTY: ASSIGNED_ALL Ezekiel Jean James Victor Dejan TeamTZ

TeamTZ is property of several people, when task is assigned to TeamTZ,
such task get sent to all people involved.

When I am assigning tasks the above list is using one of them to be
assigned.

When task is assigned to somebody notification of a deadline or alerts
are definitely useful for me. But they are are useful for those
conducting the tasks.

Thus integration to remind those *related* people to the assigned
tasks and their deadlines or schedules would be useful.

- org-send-task-by-email (shows some properties, schedules, ID)

- org-send-task-by-email-ascii (not same display in email)

- org-send-task-by-sms (using KDE connect, Termux, gnokii, Twilio, etc)

- org-send-task-by-fax (using email2fax providers or built-in fax modem)

Then think of reminders, they would need to run maybe in Emacs, but
maybe in Emacs that runs from cron job periodically, whatever is more
reliable. 

I also think that generic reminding database or one `reminders' table
would be usable on every system so that users may add to it anything,
be it task, birthday, anniversary, deadlines, etc. Such generic
database would be run as system service and remind not only user on
computer buy outside people by using various connections such as SMS,
email, fax, notifications on computer, notifications on mobile
devices, XMPP chat, social networking and so on. Generic separate
database would be fed by outside programs such as Org, calendar,
external calendars, and so on.

> > Personal problem is that tasks are sparse and separate in various Org
> > files and not centralized. I become dependent of org-agenda to do what
> > I need but it never does what I need.
> 
> I agree that org-agenda has many issues that cannot be easily solved
> because of its complexity. However, everything you describe (including
> multi-occur) can also be achieved with org-ql
> (https://github.com/alphapapa/org-ql) - analogue of SQL query language
> for org-mode (with more optimisations in comparison with org-agenda). 

Definitely good only too much low-level. Users need finished functions
that integrate stuff. To adopt myself to org-ql would mean to read
documentations, meanings, and starting with some functions, while this
may be possible for me that approach is not user friendly as users
need integration and accessible interfaces. 

Example of lack of integration would be to tell to user to simply
construct the link in the form: [[Here][Link]] and that alone would
require some thinking and learning. 

Example of medium integration is when users are advised to press C-c
C-l,then they can choose type of the link and extend it and describe
the link.

Example of high level, best type of integration is Org features to
capture hyperlinks for example from eww browser or from rmail mail
reader like message ID. I did not try those as I have my own, but I
did read that such packages exist in the Org distribution and I find
THAT ideal scene and how it should be. Another good example are
browser bookmarklets for org-capture.

So the package org-ql in my opinion requires something like code
generators and wizards. While great for author, by installing that
package user cannot begin with it practically or in straight manner.

Good integration for org-ql would be a wizard that can add to the list
of various queries and offers users various ways to search such as
searching by headline, tags, or having both tags involved, date,
deadlines and so on. Then such list can be displayed automatically as
a menu or as completing read. That would be good high level
integration for org-ql. Something like how M-x imenu-list works could
be good integration. Program can recognize already all the tags and
offer to user a checklist, user could choose 1 or 2 or more tags to
get a subset of various agenda choices, or the function
imenu-add-to-menubar that generates Emacs menu with references to all
functions in Emacs Lisp, probably in other languages. Then org-ql can
be used as underlying system but higher level helpful functions would
assist in generating various queries, for user not transparent and not
something to think of.




^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Local variables insecurities - Re: One vs many directories
  2020-11-26 11:44                                           ` Detlef Steuer
@ 2020-11-26 12:06                                             ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-26 12:06 UTC (permalink / raw)
  To: Detlef Steuer; +Cc: Tom Gillespie, Tim Cross, emacs-orgmode

* Detlef Steuer <steuer@hsu-hh.de> [2020-11-26 14:46]:
> Am Thu, 26 Nov 2020 08:31:29 +0300
> schrieb Jean Louis <bugs@gnu.support>:
> 
> > That is not fair choice. It pushes user to finally ! apply and accept
> > it, but does not give chance to permanently ignore it.
> > 
> > 
> > Do you want to apply it?  You can type
> > y  -- to apply the local variables list.
> > n  -- to ignore the local variables list.
> > !  -- to apply the local variables list, and permanently mark these
> >       values (*) as safe (in the future, they will be set
> > automatically.)
> 
> Well, if you are arguing for a user who chose to use emacs, configured
> mutt to invoke emacs etc

I do not. Any file opened any how by Emacs is invoking those variables. 

Please send your opinions to bug:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=44837 by writing to:
44837@debbugs.gnu.org

> .but at the same time has no idea he chose a
> mighty tool, as in has no clue about programming, variables etc.,

That is right, I have given references. Do not expect users who obtain
Emacs editor to be programmers. When user is asked anything, it should
be self-documenting and it should have references to that
documentation. That is why majority of actions with Emacs do have ?
for help at least. Invoking unsafe variables does not even involve any
help or references to manual.

>  then
> this choice won't help neither. If you have no idea about local
> variables, you can not make an informed decision about *anything*
> involving the concept of local variables. Besides stopping and reading
> the manual.

That is right, but that will be picked by those better positioned few.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Security issues in Emacs packages
  2020-11-26  6:35                                   ` Tim Cross
@ 2020-11-26 12:27                                     ` Greg Minshall
  0 siblings, 0 replies; 121+ messages in thread
From: Greg Minshall @ 2020-11-26 12:27 UTC (permalink / raw)
  To: Tim Cross; +Cc: emacs-orgmode, Jean Louis

Tim,

> It could, but to get that level of assurance, you not only have to
> verify the signature is valid (something which is automated if
> enabled), you also need to verify that both packages have the exact
> same signature, which is pretty much a manual process. So in addition
> to telling you the version number, George would also need to
> communicate the signature and that would need to be compared to the
> signature you have in the package you downloaded to know that the
> packages are in fact the same (you cannot rely on version numbers for
> any real verification).

if MELPA's release procedure prevented two separate releases of version
1.2.3 of package xYandZ from being released, wouldn't that obviate the
requirement for George to give me signatures?  that was my thought as to
why a signed (MELPA, version number, package name) would be enough.
(i've no idea if MELPA's procedures would actually conform to my
"requirement".)

cheers, Greg


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25 11:46                 ` Ihor Radchenko
@ 2020-11-26 12:47                   ` Jean Louis
  2020-11-26 13:27                     ` Ihor Radchenko
  0 siblings, 1 reply; 121+ messages in thread
From: Jean Louis @ 2020-11-26 12:47 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode

* Ihor Radchenko <yantar92@gmail.com> [2020-11-25 14:48]:
> > When I do C-c a it runs (org-agenda) but I do not have "g" and I am on
> > development version. The C-c a window is made so that I cannot go with
> > cursor inside and that I cannot even expect the key map neither invoke
> > command by M-x and I cannot even M-:
> 
> C-c a will first show so-called agenda dispatcher asking you what kind
> of agenda view you want to get. You need to press a key according to
> the popup window (i.e. `t' to see all not done items). Then, you will
> get the proper agenda buffer with all the keymaps set and `g' bound to
> refreshing the chosen agenda view in the buffer.
> 
> > All that is wrong and not aligned to Emacs common interface. It is bug
> > that bugs. Agenda buffer should allow users those standard Emacs
> > features.
> 
> I am wondering what is the common Emacs interface you refer to. I am not
> aware about any standard way to prompt user while also showing detailed
> description of what to expect from different choices.

Sorry for that vague expression. Let us say I open Completions buffer
I can switch into it, inspect it, ask for defined keys, evaluate with
M-:, Emacs allows me to remain in the window and go to other
window. Agenda buffer does not do that, this is probably because it
just waits for any key and does not allow anything else. That means I
will open Agenda and I cannot switch to other window, so I will close
agenda to switch. Maybe I have 10 TODO keywords, I have to open file,
I open Agenda again, aha, T... then close agenda, open file see
keyword, then open agenda again. Repetitions without end and user is
unable to use multiple windows. This really need not be so.

If I open packages' list I can keep the buffer and move to other
buffer while looking into that list.

You know how agenda is made like the 1985 BASIC menu in Commodore
C=64, but even back then there was better interface for such menus.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-26 12:47                   ` Jean Louis
@ 2020-11-26 13:27                     ` Ihor Radchenko
  0 siblings, 0 replies; 121+ messages in thread
From: Ihor Radchenko @ 2020-11-26 13:27 UTC (permalink / raw)
  To: Jean Louis; +Cc: Dr. Arne Babenhauserheide, Texas Cyberthal, emacs-orgmode

> Sorry for that vague expression. Let us say I open Completions buffer
> I can switch into it, inspect it, ask for defined keys, evaluate with
> M-:, Emacs allows me to remain in the window and go to other
> window. Agenda buffer does not do that, this is probably because it
> just waits for any key and does not allow anything else. That means I
> will open Agenda and I cannot switch to other window, so I will close
> agenda to switch. Maybe I have 10 TODO keywords, I have to open file,
> I open Agenda again, aha, T... then close agenda, open file see
> keyword, then open agenda again. Repetitions without end and user is
> unable to use multiple windows. This really need not be so.

It appears to me (correct me if I am wrong) that you haven't tried
agenda multi-occur/keyword/etc searches. The way it works is that you
only need to select type of search from agenda dispatcher window (the
one you are criticising). Later, when you actually enter the search
string, you are left with an ordinary Emacs prompt. You are free to
leave the minibuffer and switch to other buffers searching for the
keywords you are interested in.

In general, there are two types of agenda searches available from agenda
dispatcher:
1. Most are free-hand searches where you need to type a search string:
   - match TAGS/PROP/TODO query
   - search for keywords
   - multi-occur
   - first two searches, but limited only to TODO tasks
2. Pre-defined searches where search string was set in advance (by
   developers or by user via org-agenda-custom-commands):
   - agenda listing tasks relevant to current week or day
   - all TODO entries
   - FLAGGED entries
   - stuck projects

The first type will let you leave search prompt as soon as you select
what type of search you are about to enter.
The second type does not really need entering any extra text - it is
predefined.

> You know how agenda is made like the 1985 BASIC menu in Commodore
> C=64, but even back then there was better interface for such menus.

FYI. Transient.el - menu dispatcher in popular magit package also does
not let you switch buffers. So, apparently many people would not agree
that it is so terrible design.

P.S. Nothing prevents you from calling, i.e. M-x org-occur or binding it
to a key of your choice.

Best,
Ihor

Jean Louis <bugs@gnu.support> writes:

> * Ihor Radchenko <yantar92@gmail.com> [2020-11-25 14:48]:
>> > When I do C-c a it runs (org-agenda) but I do not have "g" and I am on
>> > development version. The C-c a window is made so that I cannot go with
>> > cursor inside and that I cannot even expect the key map neither invoke
>> > command by M-x and I cannot even M-:
>> 
>> C-c a will first show so-called agenda dispatcher asking you what kind
>> of agenda view you want to get. You need to press a key according to
>> the popup window (i.e. `t' to see all not done items). Then, you will
>> get the proper agenda buffer with all the keymaps set and `g' bound to
>> refreshing the chosen agenda view in the buffer.
>> 
>> > All that is wrong and not aligned to Emacs common interface. It is bug
>> > that bugs. Agenda buffer should allow users those standard Emacs
>> > features.
>> 
>> I am wondering what is the common Emacs interface you refer to. I am not
>> aware about any standard way to prompt user while also showing detailed
>> description of what to expect from different choices.
>
> Sorry for that vague expression. Let us say I open Completions buffer
> I can switch into it, inspect it, ask for defined keys, evaluate with
> M-:, Emacs allows me to remain in the window and go to other
> window. Agenda buffer does not do that, this is probably because it
> just waits for any key and does not allow anything else. That means I
> will open Agenda and I cannot switch to other window, so I will close
> agenda to switch. Maybe I have 10 TODO keywords, I have to open file,
> I open Agenda again, aha, T... then close agenda, open file see
> keyword, then open agenda again. Repetitions without end and user is
> unable to use multiple windows. This really need not be so.
>
> If I open packages' list I can keep the buffer and move to other
> buffer while looking into that list.
>
> You know how agenda is made like the 1985 BASIC menu in Commodore
> C=64, but even back then there was better interface for such menus.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-25 11:02                             ` Jean Louis
@ 2020-11-26 16:04                               ` Texas Cyberthal
  2020-11-26 17:31                                 ` Jean Louis
  0 siblings, 1 reply; 121+ messages in thread
From: Texas Cyberthal @ 2020-11-26 16:04 UTC (permalink / raw)
  To: Jean Louis; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

Hi Jean,

Yes, Textmind is a rock tumbler for natural language thoughts.  An SME
CRM treats people like widgets.  The former does many small thoughtful
touches, the latter does few robotic touches.  Excessive widget volume
chokes Textmind.

Sure, I will subscribe you when I have a mailing list.  For now,
readers can only follow the Github repos.


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: One vs many directories
  2020-11-26 16:04                               ` Texas Cyberthal
@ 2020-11-26 17:31                                 ` Jean Louis
  0 siblings, 0 replies; 121+ messages in thread
From: Jean Louis @ 2020-11-26 17:31 UTC (permalink / raw)
  To: Texas Cyberthal; +Cc: Dr. Arne Babenhauserheide, emacs-orgmode

* Texas Cyberthal <texas.cyberthal@gmail.com> [2020-11-26 19:05]:
> Hi Jean,
> 
> Yes, Textmind is a rock tumbler for natural language thoughts.  An SME
> CRM treats people like widgets.  The former does many small thoughtful
> touches, the latter does few robotic touches.  Excessive widget volume
> chokes Textmind.
> 
> Sure, I will subscribe you when I have a mailing list.  For now,
> readers can only follow the Github repos.

Alright.

I can see there are few people who have got a cognition in organizing
things not being only Org notes but also files, and I feel you are one
of them. I would like to ask few questions:

- does using the 10 Bins and Textmind system gives you personal
  satisfaction of being well organized?

- did you develop having functions similar to store link that quickly
  obtain the hyperlink in memory to be easier inserted in Org files?
  That is similar to org-capture. I think every system of organization
  and storing objects into X should have automated quick hyperlink
  generation.

- how does 10 Bins and Textmind enhance what you do with Org files?

Jean


^ permalink raw reply	[flat|nested] 121+ messages in thread

* Re: Is Org really so simple?
  2020-11-26  3:08                       ` Ihor Radchenko
  2020-11-26  8:57                         ` Jean Louis
@ 2020-11-26 18:07                         ` Dr. Arne Babenhauserheide
  1 sibling, 0 replies; 121+ messages in thread
From: Dr. Arne Babenhauserheide @ 2020-11-26 18:07 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Texas Cyberthal, emacs-orgmode, Jean Louis

[-- Attachment #1: Type: text/plain, Size: 1488 bytes --]


Ihor Radchenko <yantar92@gmail.com> writes:

>> Only philosophy I know is that it is plain text. Is there any official
>> philosophy? I have no idea, at least manual does not give me
>> references. I cannot find "philosophy", send me references.
>
> You are right. There is no official "philosophy" in org. In my reply I
> tried to follow the topic starter's view:
>
>  Texas Cyberthal <texas.cyberthal@gmail.com>:
>> By philosophy, I mean the dev consensus on the correct way to do
>> things, and coded configuration and usability biases.
>
> According to my experience with org-mode development (I am not talking
> about third-party packages here), it is discouraged to change org-mode
> towards hiding metadata in org files or store *unique* data (that cannot
> be derived from the contents of the org files) related to org-mode
> externally (not in org files). It is not official statement, but rather
> my impression so far.

As a user I do not want outside-data, because I put my org-files into
versiontracking and access them from several machines. I also provide
them as sources for books on sr.ht and use them to synchronize planning
between the office-PC and the homeoffice-PC. And I send them to people
so they have the complete source of something I built.

All those use-cases I use regularly would break if org-mode started to
rely on an external database.

Best wishes,
Arne
-- 
Unpolitisch sein
heißt politisch sein
ohne es zu merken

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 1125 bytes --]

^ permalink raw reply	[flat|nested] 121+ messages in thread

end of thread, other threads:[~2020-11-26 18:08 UTC | newest]

Thread overview: 121+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-21  0:33 One vs many directories Texas Cyberthal
2020-11-21  5:13 ` Ihor Radchenko
2020-11-21  7:56   ` Jean Louis
2020-11-21  8:31     ` Texas Cyberthal
2020-11-21  9:29       ` Marvin ‘quintus’ Gülker
2020-11-21 10:21       ` Jean Louis
2020-11-21 15:00         ` Texas Cyberthal
2020-11-21 16:08           ` Jean Louis
2020-11-21 15:03     ` Dr. Arne Babenhauserheide
2020-11-21 15:45       ` Texas Cyberthal
2020-11-21 17:12         ` Jean Louis
2020-11-21 18:01           ` Texas Cyberthal
2020-11-21 18:57             ` Jean Louis
2020-11-22  6:36           ` Ihor Radchenko
2020-11-22  7:20             ` Jean Louis
2020-11-22  8:32               ` Ihor Radchenko
2020-11-22  8:56                 ` Jean Louis
2020-11-21 22:36         ` Dr. Arne Babenhauserheide
     [not found]           ` <CAMUm491Psp0u5JKyGROP6M=UfAcvOLTtOKAD1rOearV+KxgYdQ@mail.gmail.com>
     [not found]             ` <87r1olfvh4.fsf@web.de>
2020-11-23  9:50               ` Texas Cyberthal
2020-11-23 13:17                 ` Jean Louis
2020-11-23 14:16                   ` Ihor Radchenko
2020-11-23 18:08                     ` Is Org really so simple? Jean Louis
2020-11-23 20:41                       ` Tom Gillespie
2020-11-24  5:06                         ` Jean Louis
2020-11-26  3:08                       ` Ihor Radchenko
2020-11-26  8:57                         ` Jean Louis
2020-11-26 18:07                         ` Dr. Arne Babenhauserheide
2020-11-23 16:07                   ` One vs many directories Texas Cyberthal
2020-11-23 19:20                     ` Jean Louis
2020-11-24  7:55                       ` Ihor Radchenko
2020-11-25  6:57                       ` Texas Cyberthal
2020-11-25  9:51                         ` Jean Louis
2020-11-25 10:39                           ` Texas Cyberthal
2020-11-25 11:02                             ` Jean Louis
2020-11-26 16:04                               ` Texas Cyberthal
2020-11-26 17:31                                 ` Jean Louis
2020-11-21 16:55       ` Jean Louis
2020-11-21 22:48         ` Dr. Arne Babenhauserheide
2020-11-22  0:48           ` Jean Louis
2020-11-22  2:47             ` briangpowell
2020-11-22 17:55               ` Jean Louis
2020-11-21  6:12 ` Palak Mathur
2020-11-21  9:04   ` Jean Louis
2020-11-21  6:36 ` Jean Louis
2020-11-21  7:17   ` Texas Cyberthal
2020-11-21  9:53     ` Jean Louis
2020-11-21 10:15       ` Tim Cross
2020-11-21 11:18         ` Jean Louis
2020-11-21 14:44       ` Texas Cyberthal
2020-11-21 15:45         ` Jean Louis
2020-11-23  5:40     ` Ihor Radchenko
2020-11-24  9:00       ` Jean Louis
2020-11-24  9:45         ` Eric S Fraga
2020-11-24  9:51           ` Jean Louis
2020-11-24 11:42             ` Eric S Fraga
2020-11-24 13:13               ` Diego Zamboni
2020-11-24 13:49                 ` Jean Louis
2020-11-24 17:02                 ` Jean Louis
2020-11-24 18:50                   ` Dr. Arne Babenhauserheide
2020-11-24 18:58                     ` Jean Louis
2020-11-25  6:39                       ` Tim Cross
2020-11-25 12:38                         ` Local variables insecurities - " Jean Louis
2020-11-25 13:05                           ` Eric S Fraga
2020-11-25 13:13                             ` Jean Louis
2020-11-25 13:58                               ` Eric S Fraga
2020-11-25 14:07                                 ` Jean Louis
2020-11-25 20:54                                   ` Tim Cross
2020-11-25 22:09                                     ` Jean Louis
2020-11-26  2:06                                       ` Tom Gillespie
2020-11-26  5:06                                         ` Jean Louis
2020-11-26  5:31                                         ` Jean Louis
2020-11-26  6:18                                           ` Tom Gillespie
2020-11-26  9:10                                             ` Jean Louis
2020-11-26 11:44                                           ` Detlef Steuer
2020-11-26 12:06                                             ` Jean Louis
2020-11-26  5:34                                         ` Greg Minshall
2020-11-26  5:49                                           ` Jean Louis
2020-11-26  8:39                             ` Christian Moe
2020-11-25  8:10                       ` Dr. Arne Babenhauserheide
2020-11-25  8:36                         ` Local variables liberties Jean Louis
2020-11-24 20:11                     ` One vs many directories Tom Gillespie
2020-11-24 20:39                       ` Tim Cross
2020-11-25  4:54                         ` Jean Louis
2020-11-25  5:54                           ` Tim Cross
2020-11-25  7:01                             ` Local variables issue - " Jean Louis
2020-11-25  5:06                         ` Jean Louis
2020-11-25  7:00                           ` Tim Cross
2020-11-25  8:23                             ` Security issues in Emacs packages Jean Louis
2020-11-25  9:07                               ` tomas
2020-11-25  9:26                                 ` Jean Louis
2020-11-25 10:41                                   ` tomas
2020-11-25 22:46                               ` Tim Cross
2020-11-25 23:07                                 ` Jean Louis
2020-11-25 23:39                                   ` Tim Cross
2020-11-26  5:24                                     ` Jean Louis
2020-11-26  6:46                                       ` Tim Cross
2020-11-26  5:29                                 ` Greg Minshall
2020-11-26  5:53                                   ` Jean Louis
2020-11-26  6:35                                   ` Tim Cross
2020-11-26 12:27                                     ` Greg Minshall
2020-11-25  4:44                       ` One vs many directories Jean Louis
2020-11-25 10:19           ` org-sbe to automate some source block executions Jean Louis
2020-11-25 11:39             ` Ihor Radchenko
2020-11-25 15:06               ` Jean Louis
2020-11-25 11:46           ` One vs many directories Jean Louis
2020-11-25 13:07             ` Eric S Fraga
2020-11-25 13:14               ` Jean Louis
2020-11-25 13:12             ` Ihor Radchenko
2020-11-25 13:32               ` Jean Louis
2020-11-24 18:47         ` Dr. Arne Babenhauserheide
2020-11-24 18:54           ` Jean Louis
2020-11-25  8:14             ` Dr. Arne Babenhauserheide
2020-11-25  8:46               ` Jean Louis
2020-11-25 11:46                 ` Ihor Radchenko
2020-11-26 12:47                   ` Jean Louis
2020-11-26 13:27                     ` Ihor Radchenko
2020-11-26  3:47           ` Ihor Radchenko
2020-11-26  3:32         ` Ihor Radchenko
2020-11-26 11:58           ` Jean Louis
2020-11-21 13:41 ` Jonathan McHugh
2020-11-21 14:04   ` Jean Louis

Org-mode mailing list

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://orgmode.org/list/0 list/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 list list/ https://orgmode.org/list \
		emacs-orgmode@gnu.org
	public-inbox-index list

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.emacs.orgmode
	nntp://news.gmane.io/gmane.emacs.orgmode


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git