@ankur1857 wrote:
I want that my forum should not send “user_posted” email to the users of the forum. Only summary messages should be sent to the users.
Please help me to stop these emails.
Posts: 2
Participants: 2
@ankur1857 wrote:
I want that my forum should not send “user_posted” email to the users of the forum. Only summary messages should be sent to the users.
Please help me to stop these emails.
Posts: 2
Participants: 2
@net_deamon wrote:
I am working on bitbucket support for the docker_manager plugin. It does not work well with private repositories.
The plugin works by running the following commands to check the
commits behind
latest_local_commit
git rev-parse --short HEAD
(local repo latest commit)latest_origin_commit
git rev-parse --short origin/master
(server repo latest commit)commits_behind
git rev-list --count HEAD..origin/master
to fetch the difference in numberThe problem is that when I run the command of commit_behind in command line inside docker container plugin repository, I get 0.
But there are actually some commits made in the bitbucket private repository.
When I check locally in my machine, I rightly get the commits_behind number as 2.I have added the ssh keys in /root/.ssh folder for the bitbucket repo. I am not able to understand why would the git command show 0 inside docker container (incorrect) but 2 in local machine(correct)
Posts: 1
Participants: 1
@sizzlecookie wrote:
Hello!
New to Discourse, I need new users to upload a verification image before their account is created… I’ve already required new users to be approved before allowing access, but I also need:
- an upload button on the new account form, as a required field
- access to this uploaded image on the admin section (or possibly just a hyperlink to the S3 location of the image?), so we can preview this image prior to approval
Can this be built using a plugin? Can I use tie into the existing upload-selector code or should I write something new? Or please suggest a strategy/direction for accomplishing this feature… much appreciated!
Posts: 1
Participants: 1
@rehe wrote:
Hi!
I have a big problem. My big community right now does not work. After updating to the latest version. The only thing that loads is the background.
I have not done anything out of the ordinary, just updated. If I try to restart it says this:
Root @ XXXXX-app: / var / www / discourse # sv restart unicorn
Ok: run: unicorn: (pid 909) 0s
Root @ XXXXX-app: / var / www / discourse # ./launcher stop app
Bash: ./launcher: No such file or directoryAny solution?? Thanks!
Posts: 8
Participants: 3
@smota wrote:
Hi Expert, I’m facing a problem with my hostname.
from a foreign country, it apear to be offit say something about wrong time, but the time its well setup.
I will appreciate any lights on!
Posts: 4
Participants: 2
@MakaryGo wrote:
Well, actually I have some possibly good news As I’m kind of obsessed with the idea of delivering notifications to my community users via their Facebook (through Messenger and/or notifications), I’m in the middle of deconstructing those nightmarish API procedures.
Unfortunately, I’m not a Ruby developer, so I won’t be able to create any plugin myself. I can only provide ‘bare’ algorythm or pseudocode, but to reforge it into a functional Discourse plugin (or plugins perhaps?) I would need help of a qualified programmer.Why do I believe we need this as a community?
- We have use cases (I believe) of moving communities from fb groups into , and enabling a mechanism to recieve notifications on a channel that they are used to would smoothen this transitions a lot.
- Facebook is a threat to other online communities as it tends to ‘suck out’ any online activity. People are active on FB virtually 24/7 and because of that the’re not very eager to move to any external services when they feel that all their needs - in this case communication needs - are already well served there. Providing them with notifications in spaces where they are already present, could be a way to fight that tendency, since the user would receive ‘pings’ from their based community in exactly the same way as the rest of their daily communication.
Regarding issues mentioned above
It is doable. I’m positive for this very moment, after digging into Messenger API that we can move to sending notifications with little bit of algorithms and some smart code.
Well, this is actually a real problem. You could say that notifier app can be counted into any of the allowed category, and I highly doubt that it would contain
advertising, marketing, solicitations, or promotional conten
in most use cases. But we have to be realistic: ToS of this API are made exactly to stop any other social and discussion channels from using the platform. There are though some possible solutions: from hoping that they wouldn’t notice, to using third-party libraries or even providing own solution based on available MQTT gem. Other interesting solution would be displaying Discourse forum as FB Canvas app perhaps? Still, what matters is that: there are options.
Well, yeah. You know, group conversations on FB were not designed for bots, but for people But I’ve already seen services which had standalone browser version and FB Canvas embedded (and using notifications) version as well, maybe this would be some solution? But I admit, I didn’t dig into this, as group notifications are somewhat out of my scope. But there are options worth considering.
Cheers!
Posts: 5
Participants: 2
@SwisherSweet wrote:
Hi,
Our external system needs to integrate with Discourse. Discourse is currently using SSO to authenticate against our external system with no issues. However, we need to automate a few things:
- External users need to be added in advanced of logging into Discourse.
- After being added, external users need to be added to a specific Security Group.
- External users need to be subscribed to receive updates from a specific Category.
Overall, the goal is as new users join the external system (an ASP.net MVC app) they also join Discourse and receive updates from a specific category.
Can all of this be done just using the API?
It’s my understanding that one can use the API to create a user as “Staged” via the API. However, I’m not sure this can be done on SSO users of if the users can receive email updates from subscribed categories.
I’m not sure if a user can be subscribed to receive updates from a specific category using the API or not.
Thank you.
Posts: 3
Participants: 2
@LeoMcA wrote:
We’ve run into this annoying bug a number of times on Mozilla Discourse, where users will send an email to Discourse and half of the email will go missing for no apparent reason.
The reason is, as it turns out, because whatever email client they’re using has generated html along the lines of this:
<b>Some bold text<br></b>
.In
lib/email/reciever.rb
this html is then turned into this markdown byHtmlToMarkdown
:**Some bold text **
Then
EmailReplyTrimmer
comes along, sees**
as a delimiter between body and footer of email, and removes it and everything below it.
I would say the bug here exists in
HtmlToMarkdown
since the markdown it’s generating isn’t valid:**Oops
**So I’ve had a crack at fixing that here:
@zogstrip this is your area of expertise, right?
Posts: 2
Participants: 1
@Slowhand wrote:
I have searched for this, but I’m not finding exactly what I want.
In the posting box there is an “H” at the top for “Heading”, clicking on it gives you this:
.## Heading
Is there any way to change it to put in three hashtags instead of two?
One of our forums rules is not to use anything larger than the three hashtags and it’s been that way since we changed to Discourse, however, some folks are using it to post instead of manually typing the hashtags.
I’m spending way too much time schooling users and getting feedback that they’re using this ‘pre-heading’ in the box.
I hope I’ve explained this in a coherent matter and appreciate any help you can give me.
Thank you.
Posts: 1
Participants: 1
@wdmarine wrote:
I have had SSO against an ASP.NET website working perfectly for years. Now, after only doing the routine upgrade (docker and Discourse) through the admin UI, trying to signing in with SSO yields the following error:
Login Error
There is a problem with your account. Please contact the site’s administrator.
When I click the “Log In” button in Discourse, I am correctly taken to my ASP.NET app’s sign in page. When I correctly sign in there, I am briefly returned to the /latest page in Discourse, but then quickly redirected to the error page. At that point, the URL in the browser address field changes to the following:
http://[my discourse domain]/session/sso_login?sso=[yadayada]&sig=[yadayada]
I have no idea where to even begin figuring this out as I have no idea what changed to make it happen.
In which logs (and where) should I look?
I appreciate any help!
Thanks,
- David
Posts: 17
Participants: 3
@tophee wrote:
Something seems to have been broken in a recent upgrade of the oneboxing engine. For example, this URL
https://meta.discourse.org/t/new-users-arent-starting-the-discobot-tutorial/62995/9?u=tophee
used to be rendered like this on a discourse instance that is not meta:
Now it is rendered like this:
Never mind the different colour scheme. It’s the text that is different. In the older version, the text of the post being referred to is shown, now it’s the text of the OP (although I also wonder why the user avatar is missing in both cases, but that would be an older bug).
To be more precise: the old image is from my forum which is currently still on v1.9.0.beta4 +61, the new one is from feverbee (as of today) but I have also tried it on another freshly installed instance.
Next one is
https://meta.discourse.org/t/change-to-dd-mmm-mmm-yy-for-post-dates/13625/35?u=tophee
which used to render like this:but now comes out like this
Like in the first example, the text is now the OP’s text but - strangely, now also the image is a different one (first image in post instead of user avatar).
Finally, this URL
https://meta.discourse.org/t/discourse-narrative-bot-beta-feedback/58621/254?u=tophee
used to render like this:but now it fails entirely to be oneboxed:
Posts: 14
Participants: 5
@mtwomey wrote:
I’d like to be able to add users to “allowed_users” of a topic. When I retrieve a topic, one section is details.allowed_users. Is there a way to add additional users here with a PUT?
Posts: 3
Participants: 2
@nixie wrote:
Hi,
I do understand that there is a setting for this in admin panel.
Admin - > Email - > “private email time window seconds”As per this setting, there should be a delay of at least 300 seconds between 2 email-notifications (that a user receives when pm’s are sent between users). But this isn’t the case. I’ve been monitoring the transactional email logs (using mandrilla) and I can see that - for each pm - users receive a email-notification.
Posts: 4
Participants: 2
@Alavi1412 wrote:
I have updated discourse recently(15min ago).
I have used these in~/discourse
:
git pull
bundle install
but when I use
bundle exec rake db:migrate db:test:prepare
the terminal said:rake aborted! NoMethodError: undefined method `[]' for nil:NilClass /home/alavi/discourse/plugins/widget-topAsked-master/plugin.rb:9:in `block (2 levels) in activate!' /home/alavi/discourse/plugins/widget-topAsked-master/plugin.rb:8:in `class_eval' /home/alavi/discourse/plugins/widget-topAsked-master/plugin.rb:8:in `block in activate!' /home/alavi/discourse/lib/plugin/instance.rb:208:in `block in notify_after_initialize' /home/alavi/discourse/lib/plugin/instance.rb:206:in `each' /home/alavi/discourse/lib/plugin/instance.rb:206:in `notify_after_initialize' /home/alavi/discourse/config/application.rb:209:in `block (2 levels) in <class:Application>' /home/alavi/discourse/config/application.rb:209:in `each' /home/alavi/discourse/config/application.rb:209:in `block in <class:Application>' /home/alavi/discourse/config/environment.rb:5:in `<main>' /home/alavi/.rbenv/versions/2.3.4/bin/bundle:23:in `load' /home/alavi/.rbenv/versions/2.3.4/bin/bundle:23:in `<main>' Tasks: TOP => db:migrate => environment (See full trace by running task with --trace)
When I remove the
widget-topAsked-master
plugin from plugin folder, the error changes to another plugin:rake aborted! NoMethodError: undefined method `[]' for nil:NilClass /home/alavi/discourse/plugins/discourse-profile-widget-master/plugin.rb:20:in `block (2 levels) in activate!' /home/alavi/discourse/plugins/discourse-profile-widget-master/plugin.rb:19:in `class_eval' /home/alavi/discourse/plugins/discourse-profile-widget-master/plugin.rb:19:in `block in activate!' /home/alavi/discourse/lib/plugin/instance.rb:208:in `block in notify_after_initialize' /home/alavi/discourse/lib/plugin/instance.rb:206:in `each' /home/alavi/discourse/lib/plugin/instance.rb:206:in `notify_after_initialize' /home/alavi/discourse/config/application.rb:209:in `block (2 levels) in <class:Application>' /home/alavi/discourse/config/application.rb:209:in `each' /home/alavi/discourse/config/application.rb:209:in `block in <class:Application>' /home/alavi/discourse/config/environment.rb:5:in `<main>' Tasks: TOP => db:rollback => environment (See full trace by running task with --trace)
So I removed all of my plugins and rake works.
I didn’t have this problem before but today I started my work with discourse with this error after updateUPDATE: when I finished the rake, I moved back the plugins to plugins folder but now when I use:
bundle exec rails server
the terminal says:=> Booting Puma => Rails 4.2.9 application starting in development on http://localhost:3000 => Run `rails server -h` for more startup options => Ctrl-C to shutdown server Starting CSS change watcher Exiting /home/alavi/discourse/plugins/discourse-profile-widget-master/plugin.rb:20:in `block (2 levels) in activate!': undefined method `[]' for nil:NilClass (NoMethodError) from /home/alavi/discourse/plugins/discourse-profile-widget-master/plugin.rb:19:in `class_eval' from /home/alavi/discourse/plugins/discourse-profile-widget-master/plugin.rb:19:in `block in activate!' from /home/alavi/discourse/lib/plugin/instance.rb:208:in `block in notify_after_initialize' from /home/alavi/discourse/lib/plugin/instance.rb:206:in `each' from /home/alavi/discourse/lib/plugin/instance.rb:206:in `notify_after_initialize' from /home/alavi/discourse/config/application.rb:209:in `block (2 levels) in <class:Application>' from /home/alavi/discourse/config/application.rb:209:in `each' from /home/alavi/discourse/config/application.rb:209:in `block in <class:Application>' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/lazy_load_hooks.rb:45:in `block in run_load_hooks' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/lazy_load_hooks.rb:44:in `each' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/lazy_load_hooks.rb:44:in `run_load_hooks' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/application/finisher.rb:62:in `block in <module:Finisher>' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/initializable.rb:30:in `instance_exec' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/initializable.rb:30:in `run' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/initializable.rb:55:in `block in run_initializers' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/2.3.0/tsort.rb:347:in `each' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/2.3.0/tsort.rb:347:in `call' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/initializable.rb:54:in `run_initializers' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/application.rb:352:in `initialize!' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/railtie.rb:194:in `public_send' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/railtie.rb:194:in `method_missing' from /home/alavi/discourse/config/environment.rb:5:in `<main>' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/bootsnap-1.0.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/bootsnap-1.0.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/dependencies.rb:274:in `block in require' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/dependencies.rb:240:in `load_dependency' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/dependencies.rb:274:in `require' from /home/alavi/discourse/config.ru:2:in `block in <main>' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/rack-1.6.8/lib/rack/builder.rb:55:in `instance_eval' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/rack-1.6.8/lib/rack/builder.rb:55:in `initialize' from /home/alavi/discourse/config.ru:in `new' from /home/alavi/discourse/config.ru:in `<main>' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/rack-1.6.8/lib/rack/builder.rb:49:in `eval' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/rack-1.6.8/lib/rack/builder.rb:49:in `new_from_string' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/rack-1.6.8/lib/rack/builder.rb:40:in `parse_file' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/rack-1.6.8/lib/rack/server.rb:300:in `build_app_and_options_from_config' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/rack-1.6.8/lib/rack/server.rb:209:in `app' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/commands/server.rb:61:in `app' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/rack-1.6.8/lib/rack/server.rb:337:in `wrapped_app' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/commands/server.rb:139:in `log_to_stdout' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/commands/server.rb:78:in `start' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/commands/commands_tasks.rb:80:in `block in server' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/commands/commands_tasks.rb:75:in `tap' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/commands/commands_tasks.rb:75:in `server' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/commands/commands_tasks.rb:39:in `run_command!' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/railties-4.2.9/lib/rails/commands.rb:17:in `<main>' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/bootsnap-1.0.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/bootsnap-1.0.0/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:17:in `require' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/dependencies.rb:274:in `block in require' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/dependencies.rb:240:in `load_dependency' from /home/alavi/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.9/lib/active_support/dependencies.rb:274:in `require' from bin/rails:4:in `<main>'
and I know I should delete all my plugins to work but I need my plugin and my plugins were working correctly yesterday
THIS is my plugin
UPDATE2: I figured it out that the problem is from
@choices[:layouts_sidebar_right_widgets].push('profile')
so how should I add options tolayouts_sidebar_right_widgets
in site settings?
Posts: 1
Participants: 1
@tgxworld wrote:
As part of our efforts to upgrade to Rails 5, we’ll need to deprecate spork-rails which currently locks Rails to
< 5
. However, Rails 5 support for the gem is probably never going to land as the last commit made to the gem is way back in 2013. The main thing using spork in our code base is autospec so we’ll need to figure out an alternative for it.Going to tag this #pr-welcome in the meantime.
Posts: 4
Participants: 3
@kiki wrote:
discourse/lib/final_destination.rb
def initialize(url, opts = nil) @url = url Rails.logger.info("=============================1 #{@url}") @uri = begin URI(escape_url) if @url rescue URI::InvalidURIError end Rails.logger.info("=============================2 #{@uri.to_s}")
Output logs:
I, [2017-08-03T15:45:31.697669 #112637] INFO -- : =============================1 https://domain/%E6%B5%8B%E8%AF%95 I, [2017-08-03T15:45:31.757180 #112637] INFO -- : =============================2 https://domain/%25E6%25B5%258B%25E8%25AF%2595
Posts: 8
Participants: 3
@deviant wrote:
Hi everyone,
The last 3 times that I have had to use:
git pull ./launcher rebuild app
It has resulted in:
+ /usr/bin/docker rm app Error response from daemon: driver "aufs" failed to remove root filesystem for [redacted] : rename /var/lib/docker/aufs/mnt/[redacted] /var/lib/docker/aufs/mnt/[redacted]-removing: device or resource busy Error response from daemon: Container is marked for removal and cannot be started. Error: failed to start containers: app
Is this an issue with Docker, Discourse, or my server?
Every time that this has happened, the only way to get things working again has been to purge docker and remove all mounted file systems and containers then reinstall (at least the discourse data seems to remain intact).
Problem is, I have other software running in Docker as well now. Going through that whole process seems a bit much.Any ideas?
Appreciate the feedback. Not sure what other info I could give that would be helpful …
Posts: 7
Participants: 4
@tophee wrote:
In order to change the date format to a day-month format (instead of the default month-day format), I believe I have edited all relevant text content elements:
But (apart from the dates in the summary emails, I have one spot where the month-day format is nevertheless used:
I’m not sure but I believe that is the date on which the bounce score will be reset? In any case: how do I get that format fixed as well?
Posts: 1
Participants: 1
@David_Taylor wrote:
Ran into a disk space issue on one of my droplets this morning. Discourse has almost filled the 30GB
Using
ncdu
, I’m getting/discourse 6.4GB /lib/docker 18.2GB
There are a fair number of posts & uploads, so I think the
/discourse
number is as expected. Drilling down into/lib/docker
:/lib/docker/overlay 9.7GB /lib/docker/devicemapper 8.1GB
So, two questions:
- Is
9.7GB
an “normal” level of usage for the overlay folder?- Now that I moved from devicemapper to overlay, does anyone know if it’s safe to delete the devicemapper folder? Or do I need to run a docker command to clean it up somehow?
Posts: 4
Participants: 2
@Chopper wrote:
Hello,
I just create a new forum but all user have the same IP : 127.0.0.1 at registration and last visit IP.
There is no proxy, all user are on the same network (192.168.200.0/24) and the machine with the docker is also on the same network.Any idea to fix this problem ?
Posts: 8
Participants: 3