node package manager

perspectiveapp

perspective

Build Status Code Climate

An open-source, context-aware, event based team communication tool designed with emphasis on software development teams.

Installation

  1. Download and install RethinkDB if you haven't already
  2. npm install -g perspectiveapp

Usage

  1. Run rethinkdb in one shell/process
  2. Run perspectiveapp in another shell/process

Configuration

See lib/server/config.js for the default configuration. You may override these settings by creating a custom configuration file with the same structure and placing it under ~/.perspective/config.json

FAQ

How is Perspective different from Slack, HipChat et. al?

Perspective is open-source and free to use, even for on-site installations behind pesky firewalls. Also, while there is a long way to go, Perspective aims to be more than chat by providing the right information at the right time to the right user. Examples:

  • Present key events on a dashboard suitable on a TV for your whole team to see
  • Switch the dashboard into a special mode during stand-ups to provide the most relevant information
  • A view of Stash/Jenkins branch and build jobs as a separate overview page (in addition to being posted in relevant chat rooms)
  • A view of the currently installed applications and versions in different server environments (in addition to deploy notifications in chat rooms)

What's the high level architectural ideas?

  • "Everything" is an event. A chat message is simply an event of a specific type. Similar a build job on Jenkins will be an event of another type. Integrations will be able to format events in a chat room, hook into "dashboards", create its own menu entries, listen for other events to produce new events and more.

Is it stable?

Not at all. Yet :)

Contribute

Contributions are most welcome! Simply open an issue or create a pull request.

Development

  1. Install RethinkDB
  2. Clone this repo
  3. npm install
  4. Run npm run watch (npm run watch:server -- -- --verbose for debug logging)
  • See npm run for a list of other options.
  • Run perspective.debugLoggingOn() to enable client-side debug logging

Todos

Will be migrated to github issues eventually

  • api
    • stable events api for creating events via REST (validation)
  • stash
    • aging of pull-requests
  • events
    • error handling LOAD_EVENTS
    • event-store: sliding window? Evict old events to keep memory from building up
  • chat
    • don't scroll to bottom automatically if user has scrolled up
    • set status (online/away)
    • set status automatically to idle
    • support @here, @channel, @everyone , @username
    • support "... is typing"
    • support drag'n'drop files
    • support copy/pasting and embedding images
    • support code snippets
    • detect and convert http links
    • append message clientside immediately, but implement "failed to deliver message" or similar if connection fails
    • security: allow plugins to format using HTML, but prevent XSS (see message.react)
  • ui
    • get a delicious design
  • create startupscripts

Licence

Perspective is released under the MIT License.