DSL Overview
This section outlines our custom domain specific language for the application.
Motivation
We started developing these features in a much more conventional way, as a web application connected to a SQL database. As we used the app, we felt something was missing:
- Ownership - For true growth to happen, we know that honesty and vulnerability are key, two things that we feel strongly about enabling in our app. We wanted our users to feel safe to share about their private goals and sensitive work relationships in our app, and in order to better facilitate that, we wanted to let our users own their own data, not for it to be in the cloud where someone else had control over it.
- Visibility - We wanted the user to know exactly what the app was storing, no hidden data that they couldn't control.
- Insights - We want AI to be able to easily read and comment on the data but in a way that the user can control.
This DSL is our answer to those problems. It enables a private, locally stored database that is human readable and, with a bit of training, human writable.
Once onboarded, a user can choose to only interact with their workspace through the desktop application, however, the DSL will remain at the core.
Workspaces
At the core of our DSL is a workspace, which is a logical group of people that the user can relate to. Most people will have a workspace for their place of employment. But other people may choose to track their professional relationships outside of work and in other areas as well.
Workspace Structure
Workspaces are structured by convention:
- ./core.ppl contains the
core
, shareable concepts that make up the workspace, like members, jobs, and matrices. This is meant to be shareable with others in that same organization, to help them get started faster. - ./people.ppl contains the user-specific connection to
the
core
. Here declares themselves as theuser
and determines who their contacts are.They also set anintention
for how to connect with each. - ./work this is where the user tracks their work for themselves and each of their contacts. This is in the form of journaling connections
- ./assets this is where files are stored that the workspace relates to.
Console App
We provide the people
command line application in order to help you work with a workspace
without having to open the full app. There are two commands to use:
people init
Will set up a new workspace.
people check
Will ensure that a workspace is valid.
This tool is self documenting so run:
people
To learn about all the options.
Visual Studio Code Extension
We also provide a Visual Studio Code Extension for this DSL, which provides syntax highlighting.