Ways to spread the word and keep the community engaged?

I was thinking of some ideas that could help spread the word about crystal:

  • More video tutorials! Right now, when you search YouTube for “crystal programming tutorials”, and select past month or year, the results are tangible crystals that heal your mind and soul, not the actual language itself. Example: How to Program Crystals.
    Also, @scott and @Blacksmoke16 are some of the wizards in the macro world. If they did video tutorials about macros, that information would be invaluable.

  • More blog posts (https://crystal-lang.org/blog/)
    – It’s been almost 200 days since the last blog post. Now, I don’t necessarily think more blog posts equate to more people finding out about crystal, but I do believe if an article was written that went all nitty gritty into the inner workings of the compiler/crystal, it could get linked on a big site and drive a ton of traffic. Not only that, but it would be beneficial towards the contributors as well.
    – I just said “inner workings of the compiler” to sound smart, it could be anything that is very well-written and interesting :stuck_out_tongue:

And some ways to keep the community engaged:

  • Events / Code Golfing / Puzzles / “Code Jams”
    – Instead of “Game Jams”, there could be Code Jams. A developer must create something very cool within xxx time (24, 48 hours, etc). Then the code is voted on, that person wins and their points get updated on a leaderboard.

  • A code golf where a developer must do xx and xx. Then they post their code in a thread. Similar to code golfing on stack overflow, but specific for crystal?

I’m just thinking out loud…If anyone has any other ideas, feel free to post them!


One of the benefits of code golf is that you can try to minimize the size of the program in whatever language you want to use, so I’m not sure that fits as well. However, a Code Jam (with an organizer/community chosen theme, a la Ludum Dare) would be pretty cool.

I also agree about articles. I’ve seen people link to lots of articles for other languages (even smaller languages like Pony) when discussing language features or arguing for a particular position in a GitHub issue. If people find Crystal’s approach to certain problems interesting (based on articles written by language developers) then they’ll do something similar on other open-source projects and give Crystal exposure simply by arguing (which people do seem to enjoy).

1 Like

Maybe we could collect ideas for interesting topics to write about. I guess from the perspective of someone with deep knowledge of the language, it’s not always clear what users might be especially interested in. And if you have a topic you’d like to know more about but are not familiar enough to write about it, maybe someone else will jump on the idea.


I agree with @straight-shoota. And just yesterday we were talking about how to generate a bit more content.

So if there are specific things someone would enjoy reading we can see if that triggers ideas and motivation for writing.

I would personally like to write more, and not only changelogs.

When writing posts I usually want something awesome but short and specific content should help.

I usually try to use crystal’s blog for things about the development of the language and manas’ blog for how to build things with crystal (yet, there are not many articles either). But is not a fixed criteria.

Regarding how to spread the word and keep the community engaged I things the main two aspect I would enjoy reading are:

  1. Things you are passionate about and your usage of Crystal for it as in just use it. I don’t want articles to convince me to use it.
  2. Production stories.

Yes! That would be amazing

1 Like

I wouldn’t be opposed to writing some articles on some of the macro/annotation magic i used for Athena if that would interest anyone?

Maybe like intro of what macros are, what annotations are, the current limitations, then some examples of how i used them for an annotation based framework. Was thinking that this way it would be helpful to explain a problem that I wanted to solve and how I applied macros/annotations to solve it.

Or possibly something else if anyone had something specific in mind.


Sounds great, I’d be happy as long as it it about programming Crystal, but macros and annotations are some of the less documented areas of Crystal, so anything on them would be even better.

I am sure there are many interested in such a post.


@Jenz If there is anything you’d like to see in addition to what is there just let me know. I kept a section at the bottom for additions.

1 Like

Holy mackerel! @Blacksmoke16

This article wildly exceeds my expectations. Reading it, I realized what a great way such articles was to spread and share Crystal. And personally ─ until now ─ I hadn’t the faintest idea how to declare an annotation, even though I’m somewhat a Crystal maniac; seriously, I’ve barely been able to touch other languages since learning Crystal…

Now, I’m not really in a position to speak on the behalf of others, but I believe there are many among us here (possibly yet to be) loving Crystal, that will find great help in this article and hopefully more like them to come :blush:. But on behalf of those who can agree (which I hope and believe is all): thank you very much for this contribution to the Crystal community.

And who knows… a contribution to the world? (I’m being somewhat overly dramatic here.) Anyways, I’m off to play with some Crystal annotations!


I’d like to see a blog series with best practices covering the following scenario (which I think it’s pretty standard nowdays):

  • crystal installation and development environment setup
  • rest web service spitting json
  • relational db with a couple non trivial relations (migrations would be a big plus)
  • jwt authentication and some basic authorization system
  • unit, integration and e2e test along the way
  • everything dockerized
  • a ci/cd pipeline
  • a simple ui frontend

I think this is a pretty common use case for many developers out there, a great opportunity to show how productive you can become using crystal, and an excellent occasion to show and explain best practices and tips.

Perhaps the realworld project could be used for such a purpose, it has the advange of providing several front-end already developed using different frameworks.

You’re kidding, right? There is literally https://github.com/vladfaust/crystalworld


Yeah, I saw it right after posting, and thanks to it I’m getting to know onyx framework, it looks nice…

I can see just from the readme that many of the points I listed seems to be covered, I’ll have a look at it. I do think that a blog series explaining how to achieve it would be awesome. Thanks for your work.

1 Like

Yes, blog series would be cool indeed. Looking forward to write it. One day :slight_smile:

1 Like

Is also https://dev.to/blacksmoke16/creating-a-json-api-with-athena--granite-510i if you wanted to take a more annotation based approach ;)

Doesn’t cover everything there, but am hoping to add a followup article on how to test it all once next version is released. The github repo is up to date based on Athena master, but the article is based on latest release, main difference is you dont need the CorsController anymore on master.

Ultimately, an ecosystem of libraries and software written in the language will be what attracts other people to it. Relying on the main website won’t cut it because it is a single point of entry.

We need more stuff written in crystal so people understand the advantages of the language and feel tempted to use it. Kemal is IMHO a killer project and I believe it contributed most with attracting new users. We need more such things. Like rails was to ruby, we need a killer app, or a few of them.

1 Like

A killer app sure helps, but I don’t think it neccessarily needs to be a killer app.
Just a broad variety of libraries and supported technologies helps a lot.