Shortlisting open source projects which use Rails and VueJS to contribute to ... part 3
Zammad - No, Loomio - Yes, Chatwoot - No
In part 1 and part 2 I mentioned the 3 shortlisted open source projects, I am interested in contributing to, which use Ruby on Rails as backend and VueJS as frontend.
- [X] Zammad
- [ ] Loomio
- [X] Chatwoot
And I was dicey on which one to pick?
Background
In part 2 I clearly mentioned why I didn't select open source customer support software from Germany "Zammad". Didn't read the part 2? No worries! I will explain, "Zammad uses Coffeescript and not VueJS as its frontend tech stack BUT markets its tech stack as if using VueJS". Thus I don't want to dig deep in to contributing to a project which sorta isn't open source developer/community friendly.
In this part I am not moving forward with Chatwoot either. Though it has a slick UI with nice features; I would say better than Zammad. However, there are 2 reasons:-
- I do NOT want to be part of some VC funded open source project or rather startup
- I want to be part of a smaller non-funded open source product
Booting up Chatwoot
Once I learnt how to install older rubies using RVM on Ubuntu 22.04 I in a jiffy installed Ruby 3.0.4 version on my dev machine as I wanted to see how does Chatwoot look and feel in a local development environment. Ok, let's find out.
I followed Chatwoot's contributing guides on
- https://www.chatwoot.com/docs/contributing-guide/environment-setup/ubuntu
- https://www.chatwoot.com/docs/contributing-guide/project-setup
There were a couple of little hick ups due to redis and some email settings which were solved by
- Redis - https://www.chatwoot.com/docs/self-hosted/configuration/environment-variables - You need to change the REDIS_URL from
'redis://redis:6379'
toREDIS_URL='redis://127.0.0.1:6379'
- Some email channel setting - https://www.chatwoot.com/docs/self-hosted/configuration/features/email-channel/setup/
Running servers
# fireup the server
foreman start -f Procfile.dev
Warning: the running version of Bundler (2.2.33) is older than the version that created the lockfile (2.3.17). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.3.17`.
13:00:45 backend.1 | started with pid 28170
13:00:45 frontend.1 | started with pid 28171
13:00:45 worker.1 | started with pid 28172
13:02:14 frontend.1 | ℹ 「wds」: Project is running at http://0.0.0.0:3035/
13:02:14 frontend.1 | ℹ 「wds」: webpack output is served from /packs/
13:02:14 frontend.1 | ℹ 「wds」: Content not from webpack is served from /home/chetanmittal/workspace/chatwoot/public/packs
13:02:14 frontend.1 | ℹ 「wds」: 404s will fallback to /index.html
13:02:20 frontend.1 | Browserslist: caniuse-lite is outdated. Please run:
13:02:20 frontend.1 | npx browserslist@latest --update-db
13:02:20 frontend.1 |
13:02:20 frontend.1 | Why you should do it regularly:
13:02:20 frontend.1 | https://github.com/browserslist/browserslist#browsers-data-updating
13:03:46 backend.1 | => Booting Puma
13:03:46 backend.1 | => Rails 6.1.6.1 application starting in development
13:03:46 backend.1 | => Run `bin/rails server --help` for more startup options
13:03:53 worker.1 | 2022-10-01T07:33:53.987Z pid=28172 tid=eqk INFO: Booting Sidekiq 6.4.2 with redis options {:url=>"redis://127.0.0.1:6379", :password=>nil, :reconnect_attempts=>2, :network_timeout=>5}
13:03:54 worker.1 | 2022-10-01T07:33:54.375Z pid=28172 tid=eqk INFO: Cron Jobs - added job with name: internal_check_new_versions_job
13:03:54 worker.1 | 2022-10-01T07:33:54.406Z pid=28172 tid=eqk INFO: Cron Jobs - added job with name: trigger_scheduled_items_job
13:03:54 worker.1 | 2022-10-01T07:33:54.529Z pid=28172 tid=eqk INFO: Cron Jobs - added job with name: trigger_imap_email_inboxes_job
13:04:05 worker.1 | 2022-10-01T07:34:05.242Z pid=28172 tid=eqk WARN: DEPRECATION WARNING: Initialization autoloaded the constants Redis::Config, Internal, ApplicationJob, Internal::CheckNewVersionsJob, TriggerScheduledItemsJob, Inboxes, and Inboxes::FetchImapEmailInboxesJob.
13:04:05 worker.1 |
13:04:05 worker.1 | Being able to do this is deprecated. Autoloading during initialization is going
13:04:05 worker.1 | to be an error condition in future versions of Rails.
13:04:05 worker.1 |
13:04:05 worker.1 | Reloading does not reboot the application, and therefore code executed during
13:04:05 worker.1 | initialization does not run again. So, if you reload Redis::Config, for example,
13:04:05 worker.1 | the expected changes won't be reflected in that stale Module object.
13:04:05 worker.1 |
13:04:05 worker.1 | These autoloaded constants have been unloaded.
13:04:05 worker.1 |
13:04:05 worker.1 | In order to autoload safely at boot time, please wrap your code in a reloader
13:04:05 worker.1 | callback this way:
13:04:05 worker.1 |
13:04:05 worker.1 | Rails.application.reloader.to_prepare do
13:04:05 worker.1 | # Autoload classes and modules needed at boot time here.
13:04:05 worker.1 | end
13:04:05 worker.1 |
13:04:05 worker.1 | That block runs when the application boots, and every time there is a reload.
13:04:05 worker.1 | For historical reasons, it may run twice, so it has to be idempotent.
13:04:05 worker.1 |
13:04:05 worker.1 | Check the "Autoloading and Reloading Constants" guide to learn more about how
13:04:05 worker.1 | Rails autoloads and reloads.
13:04:05 worker.1 | (called from <top (required)> at /home/chetanmittal/workspace/chatwoot/config/environment.rb:5)
13:04:15 worker.1 | Booted Rails 6.1.6.1 application in development environment
13:04:15 worker.1 | Running in ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x86_64-linux]
13:04:15 worker.1 | See LICENSE and the LGPL-3.0 for licensing details.
13:04:15 worker.1 | Upgrade to Sidekiq Pro for more features and support: https://sidekiq.org
13:04:15 worker.1 | Cron Jobs - added job with name: internal_check_new_versions_job
13:04:15 worker.1 | Cron Jobs - added job with name: trigger_scheduled_items_job
13:04:15 worker.1 | Cron Jobs - added job with name: trigger_imap_email_inboxes_job
13:04:16 backend.1 | Puma starting in single mode...
13:04:16 backend.1 | * Puma version: 5.6.4 (ruby 3.0.4-p208) ("Birdie's Version")
13:04:16 backend.1 | * Min threads: 5
13:04:16 backend.1 | * Max threads: 5
13:04:16 backend.1 | * Environment: development
13:04:16 backend.1 | * PID: 28170
13:04:16 backend.1 | * Listening on http://127.0.0.1:3000
13:04:16 backend.1 | * Listening on http://[::1]:3000
13:04:16 backend.1 | Use Ctrl-C to stop
13:04:17 worker.1 | start
13:04:17 worker.1 | Enqueued Inboxes::FetchImapEmailInboxesJob (Job ID: 09c28c9f-6416-4f3c-bc96-2914a5937c42) to Sidekiq(scheduled_jobs)
13:04:17 worker.1 | Performing Inboxes::FetchImapEmailInboxesJob (Job ID: 09c28c9f-6416-4f3c-bc96-2914a5937c42) from Sidekiq(scheduled_jobs) enqueued at 2022-10-01T07:34:17Z
13:04:24 worker.1 | Performed Inboxes::FetchImapEmailInboxesJob (Job ID: 09c28c9f-6416-4f3c-bc96-2914a5937c42) from Sidekiq(scheduled_jobs) in 7299.68ms
13:04:24 worker.1 | done
Hitting Chatwoot Localhost URL
http://localhost:3000
Let's login with the test user created during setting up of Chatwoot on our Ubuntu 22.04 development machine (follow the Chatwoot setup guides mentioned above)
user name: john@acme.inc
password: Password1!
Closing
I would like to summarize this by saying that If you are software developer (whether fresh or experienced) and you are interested in contributing to open source software then you must first get a hold on to it by
- installing it
- understanding it
- etc
and then start contributing to it.
Example - I got to know that Zammad uses VueJS in its tech stack, however, the feature(s) it is being used for is barely functional. And, contributing to developing features functional, for a huge project, in the technology (or framework) I am still learning won't make any sense for me, right!?
I finalized Loomio to contribute to, however, I might come back to the other two open source projects - Zammad and Chatwoot - in future if I see I can provide some value to them.