BUILDING ROCKET.CHAT

Meteor Devshop

WHY?

Why not?

BOOM!

We've got noticed

Text

Our first week

And people liked it

REACTIVITY

IS

POWERFUL

LEARNED

THE HARD
WAY

keep records in memory to track what data each client have

More clients = More memory + More CPU

THE mergebox

NOt EVERYTHING needs mergebox

Prevent Merge Box
Starting an observer on server startup and send

messages to clients via stream instead use subscribe

and create one observe per client 

BLAZE GOT SLOW

WHY?

rendering

Can be expensive

Re-rendering TOO MANY TIMES

>1sec

HIDDEN = armage-DOM

+1000

OFF-DOM = speed

50ms

GRANULARITY

Not always needed

Computations, COMPUTATIONS, COMPUTATIONS

<template name="message">
  <li id="{{_id}}" class=" {{system}} {{t}} {{own}} {{isTemp}}"
    data-username="{{u.username}}" data-date="{{date}}">
    <span class="info">
      <span class="time">{{time}}</span>
    {{#if edited}}
      <span class="edited">({{_ "edited"}})</span>
    {{/if}}
    {{#if private}}
      <span class="private">{{_ "Only_you_can_see_this"}}</span>
    {{/if}}

    {{#if canEdit}}
      <i class="icon-pencil edit-message"></i>
    {{/if}}
    {{#if canDelete}}
      <i class="icon-trash-1 delete-message"></i>
    {{/if}}
    </span>
    <div class="body" dir="auto">
      {{{body}}}
    </div>
  </li>
</template>
{{#each message}}
    {{> message}}
{{/each}}

7803

Less granularity, but that's ok!

<!-- With NRR -->
{{#each message}}
    {{#nrr nrrargs 'message' .}}{{/nrr}}
{{/each}}
html = ''

Tracker.nonreactive ->
    html = Blaze.toHTMLWithData content, data
    return html

1581

So why Blaze?

Clear separation of template and logic

  1. Easy to understand
  2. Easy to maintain
  3. Easy to contribute

THE Community

is Awesome

Official Docker Repo

100% done by contributors

electron APP

Massive help from

community

Unread counter

Easy way to know how much of the conversation you have missed.

Mentions Marker

Easy way to find messages that you have been mentioned

Mobile apps

Hybrid available now! Community building Native.

AUDIO & VIDEO CALLS

Thanks WebRTC!

Hubot Integration

=

Also known as Rocket.Bot

Should we call it Rocket.Cat ?

DevOps

Extending Rocket.Chat into the world of automated DevOps: 

  • Issues
  • Comments
  • PRs
  • Releases
  • Deployments

Not only via messages, but with deep integrations and customized UI plugins

TRANSLATED into over 20 langugages

and counting...

Thanks https://lingohub.com/

community KEEPS GROWING

Out in the wild

WE ARE

ONTO
something

OF CHATS!

WordPress

  1. Open source - GPLv2
  2. You can host yourself
  3. PHP's popularity
  4. Easy to deploy (FTP)
  5. Easy to extend plugins
  6. Themes and whitelabel
  7. Hosting for everyone

ROCKET.CHAT

  1. Also Open source - MIT !
  2. Yes! Own you data!
  3. JavaScript massive popularity
  4. Docker Container (Official)
  5. Packages System
  6. Also themed and whitelabel!
  7. In the making

WE
WANT
YOU

MASSIVE THANKS TO

Aaron Ogle


Diego Sampaio


George Secrieru


Lee Faus


Marcelo Schmidt

Rafael Caferati


Raphael Guarilha


Reid Wakida


Rodrigo Nascimento


Sing Li

And many, many, many more.....

Welcome SPACETALK devs that are joining us today!

Good luck to Tim Brandin with http://SpaceDropCMS.org

AND THANK YOU

https://rocket.chat

more details at