Laverna: 分叉laverna

创建于 2018-08-06  ·  19评论  ·  资料来源: Laverna/laverna

由于 PR 不再获得批准,我认为现在是分叉这个项目或放弃它以进行定期维护的时候了。

我正在考虑这样做,因为我已经在我的开发分支中修复了几个报告的错误。 不过,我几乎不是 JS 专家,所以如果其他人有兴趣提供帮助,那就太好了。

我们是否应该更改名称以避免混淆? 如果是这样,对名称有什么建议吗?

最有用的评论

所以,wwebfor 回到了我的身边。 他已经完成了这个项目。

他承认,laverna 不能解决同步和多设备问题。 他建议将精力放在其他已经完成的项目上会更好。 他也没有让我访问 repo,所以我不能直接用它做任何事情。

我认为他的担忧是有道理的,但我喜欢 laverna,我认为值得尝试做出一些贡献。 我将继续我的计划,将它分叉并独立于 laverna 组织进行开发。

在过去的几周里,我一直在努力熟悉 dev 分支,并尽可能地处理小错误。 老实说,它现在的状态不是很好:

  • 看起来该项目正处于过渡到更多客户端/服务器模型的过程中,添加了信号服务器和 mongodb。 这对于托管来说并不是一个糟糕的模型,但对于通过 Dropbox 同步(或根本不同步)的独立最终用户来说,它变得很麻烦。
  • 信号服务器似乎已经在考虑多用户环境的情况下放在一起,并且已经开始使用一些有用的功能(例如用户之间的共享),但这并不完整,我相信目前实际上抑制了跨多个设备的同步。
  • 尽管如此,默认情况下不启用 https。
  • 基于电子的桌面应用程序版本不起作用。
  • 由于古老的依赖关系,gulp 在节点 10 中非常糟糕。 据说这会在某一天得到解决,尽管目前的计划似乎是强制使用不受支持的较新版本的 natives 包。 我找不到预计到达时间。

我想更多地讨论这些问题,并获得修复它们的建议/帮助。 我将在https://github.com/daed/laverna/issues/1 的fork 上复制这个问题

我强烈鼓励任何对该项目有既得利益的人前来讨论,我想警告其他任何人,该项目存在于 Laverna 组织中,可能不会进一步更新。

所有19条评论

有一个不错的编程背景,但我只是在学习 js,如果需要为这个项目做出贡献,我准备付出努力,因为它长期以来一直是我的 goto 应用程序。 至于Laverna2.0这个名字……呵呵。

@daed让我们先尝试编写@wwebfor && @wwwredfish

我很确定他们可以将每个贡献者或您添加到组织中,这样您就可以拥有写入权限...
否则,当您有名称和每个版本时请告诉我,以便我可以创建 AUR 包 :wink:

您能否通过密钥库(首选)或电子邮件与我联系,以便我可以在今天晚些时候(柏林时间)将@wwebfor的个人电子邮件发送给您?

PS:如果您在 fork 上生成新版本,我认为也生成 tarball 可能是个好主意 :smile:

好,当然。 我不想从任何人手中抢走这个项目。 我只是想确保它不会被遗忘。

我在美国中部时间。 如果可以的话,我明天会在 keybase 上与您交谈。

所以,wwebfor 回到了我的身边。 他已经完成了这个项目。

他承认,laverna 不能解决同步和多设备问题。 他建议将精力放在其他已经完成的项目上会更好。 他也没有让我访问 repo,所以我不能直接用它做任何事情。

我认为他的担忧是有道理的,但我喜欢 laverna,我认为值得尝试做出一些贡献。 我将继续我的计划,将它分叉并独立于 laverna 组织进行开发。

在过去的几周里,我一直在努力熟悉 dev 分支,并尽可能地处理小错误。 老实说,它现在的状态不是很好:

  • 看起来该项目正处于过渡到更多客户端/服务器模型的过程中,添加了信号服务器和 mongodb。 这对于托管来说并不是一个糟糕的模型,但对于通过 Dropbox 同步(或根本不同步)的独立最终用户来说,它变得很麻烦。
  • 信号服务器似乎已经在考虑多用户环境的情况下放在一起,并且已经开始使用一些有用的功能(例如用户之间的共享),但这并不完整,我相信目前实际上抑制了跨多个设备的同步。
  • 尽管如此,默认情况下不启用 https。
  • 基于电子的桌面应用程序版本不起作用。
  • 由于古老的依赖关系,gulp 在节点 10 中非常糟糕。 据说这会在某一天得到解决,尽管目前的计划似乎是强制使用不受支持的较新版本的 natives 包。 我找不到预计到达时间。

我想更多地讨论这些问题,并获得修复它们的建议/帮助。 我将在https://github.com/daed/laverna/issues/1 的fork 上复制这个问题

我强烈鼓励任何对该项目有既得利益的人前来讨论,我想警告其他任何人,该项目存在于 Laverna 组织中,可能不会进一步更新。

很好的总结@daed :

算我一个!

供参考:#931

你好。
以前跑过Laverna,后来因为DropBox放弃了。 我的 2 美分:使用具有数据库后端的真正客户端/服务器模型可以很好地防止很多同步问题。 这将使项目几乎独立。

@romu70这是我一直在努力解决的问题之一。 无论出于何种原因,我从未遇到过我听到每个人都抱怨的 Dropbox 同步问题,而且我喜欢没有中央服务器的事实。 dropbox 方法有点类似,但我至少可以查看我的笔记并看到它们是加密的。 如果一个人或一组拥有软件和数据库,例如在客户端/服务器模型中,它解决了许多必要的麻烦,但是,您如何证明您的数据确实得到了适当的保护? 您可以将已经加密的消息推送到的公共 api 就是这样一种方式,但这是距离最远的事情。

我一直在尝试寻找一种方法,以您想要的任何方式提供托管版本、自带服务器版本和独立桌面版本,但这听起来将非常难以支持。

我觉得客户端/服务器确实是通往下一个版本的最快且最有可能的途径,但我们越往此迈进,独立桌面应用程序就越难实现。

我倾向于同意。 如果您认为您的产品要安装在用户服务器上,那么客户端/服务器就很好。 通过这种方式,您可以确定数据是私有的,但设置起来就不太容易了。

关于桌面应用程序,我不确定这会让事情变得更难,只要考虑用 Electron 打包前端,就差不多完成了。

看到不了解这个代码库的人准备深入研究它,我印象深刻。 但是人们也可以选择一条更简单的路径,转到Boostnote ,它已经提供了相同的东西(DropBox 同步),并且具有已经维护良好的代码库、社区、支持等。

生命太短暂,无法重新发明轮子。

Boostnote 非常漂亮,我同意这一点。 它走得更远,并且有更多的润色。 虽然它不处理加密(功能请求已经开放了不到一年),并且需要在计算机上安装的东西的足迹似乎比 laverna 重得多。

Laverna 也可以完全从 USB 使用,并且仍然可以与 Dropbox 交互,即使它没有安装。 这也很整洁。 我认为即使面对比几个固定的人拥有更多资源的其他笔记工具,这里也有很多值得节省的地方。

这里是一个简单的用户,但 Laverna 的主要功能是零知识加密,并带有“将您的笔记保密”的标语。 如果没有它,我还不如回到 Evernote。

好吧,laverna 前端的电子实现比我想象的 dev 分支更容易实现。 它仍然需要(工作)自动化构建工具,但这是朝着正确方向迈出的一步。

@glocalglocal您对“私人”的定义是什么?

“已加密但在您不拥有的服务器上”是否被视为“私有”?
“加密但在本地硬盘上”怎么样?

我想以一种迂回的方式,我在问第一个是否足够好,或者第二个是否是考虑使用该软件的要求? 没有错误的答案; 我需要这里的用户视角。

选择总是好的。 因此,尽管有其他成熟的替代方案,但绝对值得花时间和精力来分叉这个项目。

这是我最初认为的最灵活和可维护的折衷方案:

目前在开发中:
Laverna 是两个组件,如果算上 UI,则为三个,如果算上 mongodb,则为四个(目前是一个要求)。 这是对用户的不合理期望。 面向用户的组件与信号服务器对话,后者又与 mongodb 对话。 目前 mongodb 所做的只是存储用户名和我认为的公钥。 信号服务器所做的(我知道的)所有操作都是将数据库与处理 ui 的组件分离。 这意味着用户可以运行 laverna“gui”(以电子中的 laverna 为例)并连接到公共 laverna“服务器”/db。 尽管基于我粗略的测试,多用户/多设备实现看起来不完整。 如果它以某种方式完全完成,我无法弄清楚如何使用它,这意味着它可能太复杂了。

我为开发者提出的建议:
我们将信号服务器和 UI 合并到一个包中。 此外,我们构建了这个合并包的电子版本。 我们将所有数据通过信号服务器处理到数据库中。 笔记,笔记本,备份配置文件,除了私钥之外的一切。 我们包括允许您启动 UI、信号服务器或两者的配置。 此外,我们为信号服务器构建了一个适配器,以便能够处理 sqlite3 连接。

这需要 laverna 并让你把它变成你想要的任何东西。 此方案的三个明显配置,您可以选择以下任一配置:

  1. 完全托管:UI、信号服务器和数据库都在某个服务器上运行。 您通过浏览器连接。 这基本上就是今天的 laverna.cc。 您获得了最大的便利,不需要下载/安装任何东西,但透明度最低,并且必须盲目信任您的服务器管理员。 我将称之为“Evernote 配置”。
  2. 客户端/服务器:UI 通过节点或电子在客户端计算机上运行,​​信号服务器和数据库在某处的服务器上运行。 您拥有集中式存储,并且可以使用任何可能包含的协作功能,并且您拥有 UI 客户端,您可以从源代码构建它以合理期望在客户端级别维护安全性。 这可能是功能、便利性和安全性的最佳折衷方案。 这有点类似于我对 keybase 工作的理解。
  3. 完全独立:UI、信号服务器和数据库都在一个盒子上运行。 当您运行 Node 或 Electron 时,它们会为您启动 UI 和信号服务器。 数据库是您的 mongodb 选择,或者如果您想要简单的、无需额外安装的选项,您可以选择 sqlite3。 我们完全转储 dropbox api 方法并通过文件系统进行 dropbox 同步。 如果您希望 dropbox 同步,您可以选择将数据库放在 dropbox 目录中任何感觉良好的路径。 如果您希望将笔记写入闪存驱动器或 NFS 或 /dev/null,您只需告诉它这样做即可。 这可能是目前 laverna 的当前版本工作方式最接近的事情。

请注意,我在上面交替使用“客户端”和“ui”。

我唯一真正关心的是 sqlite3 的健壮性,尤其是在跨 dropbox 同步时。 我有一种预感(并且只是一种预感)人们在使用 dropbox 时遇到的大多数同步问题都与 api 相关,并且只需切换到应用程序/文件系统以进行 dropbox 访问就可以解决很多这些问题。

有很多东西要讲,我可能不是最擅长解释我的想法,但问题是什么? 担忧? 注释?

@daed从用户的角度来看,只要加密足够强大和透明,数据库就可以存储在任何地方,这不会引起我的隐私问题。

我更喜欢客户端/服务器模型 (2),它具有用于审查/审计的开源桌面和移动客户端,以及用于可移植性和共享性的服务器存储。 应用程序通常提供独立模型 (3) 作为选项。 模型 2 中数据库的本地副本是否也不能选择性地存储在 Dropbox、MEGA 等文件夹中? 即使服务器永远消失,这也会起作用。

在模型 (1) 上,客户端加密/解密不能解决信任问题吗? 例如 Lastpass、Bitwarden。 那是假设浏览器上运行的内容受到审查。 模型 (1) 在某些情况下会很方便。

对于模型 1:
在这种情况下,“客户端”只是一个连接到 laverna ui 的“愚蠢”网络浏览器。 这给了我们两个选择。

  • 我们可以询问用户他们私钥的路径,以便我们可以读取它(本地)并在将消息传递给运行 laverna ui 的节点实例之前在浏览器端 js 中进行加密,这很不方便它需要本地文件,这违背了完全托管设置的初衷。 这有点类似于 github 的工作方式,但从技术上讲,github 有一个客户端仍然使用 git/ssh。
  • 或者,我们可以让服务器保留/管理您的私钥(但绝不是您的密码),然后我们 100% 远程操作。 您可以下载/更改您的私钥,但您还必须相信我们不会保留密码,并且我们不会搞砸确保您的密钥安全。 我认为这更接近于它现在的实施方式。 这基本上是免费的 Evernote,具有更友好的 ToS 和令人感觉良好的开源氛围。 不理想,但对某些人来说可能足够了。

可能还有更多选择,但我不确定此时它们会是什么。 我想,Lastpass / Bitwarden 存储和混淆密码。 这是一个可以与此结合使用的加密功能,但它不能解决密钥管理问题。 我从来没有使用过,所以我可能没有完全理解它们的效用。
话虽如此,我可能会在 AWS 上设置一个像这样的“官方”服务器,或者以防万一这对某些人来说足够好,如果不是全部的话。 我想即使有一些信任问题,免费的 Evernote 对某些用户来说也绰绰有余。 也许在上面贴一个捐赠按钮,看看我是否能收回托管费用。

对于模型 2:
这实际上是我最喜欢的三种可能实现。 从技术上讲,仍然需要在计算机上安装零软件。 您可以从 USB 驱动器运行 laverna 并将您的密钥保存在那里。 如果您想在公共计算机上走那么远,您甚至可以将其嵌入到安装有尾部的 USB 驱动器中。
我没有考虑过本地副本,但我的清单上有某种笔记导入/导出/备份功能,所以这两种方式很好地结合在一起。 如果您的服务器消失了,您可以更改为模型 3 并导入注释并继续前进,就好像什么也没发生一样。 将存储在 mongodb 中的数据转换为某种本地格式可能有点奇怪,但这可能是可以处理的。

作为一般更新,我昨晚深夜制作了一个概念验证电子应用程序,其中嵌入了 ui 和信号服务器,并且都在启动时启动。 它完全没有打磨,完全不适合发布,但它向我表明,只需很少的额外努力,仍然有 100% 可能拥有模型 3。

我想如果我们采用 3 模型方案,我将为包含 laverna ui 和服务器内容但没有电子的“服务器”版本创建包,以及包含所有组件的“客户端”版本作为电子。 对于服务器版本,需要通过编辑文件来完成配置,但它能够为模型 1 或模型 2 提供服务器端组件,而客户端版本将有一个 ui 配置页面/向导,并能够提供模型 2 的客户端组件以及完整的模型 3 实现。


这次谈话很有帮助,但留在这个 laverna repo 上并不是特别有用,因为我不能用它做任何事情。 我仍然会在这里查看是否有人发布任何新内容,但如果你想继续谈论这个(我希望每个人都这样做!)我会要求我们在https://github.com/daed 上做/laverna/问题/1。

谢谢大家。

我不知道 Forking 是什么意思(我不确定我应该这样做吗?)但无论如何; 我尝试了 laverna apk,但它似乎无法同步。 我正在尝试使用 5storage。 另一个页面上似乎有另一个 android 版本,但没有发布,必须构建它,但由于我的知识不足,它只是失败了。

@xreqx这意味着该项目已死,我正在获取代码并自行重新启动它(与其他想要帮助的人一起)。

老实说,我还没有看过移动版本。 老实说,我真的没有任何编写移动应用程序的经验。 不过,这是我想开始工作的事情。

可能值得一提的是标准文件标准笔记使用的库。

标准文件是用于 Web 和本机应用程序的同步和加密库。 它允许开发人员专注于构建面向用户的出色应用程序,并将同步、服务器和端到端加密留给这个库。
..
标准文件是一个可重用的客户端和服务器系统,它允许您部署一个不知道或不关心您的数据模式的“哑巴”后端服务器,并允许您在客户端加密数据并将其与远程服务器同步.

所以,wwebfor 回到了我的身边。 他已经完成了这个项目。

请注意,我不久前创建了这个维基页面。 我已链接到您的评论:
https://github.com/Laverna/laverna/wiki/DEAD-PROJECT-ALERT

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Issam2204 picture Issam2204  ·  8评论

Aaron-Zhao picture Aaron-Zhao  ·  5评论

JerJohn15 picture JerJohn15  ·  9评论

wwebfor picture wwebfor  ·  4评论

rjdeible-github picture rjdeible-github  ·  8评论