meeting-minds.org 5.1 KB

Meeting of the Minds

COMMENT Export

  (save-buffer)
  (let ((org-confirm-babel-evaluate
         (lambda (lang body)
           (declare (ignorable lang body))
           nil)))
    (org-latex-export-to-pdf))

COMMENT Tangle

  (save-buffer)
  (let ((python-indent-offset 4))
    (org-babel-tangle))

Introduction   nonum

CLOSED: [2016-04-02 Sat 21:24]

As time has gone on, I've started seeing the "Slack" chat platform become more and more popular. I see this as both a good thing, in that it promotes communication within teams, and a bad thing, in that it's not controlled by the company that actually subscribes to it, and it isn't free software. Because of the benefit, and as a response to the issues, I've decided to build this application, "Meeting of the Minds", built on standards and free software so it's likely to stay around for a long time. Thus, the goal is to produce an application that gives the following features:

  • Archival

  • Group Messaging

  • Easily Defined Groups

  • User-to-user Messaging

  • Simple Management

  • Freedom

To accomplish this task, I've decided to build using the following tools and suites:

IRC

The Internet Relay Chat protocol. I've chosen this as the transport protocol as it's been around for quite some time, and is well supported.

PostgreSQL

An SQL storage backend. This will be a way to store metadata about conversations, topics, users and projects, allowing for data archival. I've chosen PostgreSQL as it has many advanced features and is very space efficient.

Common Lisp

The server implementation language. I've chosen to use Common Lisp to implement Meeting of the Minds for the following reasons:

  • Familiarity

  • Flexibility

  • Library availability

TOC   ignore

WORKING Architecture [0/3]

Protocol Design

Data Storage Requirements

Interaction Design

WORKING Database Design [0/5]

Users Table

Conversations Table

Topics Table

Archives Table

Decisions Table

Management Interface

Protocol Implementation

WORKING Packaging [0/2]

WORKING The packages file

This file describes and defines that packages, or namespaces used in the application. These include the following:

meeting-minds

The main package, this is used to tie all of the other packages together, and can be used to produce a callable daemon.

  (defpackage #:meeting-minds
    (:use #:cl))

The ASDF System Definition

  (asdf:defsystem #:meeting-minds
      :description "Describe meeting-minds here"
      :author "Samuel W. Flint <swflint@flintfam.org>"
      :license "GNU GPLv3 or Later"
      :depends-on (#:ningle
                   #:clack-errors
                   #:clsql
                   #:stefil
                   #:ironclad
                   #:babel
                   #:uiop
                   #:cl-mustache
                   #:birch
                   #:irc-logger)
      :serial t
      :components ((:file "package")
                   (:file "meeting-minds")))