From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Eric Abrahamsen Newsgroups: gmane.emacs.help Subject: Re: Difference between EBDB and BBDB Date: Tue, 25 Jun 2019 14:25:26 -0700 Message-ID: <87blyll5mh.fsf@ericabrahamsen.net> References: <47447FCB-5DFA-49C8-8733-F6D07B7FFE57@icloud.com> <87ef3hmtuz.fsf@ericabrahamsen.net> <87a7e5mpc0.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="4890"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: help-gnu-emacs@gnu.org, Stefan Monnier To: Drew Adams Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Tue Jun 25 23:42:46 2019 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hftDB-00017I-PB for geh-help-gnu-emacs@m.gmane.org; Tue, 25 Jun 2019 23:42:45 +0200 Original-Received: from localhost ([::1]:35460 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hftDA-000456-OJ for geh-help-gnu-emacs@m.gmane.org; Tue, 25 Jun 2019 17:42:44 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45677) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hfswY-0003tF-LM for help-gnu-emacs@gnu.org; Tue, 25 Jun 2019 17:25:37 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hfswW-0005OS-QY for help-gnu-emacs@gnu.org; Tue, 25 Jun 2019 17:25:34 -0400 Original-Received: from ericabrahamsen.net ([52.70.2.18]:38046 helo=mail.ericabrahamsen.net) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1hfswW-0005DL-JA for help-gnu-emacs@gnu.org; Tue, 25 Jun 2019 17:25:32 -0400 Original-Received: from localhost (unknown [205.175.106.185]) (Authenticated sender: eric@ericabrahamsen.net) by mail.ericabrahamsen.net (Postfix) with ESMTPSA id 05EBCFA05D; Tue, 25 Jun 2019 21:25:27 +0000 (UTC) In-Reply-To: (Drew Adams's message of "Tue, 25 Jun 2019 14:08:41 -0700 (PDT)") X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 52.70.2.18 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.org gmane.emacs.help:121058 Archived-At: On 06/25/19 14:08 PM, Drew Adams wrote: >> > It sounds like, as one big difference, they are incompatible. You >> > cannot use the same "database" records for both. Is that right? >> >> That's right. >> >> > If so, that's a big difference. If so, does either provide a function >> > to import records from the other? >> >> EBDB can import from BBDB; > > That's great. > >> EBDB hasn't been around long enough for >> anyone to want to go the other way. If someone tried it for a couple >> months and hated it, but didn't want to lose their contacts, I could >> pretty easily write a BBDB exporter. >> >> EBDB also has pluggable/swappable databases, > > That could be even better, in principle. > >> so in theory one could make >> a database type that stored to a BBDB-usable file, but I'm not sure why >> you'd want to do that. > > Just food for thought: > > It's good to be able to separate the use (UI, UX or > whatever) from the database itself - form of records > etc. Regardless of whether it's BBDB or whatever > else might come along or already exists out there > somewhere. That was absolutely my first principle in making this package: the classes responsible for storage and behavior have nothing to do with the interface presented to the user. In fact, ebdb.el should be usable as an API for other packages, while ebdb-com.el should only be responsible for the ebdb-mode buffers. I wouldn't be surprised if I've screwed up this separation somewhat, but that was the original idea, and I will fix relevant bugs! > A generic way for a user to define her own > record-to-record mapping (for whatever storage form) > could help. It could be a mapping for one-time > conversion or a mapping to use at runtime to access > another database directly. While the documentation doesn't go into this at this point, this is precisely how the whole system works, right down to the "generic" term: `cl-defgeneric' is basically how you take control of the whole system.