Giter VIP home page Giter VIP logo

glyph.janet's Introduction

Glyph

NOTICE: This tool is in a very early alpha state and is still being designed.
WARNING: Before you use this tool, please understand the Security Implications listed in SECURITY.md

Glyph is a command line tool that manage your personal files for you using "collections" that implement their own managment commands. A few examples for such collection scripts can be found in the examples directory.
The integrated wiki module helps you in managing a markdown-based personal knowledge base and is designed to be used with a commandline editor like vim (the author uses neovim in combination with vimwiki).
The central glyph repository manages these collections and offers some functionality that the collections management scripts can hook into.
Most importantly glyph exposes following functionality:

  • A distributed key-value store
  • A key-value cache
  • Node management (not implemented yet)
  • Encryption key management

Collections

Collections are simple scripts implemented in a git repository. To keep the setup simple and avoid a hard requirement on glyph, they are implemented as a simple script called .main that is executed from the root of the collection repository. These scripts implement all the functionality to interact with the collection and thus can be used independently from glyph.

Documentation

Large parts of glyph are self documenting via the cli and --help flags, following things should be noted:

  • Glyph discoveres the git repo it should work on first by looking up the GLYPH_DIR environment variable and defaults to $HOME/.glyph

Design

Glyph functions as CLI application that manages a git repo in $GLYPH_DIR that contains metadata about your collections and also allows your scripts to share a global key-value database and cache. In the future glyph will also manage secrets and cryptographic keys here.
Collections are tracked via a git remote and linked to branch in the local glyph repo.
To check out a collection glyph creates a git worktree at the path specified in which the collection files are available.
Glyph furthermore allows collections to integrate further with glyphs processes by specifying additional optional features in a .main.info.json file. For example could a script be run after the first check out of a collection that install some dependencies.

Contact Me

If anyone relies on this tool, please inform me over any communication channel (including GitHub issues) so that I don't push a change that crashes your workflow.

License

This Code is published under the MIT license.

glyph.janet's People

Contributors

tionis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

glyph.janet's Issues

screenshots / interaction examples requested

This looks promising, but as with all knowledge bases, different ones work for different ๐Ÿง s. It's really difficult too tell what this is and what using it would be like without installing it and actually living with it for a bit.

It would be very helpful if there were some screenshots, and maybe a quickie overview video on youtube or something to give folks like me a clue if this was worth us spending our time on, or something that just wouldn't work with our ๐Ÿง s.

RFC: track modules as git submodules

This is a request for comments from all potential users regarding the following question:
Should glyph modules be tracked as submodules?


Pros

  • Allows identifying every file in your archive by a hash/path combination
  • Clarifies which version of which file was meant in links etc.
  • Git native โ†’ less vendor lock-in
  • When commits in the top repo are signed, they convey a chain of trust down to the deepest nested repo.
  • Allows seeing all changes just by using git log -p --submodule โ†’ easier to look at changes in retrospective

Cons

  • A very large count of 'updated submodule' commits that don't convey useful information
  • Higher probability of git submodule merge conflicts

Another idea would be to use the glyph config to track which glyph modules that exist in the archive and use the glyph cache to save which of these modules are initialized. This would also allow updating the modules more automatically.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.