emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* [PATCH] ob-sql: Add support for Athena
@ 2023-01-16 10:48 Daniel Kraus
  2023-01-16 11:13 ` Ihor Radchenko
  0 siblings, 1 reply; 32+ messages in thread
From: Daniel Kraus @ 2023-01-16 10:48 UTC (permalink / raw)
  To: emacs-orgmode

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

Hi,

I'm using this patch since a few month that adds support
for AWS Athena.
The only thing that's maybe against adding it is that
`athenacli` (https://github.com/dbcli/athenacli) is not an
official AWS tool but just a Python script.

What's the opinion on this?

Cheers,
  Daniel

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-lisp-ob-sql.el-Add-support-for-Athena.patch --]
[-- Type: text/x-patch, Size: 2150 bytes --]

From ddace051205d20b24c047962ca9d1335bdd90284 Mon Sep 17 00:00:00 2001
From: Daniel Kraus <daniel@kraus.my>
Date: Mon, 16 Jan 2023 11:35:02 +0100
Subject: [PATCH] lisp/ob-sql.el: Add support for Athena

* lisp/ob-sql.el (org-babel-execute:sql): Add support for Athena
---
 lisp/ob-sql.el | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/lisp/ob-sql.el b/lisp/ob-sql.el
index 39a4573a5..640ecb2c0 100644
--- a/lisp/ob-sql.el
+++ b/lisp/ob-sql.el
@@ -53,14 +53,15 @@
 ;; - rowname-names
 ;;
 ;; Engines supported:
-;; - mysql
+;; - athena
 ;; - dbi
 ;; - mssql
-;; - sqsh
-;; - postgresql (postgres)
+;; - mysql
 ;; - oracle
-;; - vertica
+;; - postgresql (postgres)
 ;; - saphana
+;; - sqsh
+;; - vertica
 ;;
 ;; TODO:
 ;;
@@ -254,6 +255,11 @@ This function is called by `org-babel-execute-src-block'."
                        (org-babel-temp-file "sql-out-")))
 	 (header-delim "")
          (command (cl-case (intern engine)
+                    (athena (format "athenacli %s -e %s %s > %s"
+			            (or cmdline "")
+			            (org-babel-process-file-name in-file)
+                                    database
+			            (org-babel-process-file-name out-file)))
                     (dbi (format "dbish --batch %s < %s | sed '%s' > %s"
 				 (or cmdline "")
 				 (org-babel-process-file-name in-file)
@@ -352,7 +358,7 @@ SET COLSEP '|'
 	(progn (insert-file-contents-literally out-file) (buffer-string)))
       (with-temp-buffer
 	(cond
-	 ((memq (intern engine) '(dbi mysql postgresql postgres saphana sqsh vertica))
+	 ((memq (intern engine) '(athena dbi mysql postgresql postgres saphana sqsh vertica))
 	  ;; Add header row delimiter after column-names header in first line
 	  (cond
 	   (colnames-p
@@ -377,7 +383,7 @@ SET COLSEP '|'
 	      (goto-char (point-max))
 	      (forward-char -1))
 	    (write-file out-file))))
-	(org-table-import out-file (if (string= engine "sqsh") '(4) '(16)))
+	(org-table-import out-file (if (memq (intern engine) '(athena sqsh)) '(4) '(16)))
 	(org-babel-reassemble-table
 	 (mapcar (lambda (x)
 		   (if (string= (car x) header-delim)
-- 
2.39.0


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

* Re: [PATCH] ob-sql: Add support for Athena
  2023-01-16 10:48 [PATCH] ob-sql: Add support for Athena Daniel Kraus
@ 2023-01-16 11:13 ` Ihor Radchenko
  2023-01-16 11:52   ` Daniel Kraus
  2023-01-16 20:50   ` Tim Cross
  0 siblings, 2 replies; 32+ messages in thread
From: Ihor Radchenko @ 2023-01-16 11:13 UTC (permalink / raw)
  To: Daniel Kraus; +Cc: emacs-orgmode

Daniel Kraus <daniel@kraus.my> writes:

> I'm using this patch since a few month that adds support
> for AWS Athena.
> The only thing that's maybe against adding it is that
> `athenacli` (https://github.com/dbcli/athenacli) is not an
> official AWS tool but just a Python script.
>
> What's the opinion on this?

Is this something commonly used?

I see two main issues with the idea:
1. I do not like the idea of adding all the possible CLI tools over
   there in ad-hoc manner. It would be cleaner to provide a
   customization to add various cli tools in a defcustom/defvar without
   manually changing the functions.

2. I feel like it will be hard to maintain such unpopular clients. If
   (1) is addressed + good automatic tests are implemented, things may
   be acceptable for inclusion though.

In summary, I am not against the idea of including a new sql cli, but we
should better provide a centralized API to do so and make sure that we
have test coverage, making sure that things are not broken in future,
when the original committer is gone and nobody else is left familiar
with specific obscure SQL client.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: [PATCH] ob-sql: Add support for Athena
  2023-01-16 11:13 ` Ihor Radchenko
@ 2023-01-16 11:52   ` Daniel Kraus
  2023-01-16 20:50   ` Tim Cross
  1 sibling, 0 replies; 32+ messages in thread
From: Daniel Kraus @ 2023-01-16 11:52 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode


Ihor Radchenko <yantar92@posteo.net> writes:

> Daniel Kraus <daniel@kraus.my> writes:
>
>> I'm using this patch since a few month that adds support
>> for AWS Athena.
>> The only thing that's maybe against adding it is that
>> `athenacli` (https://github.com/dbcli/athenacli) is not an
>> official AWS tool but just a Python script.
>>
>> What's the opinion on this?
>
> Is this something commonly used?

Athena itself is very widely used. But everyone uses either the
AWS Webinterface or connect with JDBC (DBeaver/Datagrip etc) to it.
The Python tool doesn't seem so popular (only 200 GitHub stars),
that's also my main reason for not adding it.


> I see two main issues with the idea:
> 1. I do not like the idea of adding all the possible CLI tools over
>    there in ad-hoc manner. It would be cleaner to provide a
>    customization to add various cli tools in a defcustom/defvar without
>    manually changing the functions.
>
> 2. I feel like it will be hard to maintain such unpopular clients. If
>    (1) is addressed + good automatic tests are implemented, things may
>    be acceptable for inclusion though.
>
> In summary, I am not against the idea of including a new sql cli, but we
> should better provide a centralized API to do so and make sure that we
> have test coverage, making sure that things are not broken in future,
> when the original committer is gone and nobody else is left familiar
> with specific obscure SQL client.

Completely agree.
If I look in `org-babel-execute:sql` `command`
( https://git.savannah.gnu.org/cgit/emacs/org-mode.git/tree/lisp/ob-sql.el#n256 )
I think it would make sense to somehow make all those commands
customizeable and let users add their own commands.
But that's obviously a bit more work. I'll see if I find time for it
in the coming months.

Thanks,
  Daniel


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

* Re: [PATCH] ob-sql: Add support for Athena
  2023-01-16 11:13 ` Ihor Radchenko
  2023-01-16 11:52   ` Daniel Kraus
@ 2023-01-16 20:50   ` Tim Cross
  2023-01-17  9:42     ` Daniel Kraus
  1 sibling, 1 reply; 32+ messages in thread
From: Tim Cross @ 2023-01-16 20:50 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Daniel Kraus, emacs-orgmode

Ihor Radchenko <yantar92@posteo.net> writes:

> Daniel Kraus <daniel@kraus.my> writes:
>
>> I'm using this patch since a few month that adds support
>> for AWS Athena.
>> The only thing that's maybe against adding it is that
>> `athenacli` (https://github.com/dbcli/athenacli) is not an
>> official AWS tool but just a Python script.
>>
>> What's the opinion on this?
>
> Is this something commonly used?
>
> I see two main issues with the idea:
> 1. I do not like the idea of adding all the possible CLI tools over
>    there in ad-hoc manner. It would be cleaner to provide a
>    customization to add various cli tools in a defcustom/defvar without
>    manually changing the functions.
>
> 2. I feel like it will be hard to maintain such unpopular clients. If
>    (1) is addressed + good automatic tests are implemented, things may
>    be acceptable for inclusion though.
>
> In summary, I am not against the idea of including a new sql cli, but we
> should better provide a centralized API to do so and make sure that we
> have test coverage, making sure that things are not broken in future,
> when the original committer is gone and nobody else is left familiar
> with specific obscure SQL client.

I think you run a high risk of running into GNU policy issues wrt
licensing and free software support given this is a cleint for an AWS
only database. 


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

* Re: [PATCH] ob-sql: Add support for Athena
  2023-01-16 20:50   ` Tim Cross
@ 2023-01-17  9:42     ` Daniel Kraus
  2023-01-17 10:06       ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Ihor Radchenko
  0 siblings, 1 reply; 32+ messages in thread
From: Daniel Kraus @ 2023-01-17  9:42 UTC (permalink / raw)
  To: Tim Cross; +Cc: Ihor Radchenko, emacs-orgmode


Tim Cross <theophilusx@gmail.com> writes:

> I think you run a high risk of running into GNU policy issues wrt
> licensing and free software support given this is a cleint for an AWS
> only database.

Is it because it's cloud only or because it's proprietary?
Because we already support Orcale, SAP Hana, MSSql and Vertico for example.

Cheers,
  Daniel


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

* Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-17  9:42     ` Daniel Kraus
@ 2023-01-17 10:06       ` Ihor Radchenko
  2023-01-17 11:38         ` Tim Cross
  2023-01-23  4:23         ` Richard Stallman
  0 siblings, 2 replies; 32+ messages in thread
From: Ihor Radchenko @ 2023-01-17 10:06 UTC (permalink / raw)
  To: Daniel Kraus, Bastien, Timothy; +Cc: Tim Cross, emacs-orgmode, Richard Stallman

Daniel Kraus <daniel@kraus.my> writes:

> Tim Cross <theophilusx@gmail.com> writes:
>
>> I think you run a high risk of running into GNU policy issues wrt
>> licensing and free software support given this is a cleint for an AWS
>> only database.
>
> Is it because it's cloud only or because it's proprietary?

Both. For cloud, see
https://www.gnu.org/philosophy/who-does-that-server-really-serve.html
(we can have cloud service support, but only those that are not unjust)

> Because we already support Orcale, SAP Hana, MSSql and Vertico for example.

We probably should not.
Ideally, we need universal SQL cli support and then move all non-free
clients to external packages.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-17 10:06       ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Ihor Radchenko
@ 2023-01-17 11:38         ` Tim Cross
  2023-01-23  4:23         ` Richard Stallman
  1 sibling, 0 replies; 32+ messages in thread
From: Tim Cross @ 2023-01-17 11:38 UTC (permalink / raw)
  To: Ihor Radchenko
  Cc: Daniel Kraus, Bastien, Timothy, emacs-orgmode, Richard Stallman

Ihor Radchenko <yantar92@posteo.net> writes:

> Daniel Kraus <daniel@kraus.my> writes:
>
>> Tim Cross <theophilusx@gmail.com> writes:
>>
>>> I think you run a high risk of running into GNU policy issues wrt
>>> licensing and free software support given this is a cleint for an AWS
>>> only database.
>>
>> Is it because it's cloud only or because it's proprietary?
>
> Both. For cloud, see
> https://www.gnu.org/philosophy/who-does-that-server-really-serve.html
> (we can have cloud service support, but only those that are not unjust)
>
>> Because we already support Orcale, SAP Hana, MSSql and Vertico for example.
>
> We probably should not.
> Ideally, we need universal SQL cli support and then move all non-free
> clients to external packages.

Well, we don't really support those other databases in the same sense as
is bieng proposed here for this AWS db. Those other databases are only
supported in the sense that you can tell sql mode you are using one of
them and you can add the necessary configuration parameters to make a
connnection, but that is it. We don't, for example, provide the Oracle
client in order to use the oracle database. The user has to install the
Oracle client separately.

So, you could likely modify sql-mode to support the ability to pass
necessary parameters to a client which can connect to the AWS database,
but you cannot bundle the client (in this case, the python code you
referenced).

The fact this is also a cloud based database does make the situation
worse as the official FSF and GNU position is that cloud based services
represent a reduction in user freedom because they do not control those
services and cannot see the soruce code - essentially, use of those
services makes you dependent on and to some extent beholding to (in this
case) Amazon. With the other non-free databases, such as Oracle, you can
at least install the database on your own hardware.


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-17 10:06       ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Ihor Radchenko
  2023-01-17 11:38         ` Tim Cross
@ 2023-01-23  4:23         ` Richard Stallman
  2023-01-23  6:33           ` Jean Louis
  2023-01-23 12:45           ` Ihor Radchenko
  1 sibling, 2 replies; 32+ messages in thread
From: Richard Stallman @ 2023-01-23  4:23 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > Because we already support Orcale, SAP Hana, MSSql and Vertico for example.

Would someone please tell me more concretely what kind of "support"
this is?  Which GNU package supports them, and how?  Also, what kind
of things are those?  Are they nonfree programs, or are they SaaSS?
Some of them I recognize as nonfree programs, but some names I don't
recognize at all.

There are situations where it is acceptable for a GNU package to
support its use together with certain nonfree programs.  Mainly when
the nonfree program so well known that this support mainly encourage
people who already use that nonfree program to start using the GNU
package with it, and is unlikely to do the converse.

See the GNU Maintainers Guide for more details.

However, use with a SaaSS system (service as a software substitute) is
a different issue (though it has much in common).  I'd like to think
about it and ask advisors for advice.  These details can help me start
to think about it.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-23  4:23         ` Richard Stallman
@ 2023-01-23  6:33           ` Jean Louis
  2023-01-25  4:31             ` Richard Stallman
  2023-01-23 12:45           ` Ihor Radchenko
  1 sibling, 1 reply; 32+ messages in thread
From: Jean Louis @ 2023-01-23  6:33 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Ihor Radchenko, emacs-orgmode

* Richard Stallman <rms@gnu.org> [2023-01-23 07:25]:

>   > > Because we already support Orcale, SAP Hana, MSSql and Vertico for example.
> 
> Would someone please tell me more concretely what kind of "support"
> this is?

You can find interactive support in `sql' library, functions such as:

M-x sql-oracle 

which supports proprietary Oracle Database:
https://en.wikipedia.org/wiki/Oracle_Database

or 

M-x sql-ms

which description says:

sql-ms is an autoloaded interactive byte-compiled Lisp function in
‘sql.el’.

(sql-ms &optional BUFFER)

Run osql by Microsoft as an inferior process.

> Which GNU package supports them, and how?

Emacs, sql package

> Are they nonfree programs, or are they SaaSS?

They are proprietary programs that may be also SaaSS.


--
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-23  4:23         ` Richard Stallman
  2023-01-23  6:33           ` Jean Louis
@ 2023-01-23 12:45           ` Ihor Radchenko
  2023-01-23 20:12             ` Tim Cross
  2023-01-26  4:26             ` Richard Stallman
  1 sibling, 2 replies; 32+ messages in thread
From: Ihor Radchenko @ 2023-01-23 12:45 UTC (permalink / raw)
  To: rms; +Cc: emacs-orgmode

Richard Stallman <rms@gnu.org> writes:

>   > > Because we already support Orcale, SAP Hana, MSSql and Vertico for example.
>
> Would someone please tell me more concretely what kind of "support"
> this is? Which GNU package supports them, and how?  

[Jean Luis mentioned M-x sql-* commands in another message. They may
also be worth discussing, but are not what I meant in the original
message]

ob-sql is Org mode's feature (part of Emacs) allowing users to execute
SQL code inline inside Org files:

#+header: :engine sqlite
#+header: :database ~/.local/share/qutebrowser/history.sqlite
#+begin_src sql
  SELECT URL FROM History ORDER BY "URL" DESC LIMIT 5 
#+end_src

#+RESULTS:
| qute://help/commands.html |
| qute://help/commands.html |
| qute://help/              |
| qute://help               |
| qute://                   |

Note the :engine argument. It determines which CLI backend is being
called by Org mode to query the database.

;; Engines supported:
;; - mysql
;; - dbi
;; - mssql
;; - sqsh
;; - postgresql (postgres)
;; - oracle
;; - vertica
;; - saphana

Some of these engines are free software and we have no issue supporting
them. Some are not.

> ... Also, what kind
> of things are those?  Are they nonfree programs, or are they SaaSS?
> Some of them I recognize as nonfree programs, but some names I don't
> recognize at all.

At least, mssql is non-free with no source code available. Same for
oracle, vertica, and saphana.

I am not sure about SaaSS - even postgresql (free software) may be used
as a service provider by running it on server the user does not control.
Probably, I do not fully understand how SaaSS is defined (I did read
https://www.gnu.org/philosophy/who-does-that-server-really-serve.html)

Earlier in the thread, https://github.com/dbcli/athenacli was proposed
as another CLI to support. Athenacli itself is distributed under BSD-3 -
free license. However, the CLI is just an interface to Amazon Athena -
server-side database service.

From my limited understanding, the main purpose of Amazon Athena is
querying "big data" databases for further analysis, which does not
constitute SaaSS (AFAIU) - users may not own the "big data" and may not
have enough resources on their own computers to run the SQL queries that
utilize machine learning models.

> There are situations where it is acceptable for a GNU package to
> support its use together with certain nonfree programs.  Mainly when
> the nonfree program so well known that this support mainly encourage
> people who already use that nonfree program to start using the GNU
> package with it, and is unlikely to do the converse.
>
> See the GNU Maintainers Guide for more details.

It is hard to define "well known". For me, oracle and mssql databases
are well-known (just by company name), while saphana and vertica are
not. But I do not work with SQL and thus lack expertise about what is
being used in reality. How to judge?

> However, use with a SaaSS system (service as a software substitute) is
> a different issue (though it has much in common).  I'd like to think
> about it and ask advisors for advice.  These details can help me start
> to think about it.

I feel very confused about possible guidelines for SaaSS.

SaaSS does not always require specific CLI tools to be used.
Consider common HTTP requests or GraphQL that might be employed to
communicate with SaaSS. Should we stop supporting HTTP requests just
because they can be used to communicate with SaaSS? Probably no.
What about something more specific like the ability to query remote
database provided by SaaSS service? One may just need login/password +
free sql implementation. What if it is not SELECT query, but INSERT
query sharing the data with SaaSS? What about the history of SELECT
queries being associated with the user and the sold to third-party? What
if external free CLI tool is needed? non-free CLI? There should probably
be a boundary somewhere, but it is not clear where it should lie.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-23 12:45           ` Ihor Radchenko
@ 2023-01-23 20:12             ` Tim Cross
  2023-01-26  4:25               ` Richard Stallman
  2023-01-26  4:26             ` Richard Stallman
  1 sibling, 1 reply; 32+ messages in thread
From: Tim Cross @ 2023-01-23 20:12 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: rms, emacs-orgmode

I just wanted to provide some additional information which RMS may find
informative.

Under the hood, ob-sql.el is using the built-in Emacs sql.el library. It
is this library which provides the 'support' for various SQL database
engines. That support has been part of the sql library since it was
added to Emacs in about 1998.

The 'support' is essentially specialised comint based interfaces tweaked
to work with the various SQL database engine command line clients such
as psql for Postgres and sqlplus for Oracle. This involves codes to use
the comint buffer to send commands/regions to the SQL client and read
back the results and run interactive 'repl' like sessions with the
client.

No additional software is installed by either ob-sql.el or sql.el - it
is all just elisp. Any additional software, such as the database client,
must be installed separately by the user (clients on remote machines can
also be used via ssh).

There are no jar files or any other additional bits of software
installed.

There is also some additional support in the form of font-locking which
includes support for different SQL variants i.e. in addition to ANSI
SQL, you can also specify Postgres SQL, Oracle SQL, MS-SQL etc to get
font-locking which supports some of the keyword differences between the
different SQL engines.

Personally, I don't believe any of this contravenes FSF
guidelines. Neither sql.el or ob-sql.el are encouraging use of any
specific database engine. What these libraries do is in fact allow
those who do want to use free software and avenue for interacting with
these systems using free software rather than on-free (similar to Emacs'
WIndows and Mac support).

The software as a service issue is far more difficult to assess when it
comes to databases as the most common architecture with databases is to
have the database on a separate server which is often not local and
where frequently, the user has little or no control over the
software. This has become even more common in recent years due to the
growth in big data and the problem that most individuals and small
groups cannot afford the costs or handle the administrative complexity
associated with hosting databases with large data sets and storage
requirements.

Ihor Radchenko <yantar92@posteo.net> writes:

> Richard Stallman <rms@gnu.org> writes:
>
>>   > > Because we already support Orcale, SAP Hana, MSSql and Vertico for example.
>>
>> Would someone please tell me more concretely what kind of "support"
>> this is? Which GNU package supports them, and how?  
>
> [Jean Luis mentioned M-x sql-* commands in another message. They may
> also be worth discussing, but are not what I meant in the original
> message]
>
> ob-sql is Org mode's feature (part of Emacs) allowing users to execute
> SQL code inline inside Org files:
>
> #+header: :engine sqlite
> #+header: :database ~/.local/share/qutebrowser/history.sqlite
>
> #+begin_src sql
>   SELECT URL FROM History ORDER BY "URL" DESC LIMIT 5 
> #+end_src
>
> #+RESULTS:
> | qute://help/commands.html |
> | qute://help/commands.html |
> | qute://help/              |
> | qute://help               |
> | qute://                   |
>
> Note the :engine argument. It determines which CLI backend is being
> called by Org mode to query the database.
>
> ;; Engines supported:
> ;; - mysql
> ;; - dbi
> ;; - mssql
> ;; - sqsh
> ;; - postgresql (postgres)
> ;; - oracle
> ;; - vertica
> ;; - saphana
>
> Some of these engines are free software and we have no issue supporting
> them. Some are not.
>
>> ... Also, what kind
>> of things are those?  Are they nonfree programs, or are they SaaSS?
>> Some of them I recognize as nonfree programs, but some names I don't
>> recognize at all.
>
> At least, mssql is non-free with no source code available. Same for
> oracle, vertica, and saphana.
>
> I am not sure about SaaSS - even postgresql (free software) may be used
> as a service provider by running it on server the user does not control.
> Probably, I do not fully understand how SaaSS is defined (I did read
> https://www.gnu.org/philosophy/who-does-that-server-really-serve.html)
>
> Earlier in the thread, https://github.com/dbcli/athenacli was proposed
> as another CLI to support. Athenacli itself is distributed under BSD-3 -
> free license. However, the CLI is just an interface to Amazon Athena -
> server-side database service.
>
> From my limited understanding, the main purpose of Amazon Athena is
> querying "big data" databases for further analysis, which does not
> constitute SaaSS (AFAIU) - users may not own the "big data" and may not
> have enough resources on their own computers to run the SQL queries that
> utilize machine learning models.
>
>> There are situations where it is acceptable for a GNU package to
>> support its use together with certain nonfree programs.  Mainly when
>> the nonfree program so well known that this support mainly encourage
>> people who already use that nonfree program to start using the GNU
>> package with it, and is unlikely to do the converse.
>>
>> See the GNU Maintainers Guide for more details.
>
> It is hard to define "well known". For me, oracle and mssql databases
> are well-known (just by company name), while saphana and vertica are
> not. But I do not work with SQL and thus lack expertise about what is
> being used in reality. How to judge?
>
>> However, use with a SaaSS system (service as a software substitute) is
>> a different issue (though it has much in common).  I'd like to think
>> about it and ask advisors for advice.  These details can help me start
>> to think about it.
>
> I feel very confused about possible guidelines for SaaSS.
>
> SaaSS does not always require specific CLI tools to be used.
> Consider common HTTP requests or GraphQL that might be employed to
> communicate with SaaSS. Should we stop supporting HTTP requests just
> because they can be used to communicate with SaaSS? Probably no.
> What about something more specific like the ability to query remote
> database provided by SaaSS service? One may just need login/password +
> free sql implementation. What if it is not SELECT query, but INSERT
> query sharing the data with SaaSS? What about the history of SELECT
> queries being associated with the user and the sold to third-party? What
> if external free CLI tool is needed? non-free CLI? There should probably
> be a boundary somewhere, but it is not clear where it should lie.



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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-23  6:33           ` Jean Louis
@ 2023-01-25  4:31             ` Richard Stallman
  2023-01-25  7:57               ` Tim Cross
  2023-01-25 11:51               ` Jean Louis
  0 siblings, 2 replies; 32+ messages in thread
From: Richard Stallman @ 2023-01-25  4:31 UTC (permalink / raw)
  To: Jean Louis; +Cc: yantar92, emacs-orgmode

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > Would someone please tell me more concretely what kind of "support"
  > > this is?

  > You can find interactive support in `sql' library, functions such as:

  > M-x sql-oracle 

  > which supports proprietary Oracle Database:

This raises two questions.

1. For this purpose, what kind of thing is "the Oracle Database"?
a. A library to link with?
b. A program to run in a subprocess?
c. A server running SaaSS?

2. How does Emacs communicate with that thing?
a. By function calls within a process?
b. Via shared memory?
c. Via a pty or pipe?
d. Via sockets?

The answers are crucial for thinking about what our moral ideas and
policies say about this case.

  > (sql-ms &optional BUFFER)

  > Run osql by Microsoft as an inferior process.

This suggests an answer to the first question.
More precisely, it suggests that the answer is b
_at least some of the time_.

  > > Are they nonfree programs, or are they SaaSS?

  > They are proprietary programs that may be also SaaSS.

Does the Emacs support offer to talk with a remote web server?

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-25  4:31             ` Richard Stallman
@ 2023-01-25  7:57               ` Tim Cross
  2023-01-25 12:35                 ` Ihor Radchenko
  2023-01-28  4:43                 ` Richard Stallman
  2023-01-25 11:51               ` Jean Louis
  1 sibling, 2 replies; 32+ messages in thread
From: Tim Cross @ 2023-01-25  7:57 UTC (permalink / raw)
  To: rms; +Cc: Jean Louis, yantar92, emacs-orgmode

Richard Stallman <rms@gnu.org> writes:

> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
>   > > Would someone please tell me more concretely what kind of "support"
>   > > this is?
>
>   > You can find interactive support in `sql' library, functions such as:
>
>   > M-x sql-oracle 
>
>   > which supports proprietary Oracle Database:
>
> This raises two questions.
>
> 1. For this purpose, what kind of thing is "the Oracle Database"?
> a. A library to link with?
> b. A program to run in a subprocess?
> c. A server running SaaSS?
>

None of the above!

Richard,

to be very clear, ob-sql is not adding any NEW interface to any external
program. It is just using the Emacs built-in SQL library (Elisp), which
has been part of Emacs for a long time (I was using it in late 90s to
work with Oracle RDMS). It is this library that provides the 'support'
for things like Oracle's RDMS. If you want more specific information,
ask on emacs-devel. Org mode is just using this built-in library.

The Oracle database is simply a relational database management system in
the same way as Postgres, MySQL, Ingris, MS-Sql server etc. All of these
have a CLI client and support connections via JDBC. The sql.el library
provides specialised comint based interfaces which run the CLI to
communicate with the RDMS. The closest of your 3 choices is b, as the
build-in Emacs sql library executes the RDMS CLI in a sub-process comint
buffer.


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-25  4:31             ` Richard Stallman
  2023-01-25  7:57               ` Tim Cross
@ 2023-01-25 11:51               ` Jean Louis
  2023-01-29  5:15                 ` Richard Stallman
  1 sibling, 1 reply; 32+ messages in thread
From: Jean Louis @ 2023-01-25 11:51 UTC (permalink / raw)
  To: Richard Stallman; +Cc: yantar92, emacs-orgmode

* Richard Stallman <rms@gnu.org> [2023-01-25 07:32]:
> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
> 
>   > > Would someone please tell me more concretely what kind of "support"
>   > > this is?
> 
>   > You can find interactive support in `sql' library, functions such as:
> 
>   > M-x sql-oracle 
> 
>   > which supports proprietary Oracle Database:
> 
> This raises two questions.
> 
> 1. For this purpose, what kind of thing is "the Oracle Database"?
> a. A library to link with?
> b. A program to run in a subprocess?

It is program that runs in a subprocess.

> c. A server running SaaSS?

Theoretically it could be as access may be network based. 

But according to my knowledge this product is proprietary and may be
downloaded and run on users' computer or network computers.

> 2. How does Emacs communicate with that thing?
> a. By function calls within a process?

Yes.

> b. Via shared memory?
> c. Via a pty or pipe?
> d. Via sockets?

By invoking proprietary program named "sqlplus" which function is
defined in library "sql.el" and by using comint-mode

(defcustom sql-oracle-program "sqlplus"
  "Command to start sqlplus by Oracle.

Starts `sql-interactive-mode' after doing some setup.

On Windows, \"sqlplus\" usually starts the sqlplus \"GUI\".  In order
to start the sqlplus console, use \"plus33\" or something similar.
You will find the file in your Orant\\bin directory."
  :type 'file)


(comint-mode)

Major mode for interacting with an inferior interpreter.
Interpreter name is same as buffer name, sans the asterisks.
Return at end of buffer sends line as input.
Return not at end copies rest of line to end and sends it.
Setting variable ‘comint-eol-on-send’ means jump to the end of the line
before submitting new input.

This mode is customized to create major modes such as Inferior Lisp
mode, Shell mode, etc.  This can be done by setting the hoo



In my opinion Emacs should not be invoking proprietary programs, and
distributing sql.el with Emacs opposes the principle of not
recommending proprietary software.

By having functions to run proprietary software from within Emacs we
are advertising proprietary software.


--
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-25  7:57               ` Tim Cross
@ 2023-01-25 12:35                 ` Ihor Radchenko
  2023-01-25 14:05                   ` Tim Cross
  2023-01-28  4:43                 ` Richard Stallman
  1 sibling, 1 reply; 32+ messages in thread
From: Ihor Radchenko @ 2023-01-25 12:35 UTC (permalink / raw)
  To: Tim Cross; +Cc: rms, Jean Louis, emacs-orgmode

Tim Cross <theophilusx@gmail.com> writes:

> to be very clear, ob-sql is not adding any NEW interface to any external
> program. It is just using the Emacs built-in SQL library (Elisp), which
> has been part of Emacs for a long time (I was using it in late 90s to
> work with Oracle RDMS). It is this library that provides the 'support'
> for things like Oracle's RDMS. If you want more specific information,
> ask on emacs-devel. Org mode is just using this built-in library.

This is wrong.
`org-babel-execute:sql' directly calls the CLI executable via `process-file'.

That said, the discussion about sql.el is also relevant wrt non-free SQL
client support. It will be helpful to clarify what is morally acceptable
for all the scenarios, not just for Org's use-case.

> The Oracle database is simply a relational database management system in
> the same way as Postgres, MySQL, Ingris, MS-Sql server etc. All of these
> have a CLI client and support connections via JDBC. The sql.el library
> provides specialised comint based interfaces which run the CLI to
> communicate with the RDMS. The closest of your 3 choices is b, as the
> build-in Emacs sql library executes the RDMS CLI in a sub-process comint
> buffer.

Org does not use this comint interface yet. We may in future though, for
sessions:

(defun org-babel-prep-session:sql (_session _params)
  "Raise an error because Sql sessions aren't implemented."
  (error "SQL sessions not yet implemented"))

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-25 12:35                 ` Ihor Radchenko
@ 2023-01-25 14:05                   ` Tim Cross
  2023-01-25 14:31                     ` Ihor Radchenko
  2023-01-28  4:45                     ` Richard Stallman
  0 siblings, 2 replies; 32+ messages in thread
From: Tim Cross @ 2023-01-25 14:05 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: rms, Jean Louis, emacs-orgmode

Ihor Radchenko <yantar92@posteo.net> writes:

> Tim Cross <theophilusx@gmail.com> writes:
>
>> to be very clear, ob-sql is not adding any NEW interface to any external
>> program. It is just using the Emacs built-in SQL library (Elisp), which
>> has been part of Emacs for a long time (I was using it in late 90s to
>> work with Oracle RDMS). It is this library that provides the 'support'
>> for things like Oracle's RDMS. If you want more specific information,
>> ask on emacs-devel. Org mode is just using this built-in library.
>
> This is wrong.
> `org-babel-execute:sql' directly calls the CLI executable via `process-file'.
>
> That said, the discussion about sql.el is also relevant wrt non-free SQL
> client support. It will be helpful to clarify what is morally acceptable
> for all the scenarios, not just for Org's use-case.
>
>> The Oracle database is simply a relational database management system in
>> the same way as Postgres, MySQL, Ingris, MS-Sql server etc. All of these
>> have a CLI client and support connections via JDBC. The sql.el library
>> provides specialised comint based interfaces which run the CLI to
>> communicate with the RDMS. The closest of your 3 choices is b, as the
>> build-in Emacs sql library executes the RDMS CLI in a sub-process comint
>> buffer.
>
> Org does not use this comint interface yet. We may in future though, for
> sessions:
>
> (defun org-babel-prep-session:sql (_session _params)
>   "Raise an error because Sql sessions aren't implemented."
>   (error "SQL sessions not yet implemented"))

OK, thanks the for correction. I was confused because the set of
supported RDBMS is the same as those supported by sql.el and the
connection credentials uses the same variable name
i.e. sql-connection-alist.

However, I gues the point remains, sql.el and ob-sql.el support a number
of non-free RDMS and I think this is fine given that

1. There is no encouragement, implicit or explicit, to use a non-free
database
2. Provided support provides a way to interact with these non-free RDMS using
free software.
3. There is no requirement to install non-free software to use
ob-sql.el. The software is fully functional using a free RDMS like
postgres.

For maintenance reasons and to add session support, I would suggest that
using sql.el instead of re-inventing this wheel would be a better
outcome. I've used sql.el for years and it works extremely well and I
don't htink it would be too hard to integrate into ob-sql.



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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-25 14:05                   ` Tim Cross
@ 2023-01-25 14:31                     ` Ihor Radchenko
  2023-01-25 21:11                       ` Tim Cross
  2023-01-28  4:45                     ` Richard Stallman
  1 sibling, 1 reply; 32+ messages in thread
From: Ihor Radchenko @ 2023-01-25 14:31 UTC (permalink / raw)
  To: Tim Cross; +Cc: rms, Jean Louis, emacs-orgmode

Tim Cross <theophilusx@gmail.com> writes:

> 3. There is no requirement to install non-free software to use
> ob-sql.el. The software is fully functional using a free RDMS like
> postgres.

Yes, but there is requirement to install in order to use ob-sql.el
__with :engine set to non-free option__.

So, I can envision that someone who decided to use ob-sql.el and
considering between free and non-free engine may prefer non-free one. Of
course, it is not very strong argument, but the boundaries are fuzzy in
this area.

> For maintenance reasons and to add session support, I would suggest that
> using sql.el instead of re-inventing this wheel would be a better
> outcome. I've used sql.el for years and it works extremely well and I
> don't htink it would be too hard to integrate into ob-sql.

Sure. That's what we usually do - just use whatever REPL is available
for a given ob-* language. Just a question of someone sending a patch.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-25 14:31                     ` Ihor Radchenko
@ 2023-01-25 21:11                       ` Tim Cross
  0 siblings, 0 replies; 32+ messages in thread
From: Tim Cross @ 2023-01-25 21:11 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: rms, Jean Louis, emacs-orgmode

Ihor Radchenko <yantar92@posteo.net> writes:

> Tim Cross <theophilusx@gmail.com> writes:
>
>> 3. There is no requirement to install non-free software to use
>> ob-sql.el. The software is fully functional using a free RDMS like
>> postgres.
>
> Yes, but there is requirement to install in order to use ob-sql.el
> __with :engine set to non-free option__.
>
> So, I can envision that someone who decided to use ob-sql.el and
> considering between free and non-free engine may prefer non-free one. Of
> course, it is not very strong argument, but the boundaries are fuzzy in
> this area.
>

in the same way someone could choose to run emacs on MS Windows. This
doesn't mean emacs encourages people to use MS Windows. Rather it means
that people who are restricted to MS Windows can at least use a free
editor on that platform. In a similar manner, people who are restricted
to working with a non-free database can access it using free software. I
think this is particularly relevant given the growth in large databases
where users are unable to use a free database or run it locally simply
because of the size of the data and the resource requirements and
administrative complexity involved. 

>> For maintenance reasons and to add session support, I would suggest that
>> using sql.el instead of re-inventing this wheel would be a better
>> outcome. I've used sql.el for years and it works extremely well and I
>> don't htink it would be too hard to integrate into ob-sql.
>
> Sure. That's what we usually do - just use whatever REPL is available
> for a given ob-* language. Just a question of someone sending a patch.



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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-23 20:12             ` Tim Cross
@ 2023-01-26  4:25               ` Richard Stallman
  2023-01-26  6:59                 ` Supporting non-free SQL clients in ob-sql Loris Bennett
  2023-01-26 10:22                 ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Ihor Radchenko
  0 siblings, 2 replies; 32+ messages in thread
From: Richard Stallman @ 2023-01-26  4:25 UTC (permalink / raw)
  To: Tim Cross; +Cc: yantar92, emacs-orgmode

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > The 'support' is essentially specialised comint based interfaces tweaked
  > to work with the various SQL database engine command line clients such
  > as psql for Postgres and sqlplus for Oracle. This involves codes to use
  > the comint buffer to send commands/regions to the SQL client and read
  > back the results and run interactive 'repl' like sessions with the
  > client.

Thanks.

Based on our general policies, it is ok to do this.  It is ok for
Postgres because that is free software.  It is ok for Oracle because
that is widely known.

Ihor Radchenko <yantar92@posteo.net> wrote:

  > It is hard to define "well known". For me, oracle and mssql databases
  > are well-known (just by company name), while saphana and vertica are
  > not.

I have never heard of saphana or vertica, which suggests that maybe
this is an issue.  However, I don't know the database field, so I
am the wrong one to judge.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-23 12:45           ` Ihor Radchenko
  2023-01-23 20:12             ` Tim Cross
@ 2023-01-26  4:26             ` Richard Stallman
  1 sibling, 0 replies; 32+ messages in thread
From: Richard Stallman @ 2023-01-26  4:26 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > I am not sure about SaaSS - even postgresql (free software) may be used
  > as a service provider by running it on server the user does not control.

For sure, it CAN be used that way.  If a Lisp package is designed to
work with a subprocess, a user can certainly rig it to talk with a
remote server.  It is the nature of free software that people can
customize it, even so as to do something foolish with it.  When a user
does this, it's per responsibility, not ours.

We should not distribute specific support or recommendations to use
the Lisp package in that particular way.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




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

* Re: Supporting non-free SQL clients in ob-sql
  2023-01-26  4:25               ` Richard Stallman
@ 2023-01-26  6:59                 ` Loris Bennett
  2023-01-26 10:22                 ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Ihor Radchenko
  1 sibling, 0 replies; 32+ messages in thread
From: Loris Bennett @ 2023-01-26  6:59 UTC (permalink / raw)
  To: rms; +Cc: Org Mode Mailing List

Richard Stallman <rms@gnu.org> writes:

> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
> [[[ whether defending the US Constitution against all enemies,     ]]]
> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]
>
>   > The 'support' is essentially specialised comint based interfaces tweaked
>   > to work with the various SQL database engine command line clients such
>   > as psql for Postgres and sqlplus for Oracle. This involves codes to use
>   > the comint buffer to send commands/regions to the SQL client and read
>   > back the results and run interactive 'repl' like sessions with the
>   > client.
>
> Thanks.
>
> Based on our general policies, it is ok to do this.  It is ok for
> Postgres because that is free software.  It is ok for Oracle because
> that is widely known.
>
> Ihor Radchenko <yantar92@posteo.net> wrote:
>
>   > It is hard to define "well known". For me, oracle and mssql databases
>   > are well-known (just by company name), while saphana and vertica are
>   > not.
>
> I have never heard of saphana or vertica, which suggests that maybe
> this is an issue.  However, I don't know the database field, so I
> am the wrong one to judge.

I assume that 'saphana' actually refers to 'SAP HANA'[1], which is an
in-memory RDMS produced by SAP, the large German software company.  I
think this product may well qualify as being 'well-known', at least in
the field of enterprise software.

Cheers,

Loris

Footnotes:
[1]  https://en.wikipedia.org/wiki/SAP_HANA

-- 
This signature is currently under constuction.


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-26  4:25               ` Richard Stallman
  2023-01-26  6:59                 ` Supporting non-free SQL clients in ob-sql Loris Bennett
@ 2023-01-26 10:22                 ` Ihor Radchenko
  2023-01-26 11:05                   ` Supporting non-free SQL clients in ob-sql Heinz Tuechler
  2023-01-28  4:45                   ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Richard Stallman
  1 sibling, 2 replies; 32+ messages in thread
From: Ihor Radchenko @ 2023-01-26 10:22 UTC (permalink / raw)
  To: rms; +Cc: Tim Cross, emacs-orgmode

Richard Stallman <rms@gnu.org> writes:

> Ihor Radchenko <yantar92@posteo.net> wrote:
>
>   > It is hard to define "well known". For me, oracle and mssql databases
>   > are well-known (just by company name), while saphana and vertica are
>   > not.
>
> I have never heard of saphana or vertica, which suggests that maybe
> this is an issue.  However, I don't know the database field, so I
> am the wrong one to judge.

Would it then make sense to note the reasons why we support one or
another non-free software in a separate file like etc/NON-FREE-SUPPORT?
Non-free software popular now may not be popular in future, and thus it
will become not ethical to support it then.

Also, what about Emacs supporting MS DOS and old versions of Windows? Do
they still qualify as popular software?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Supporting non-free SQL clients in ob-sql
  2023-01-26 10:22                 ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Ihor Radchenko
@ 2023-01-26 11:05                   ` Heinz Tuechler
  2023-01-26 11:14                     ` Ihor Radchenko
  2023-01-28  4:45                   ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Richard Stallman
  1 sibling, 1 reply; 32+ messages in thread
From: Heinz Tuechler @ 2023-01-26 11:05 UTC (permalink / raw)
  To: emacs-orgmode

Ihor Radchenko wrote/hat geschrieben on/am 26.01.2023 11:22:
> Richard Stallman <rms@gnu.org> writes:
>
>> Ihor Radchenko <yantar92@posteo.net> wrote:
>>
>>   > It is hard to define "well known". For me, oracle and mssql databases
>>   > are well-known (just by company name), while saphana and vertica are
>>   > not.
>>
>> I have never heard of saphana or vertica, which suggests that maybe
>> this is an issue.  However, I don't know the database field, so I
>> am the wrong one to judge.
>
> Would it then make sense to note the reasons why we support one or
> another non-free software in a separate file like etc/NON-FREE-SUPPORT?
> Non-free software popular now may not be popular in future, and thus it
> will become not ethical to support it then.
>
> Also, what about Emacs supporting MS DOS and old versions of Windows? Do
> they still qualify as popular software?
>
Microsoft would probably appreciate, if only the latest version were
supported by free software.
best regards, Heinz


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

* Re: Supporting non-free SQL clients in ob-sql
  2023-01-26 11:05                   ` Supporting non-free SQL clients in ob-sql Heinz Tuechler
@ 2023-01-26 11:14                     ` Ihor Radchenko
  2023-01-26 11:47                       ` Heinz Tuechler
  0 siblings, 1 reply; 32+ messages in thread
From: Ihor Radchenko @ 2023-01-26 11:14 UTC (permalink / raw)
  To: Heinz Tuechler; +Cc: emacs-orgmode

Heinz Tuechler <tuechler@gmx.at> writes:

>> Also, what about Emacs supporting MS DOS and old versions of Windows? Do
>> they still qualify as popular software?
>>
> Microsoft would probably appreciate, if only the latest version were
> supported by free software.
> best regards, Heinz

Are you implying that dropping support of obsolete non-free software
will encourage users to upgrade to newer versions of the same non-free
software?

If so, I disagree. It might equally encourage users to switch to newer
and also free equivalent. Unless there is no free equivalent, which is
not true for Windows or MS DOS, AFAIK.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Supporting non-free SQL clients in ob-sql
  2023-01-26 11:14                     ` Ihor Radchenko
@ 2023-01-26 11:47                       ` Heinz Tuechler
  0 siblings, 0 replies; 32+ messages in thread
From: Heinz Tuechler @ 2023-01-26 11:47 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: emacs-orgmode

Ihor Radchenko wrote/hat geschrieben on/am 26.01.2023 12:14:
> Heinz Tuechler <tuechler@gmx.at> writes:
>
>>> Also, what about Emacs supporting MS DOS and old versions of Windows? Do
>>> they still qualify as popular software?
>>>
>> Microsoft would probably appreciate, if only the latest version were
>> supported by free software.
>> best regards, Heinz
>
> Are you implying that dropping support of obsolete non-free software
> will encourage users to upgrade to newer versions of the same non-free
> software?
Yes
>
> If so, I disagree. It might equally encourage users to switch to newer
> and also free equivalent.
You maybe right

> Unless there is no free equivalent, which is
> not true for Windows or MS DOS, AFAIK.
>


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-25  7:57               ` Tim Cross
  2023-01-25 12:35                 ` Ihor Radchenko
@ 2023-01-28  4:43                 ` Richard Stallman
  1 sibling, 0 replies; 32+ messages in thread
From: Richard Stallman @ 2023-01-28  4:43 UTC (permalink / raw)
  To: Tim Cross; +Cc: bugs, yantar92, emacs-orgmode

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > 1. For this purpose, what kind of thing is "the Oracle Database"?
  > > a. A library to link with?
  > > b. A program to run in a subprocess?
  > > c. A server running SaaSS?

  > None of the above!

I found that reply tantalizing but not helpful.
Fortunately, others have given helpful replies,
from which I could see there is no ethical problem in
using sql.el to run the Oracle data base software.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-26 10:22                 ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Ihor Radchenko
  2023-01-26 11:05                   ` Supporting non-free SQL clients in ob-sql Heinz Tuechler
@ 2023-01-28  4:45                   ` Richard Stallman
  2023-01-29 14:21                     ` Ihor Radchenko
  1 sibling, 1 reply; 32+ messages in thread
From: Richard Stallman @ 2023-01-28  4:45 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: theophilusx, emacs-orgmode

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > Would it then make sense to note the reasons why we support one or
  > another non-free software in a separate file like etc/NON-FREE-SUPPORT?

I think it is a good idea to document the reasoning for these
decision.  But I think it does not necessarily have to be centralized
in one file for all of Emacs.  Another alternative, also natural,
would be to describe these decisions with the code that implements the
support.

  > Also, what about Emacs supporting MS DOS and old versions of Windows? Do
  > they still qualify as popular software?

There is no need to include version numbers when we judge whether a
program is well known.  People are far more likely to think about a
program name than about its various version numbers.

If a program was once well known, but its use is dwindling, it's not
something we have to worry about informing people about.  More people
will have heard of it in the past, than will want to switch to it now.


-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-25 14:05                   ` Tim Cross
  2023-01-25 14:31                     ` Ihor Radchenko
@ 2023-01-28  4:45                     ` Richard Stallman
  2023-01-30 14:51                       ` Ihor Radchenko
  1 sibling, 1 reply; 32+ messages in thread
From: Richard Stallman @ 2023-01-28  4:45 UTC (permalink / raw)
  To: Tim Cross; +Cc: yantar92, bugs, emacs-orgmode

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > However, I gues the point remains, sql.el and ob-sql.el support a number
  > of non-free RDMS

Can someone post a verified list of which of them are non-free?
Someone posted a list of a few, which I cannot find now in my saved
inboxes, but I think it included oracle, mysql, vertica? and a fourth
one else (what was it?).

Does sql.el handle any other nonfree ones aside from those?

   > and I think this is fine given that

That is something we should double-check in accord with the stated
policy.  But first we need to know which ones to check.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-25 11:51               ` Jean Louis
@ 2023-01-29  5:15                 ` Richard Stallman
  0 siblings, 0 replies; 32+ messages in thread
From: Richard Stallman @ 2023-01-29  5:15 UTC (permalink / raw)
  To: Jean Louis; +Cc: yantar92, emacs-orgmode

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > This raises two questions.
  > > 
  > > 1. For this purpose, what kind of thing is "the Oracle Database"?
  > > a. A library to link with?
  > > b. A program to run in a subprocess?

  > It is program that runs in a subprocess.

  > > c. A server running SaaSS?

  > Theoretically it could be as access may be network based. 

  > But according to my knowledge this product is proprietary and may be
  > downloaded and run on users' computer or network computers.

Any nonfree program that users can install to run in a subprocess,
they can easily arrange to communicate with through sockets over the
net.  Thus, supporting a case of (b) implies supporting also the
scenarion (c).

So, if our rules say that (b) is ok in a certain case, we need not worry
separately about (c).

  > > 2. How does Emacs communicate with that thing?
  > > a. By function calls within a process?

  > Yes.

Based on the details you gave, I think we are miscommunicating.
You're saying that a Lisp program communicates with the Oracle
database through calls to other Lisp packages -- but that doesn't
address this question.  Those other Lisp packages are free
and running inside Emacs.

This question is how Emacs communicates with the Oracle database
program.

  > (defcustom sql-oracle-program "sqlplus"
  >   "Command to start sqlplus by Oracle.

If it uses comint mode, it is talking with that program
through a pty or pipe.  So the answer is c.

  > > b. Via shared memory?
  > > c. Via a pty or pipe?
  > > d. Via sockets?

But this text from a doc string makes me concerned

  > On Windows, \"sqlplus\" usually starts the sqlplus \"GUI\".  In order
  > to start the sqlplus console, use \"plus33\" or something similar.
  > You will find the file in your Orant\\bin directory."

because it isn't clear.  It is sketchy.  An expert on running that
database on Windows might understand it, but someone who only knows
about Emacs can't even try.

How does sql.el communicate with sqlplus on Windows?

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-28  4:45                   ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Richard Stallman
@ 2023-01-29 14:21                     ` Ihor Radchenko
  2023-02-04  5:15                       ` Richard Stallman
  0 siblings, 1 reply; 32+ messages in thread
From: Ihor Radchenko @ 2023-01-29 14:21 UTC (permalink / raw)
  To: rms; +Cc: theophilusx, emacs-orgmode

Richard Stallman <rms@gnu.org> writes:

>   > Would it then make sense to note the reasons why we support one or
>   > another non-free software in a separate file like etc/NON-FREE-SUPPORT?
>
> I think it is a good idea to document the reasoning for these
> decision.  But I think it does not necessarily have to be centralized
> in one file for all of Emacs.  Another alternative, also natural,
> would be to describe these decisions with the code that implements the
> support.

Will file header be a good place?

Note that there is little point adding the reasons behind supporting
non-free software if they cannot be easily found. Ideally, it should be
a standard place documented as code convention. Then, people can
consistently check the reasons (or lack of) behind each individual
non-free software support decision.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-28  4:45                     ` Richard Stallman
@ 2023-01-30 14:51                       ` Ihor Radchenko
  0 siblings, 0 replies; 32+ messages in thread
From: Ihor Radchenko @ 2023-01-30 14:51 UTC (permalink / raw)
  To: rms; +Cc: Tim Cross, bugs, emacs-orgmode

Richard Stallman <rms@gnu.org> writes:

>   > However, I gues the point remains, sql.el and ob-sql.el support a number
>   > of non-free RDMS
>
> Can someone post a verified list of which of them are non-free?
> Someone posted a list of a few, which I cannot find now in my saved
> inboxes, but I think it included oracle, mysql, vertica? and a fourth
> one else (what was it?).
>
> Does sql.el handle any other nonfree ones aside from those?

Note that we are talking about sql.el and also about ob-sql.el, which
are different libraries.

ob-sql.el supports the following non-free SQL implementations:
- mssql (https://en.wikipedia.org/wiki/Microsoft_SQL_Server)
- Oracle (https://en.wikipedia.org/wiki/Oracle_Database)
- Vertica (https://en.wikipedia.org/wiki/Vertica)
- saphana (https://en.wikipedia.org/wiki/SAP_HANA)

sql.el supports the following non-free SQL implementations:
- Oracle (https://en.wikipedia.org/wiki/Oracle_Database)
- SOLID SQL (https://en.wikipedia.org/wiki/SolidDB)
- Sybase (acquired by SAP, see sapphana; https://en.wikipedia.org/wiki/Sybase)
- Informix (https://en.wikipedia.org/wiki/IBM_Informix)
- Ingress (https://en.wikipedia.org/wiki/Ingres_(database))
- mssql (https://en.wikipedia.org/wiki/Microsoft_SQL_Server)
- Interbase (https://en.wikipedia.org/wiki/InterBase)
- DB2 (https://en.wikipedia.org/wiki/IBM_Db2)
- linter (https://en.wikipedia.org/wiki/Linter_SQL_RDBMS)
- Vertica (https://en.wikipedia.org/wiki/Vertica)

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena)
  2023-01-29 14:21                     ` Ihor Radchenko
@ 2023-02-04  5:15                       ` Richard Stallman
  0 siblings, 0 replies; 32+ messages in thread
From: Richard Stallman @ 2023-02-04  5:15 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: theophilusx, emacs-orgmode

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > I think it is a good idea to document the reasoning for these
  > > decision.  But I think it does not necessarily have to be centralized
  > > in one file for all of Emacs.  Another alternative, also natural,
  > > would be to describe these decisions with the code that implements the
  > > support.

  > Will file header be a good place?

It's a reasonable candidate.

  > Note that there is little point adding the reasons behind supporting
  > non-free software if they cannot be easily found. Ideally, it should be
  > a standard place documented as code convention. Then, people can
  > consistently check the reasons (or lack of) behind each individual
  > non-free software support decision.

That is a valid point.

Sorry for the delay.

-- 
Dr Richard Stallman (https://stallman.org)
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




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

end of thread, other threads:[~2023-02-04  5:16 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-01-16 10:48 [PATCH] ob-sql: Add support for Athena Daniel Kraus
2023-01-16 11:13 ` Ihor Radchenko
2023-01-16 11:52   ` Daniel Kraus
2023-01-16 20:50   ` Tim Cross
2023-01-17  9:42     ` Daniel Kraus
2023-01-17 10:06       ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Ihor Radchenko
2023-01-17 11:38         ` Tim Cross
2023-01-23  4:23         ` Richard Stallman
2023-01-23  6:33           ` Jean Louis
2023-01-25  4:31             ` Richard Stallman
2023-01-25  7:57               ` Tim Cross
2023-01-25 12:35                 ` Ihor Radchenko
2023-01-25 14:05                   ` Tim Cross
2023-01-25 14:31                     ` Ihor Radchenko
2023-01-25 21:11                       ` Tim Cross
2023-01-28  4:45                     ` Richard Stallman
2023-01-30 14:51                       ` Ihor Radchenko
2023-01-28  4:43                 ` Richard Stallman
2023-01-25 11:51               ` Jean Louis
2023-01-29  5:15                 ` Richard Stallman
2023-01-23 12:45           ` Ihor Radchenko
2023-01-23 20:12             ` Tim Cross
2023-01-26  4:25               ` Richard Stallman
2023-01-26  6:59                 ` Supporting non-free SQL clients in ob-sql Loris Bennett
2023-01-26 10:22                 ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Ihor Radchenko
2023-01-26 11:05                   ` Supporting non-free SQL clients in ob-sql Heinz Tuechler
2023-01-26 11:14                     ` Ihor Radchenko
2023-01-26 11:47                       ` Heinz Tuechler
2023-01-28  4:45                   ` Supporting non-free SQL clients in ob-sql (was: [PATCH] ob-sql: Add support for Athena) Richard Stallman
2023-01-29 14:21                     ` Ihor Radchenko
2023-02-04  5:15                       ` Richard Stallman
2023-01-26  4:26             ` Richard Stallman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).