#+Title: Meeting of the Minds #+Subtitle: A Replacement for the Slack Chat System #+AUTHOR: Samuel W. Flint #+EMAIL: swflint@flintfam.org #+DATE: \today #+INFOJS_OPT: view:info toc:nil path:http://flintfam.org/org-info.js #+OPTIONS: toc:nil H:5 ':t *:t todo:nil stat:nil d:nil #+PROPERTY: noweb no-export #+PROPERTY: comments noweb #+LATEX_HEADER: \usepackage[margins=0.75in]{geometry} #+LATEX_HEADER: \parskip=5pt #+LATEX_HEADER: \parindent=0pt #+LATEX_HEADER: \lstset{texcl=true,breaklines=true,columns=fullflexible,basicstyle=\ttfamily,frame=lines,literate={<=}{$\leq$}1 {>=}{$\geq$}1} #+LATEX_CLASS_OPTIONS: [10pt,twoside] #+LATEX_HEADER: \pagestyle{headings} * COMMENT Export #+Caption: Export Document #+Name: export-document #+BEGIN_SRC emacs-lisp :exports none :results none (save-buffer) (let ((org-confirm-babel-evaluate (lambda (lang body) (declare (ignorable lang body)) nil))) (org-latex-export-to-pdf)) #+END_SRC * COMMENT Tangle #+Caption: Tangle Document #+Name: tangle-document #+BEGIN_SRC emacs-lisp :exports none :results none (save-buffer) (let ((python-indent-offset 4)) (org-babel-tangle)) #+END_SRC * DONE Introduction :nonum: CLOSED: [2016-04-02 Sat 21:24] :PROPERTIES: :CREATED: <2016-04-02 Sat 16:26> :END: 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: :PROPERTIES: :CREATED: <2016-04-02 Sat 16:27> :END: #+TOC: headlines 3 #+TOC: listings * WORKING Packaging [0/2] :PROPERTIES: :CREATED: <2016-04-02 Sat 16:27> :END: ** TODO The ~packages~ file :PROPERTIES: :CREATED: <2016-04-02 Sat 16:32> :ID: b0c08843-2ca4-4b6d-b570-8f54d9b0104e :END: #+Caption: Packages #+Name: packages #+BEGIN_SRC lisp :tangle "package.lisp" (defpackage #:meeting-minds (:use #:cl)) #+END_SRC ** TODO The *ASDF* System Definition :PROPERTIES: :CREATED: <2016-04-02 Sat 16:45> :ID: 9d79d691-5ac0-43f9-a0ae-a4f1823cbcb6 :END: #+Caption: ASDF System #+Name: asdf-system #+BEGIN_SRC lisp :tangle "meeting-minds.asd" (asdf:defsystem #:meeting-minds :description "Describe meeting-minds here" :author "Samuel W. Flint " :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"))) #+END_SRC