Learn how to build Discourse plugins by helping me


(Angus McLeod) #1

If anyone wants to learn more about building Discourse plugins or just about Ruby on Rails and Ember.js, here’s a standing offer.

I can train you, providing detailed personal direction on

  • how to code;
  • how Discourse works;
  • how to think about your users; and
  • how to think about product design

in exchange for you working on tasks on the current task list for any of my plugins.

Why pay $5k for a General Assembly course when you can get personal coaching for free, and get the chance to work on code actually being used in real-life production environments? :slight_smile:

For example you could tackle any of the items on the continually growing list for the Events Plugin. If you want to tackle one of my plugins that I haven’t defined a tasklist for yet, just tell me (I will be going through each plugin and defining a list of to dos soon).

To qualify for this offer, there are two simple requirements:

  • You need a minimum level of proficiency with Rails and Javascript. Specifically you need to have read and (mostly) understood “the basics” I laid out here. I will give you a little test when we start to check this threshold is met.

  • You need to commit to it for at least a few hours per week, for at least 4 months.

I’m offering 2 ‘places’ in this ‘mentoring’ program to start. If I receive more than 2 expressions of interest (assuming I receive any :slight_smile: ), I’ll select the 2 I think best fulfil the above two requirements and are the keenest.

This offer would work well for anyone relatively new to web development, or if you want to learn more about Discourse itself, with a view to building plugins of your own. A big benefit of learning how to code, or about Discourse, in this way is that you’ll be contributing to open source projects used by a wide variety of users.

I been working with @Sudaraka in this fashion for the past few months on a new User Map feature for the Locations Plugin, and it’s gone well (@Sudaraka if you have anything you want to add about the experience please feel free). Version 1 of the feature is complete and merged into master and we’re currently testing it with @yanokwa, @lognaturel and @erlend_sh. This experience has shown that ‘remote mentoring’ of this sort can work well.

The reason I’m offering this is simple. I have a number of plugins I want to keep improving and strengthening (really need to write some more tests!). Keeping this up over the long term is not realistic. I can do it for some time to come, but not forever. Teaching takes time as well, but it is more sustainable over the longer term.

Just to be super clear, there is no money involved in this in any way. It’s a simple exchange of my time for your learning. There is also no expectation that you will continue to work on any of my plugins once you feel you’ve learn’t enough.

If you’re interested you can respond here or pm me.


Learn how to work with Discourse by helping me
Quick Messages Plugin
(Jeff Atwood) #2

This is very cool, should it be in marketplace as well? OK to cross-post a bit and link back.


(Erlend Sogge Heggen) #3

(Ryan Erwin) #4

I’m interested. I started doing web development with Perl back in '98 and developed quite activity until about 2003… in the mean time I moved into management and later sales and distribution management. I managed a decent sized rails project from 2006 - 2008 and got my hands into some of it. Then I moved into sales management. Also learned Chinese (written and spoken) during that time.

I’ve always enjoyed tech stuff so in the last two years I’ve been writing more code again. I’m sadly still faster in Perl than anything else, but that whole ecosystem is dead, lots of broken modules, few updates, so getting to be impractical for even the simplest of tasks…

I’ve been working through the exercises in Elegant JavaScript. Rails has gotten a lot more complicated compared to where it was, but it’s interesting to catch up on all that’s changed.


(Sudaraka Jayathilaka) #5

For several months I have been working with @Angus in the project he mentioned above. But Angus was not just mentoring. Every time he tried to make me understand the concepts involved without just answering my questions. He ensured I was following all the best practices in coding rather than just writing some piece of code which works. I learned how should I think when I am solving a issue in my code. I think this is a great opportunity for anyone who loves Discourse development like myself. :blush:


#6

That’s an awesome offer and I’d love to join but I’m far from the most qualified, I’ve mostly focused on how to glue existing software together with tiny bits of custom code and dabbled a little in a few other programming languages like C++, perl and Python. Pretty much zero Ruby and JS experience.

But I’m very interested in learning more, I’ll start reading the guides and maybe I can join at a later stage!


(Angus McLeod) #7

Thanks to everyone who has expressed interest so far!

I’ve decided I’ll take expressions of interest until the end of the work week, i.e. end of Friday wherever you live.

For those who have expressed interest, I have given them a small problem and given till the end of the week (i.e. the end of Sunday wherever you live) to work on it.

For those who, like @ssvenn, are wondering whether they’re ready, the problem I’ve set is set out below. If you think you could tackle this, PM me to let me know you’re interested in the offer.


The test is to work on this request for the Locations Plugin.

There’s a big hint about where to look for the ‘answer’ in the request itself.

You can make a PR to the Locations Plugin, or just link me to a Github repo where you’ve worked on a solution.

I’m not expecting you to complete the task perfectly. I’m more looking at how you approach it.


(Brendan Schlagel) #8

Hey Angus, this is awesome, thanks for posting! Both a generous offer, and a creative way to sustain development efforts on a whole slate of great plugins…seems like a total win win.

I’m tentatively interested, need to take some time tonight to go through your post on Discourse development basics, and figure out if I’d have the time for this. Will send you a PM by tomorrow if I think I’m up for it :slight_smile:


(Nichalas Petranek) #9

Angus, I’m in the same boat as @bts.

I really don’t have any development experience but would absolutely love learning and im definitely interested in the opportunity. I’ll send you a pm tomorrow evening once ive read your basics. Although without having done any reading, i already have an idea of where i would start tackling the problem youve outlined here:

I’ll pm you my thoughts on this shortly


(Angus McLeod) #10

Thanks to everyone who has expressed interest, the response has been great and I appreciate it.

I’m not taking any further expressions of interest.

For those who have expressed interest, you have until the end of Sunday to complete the exercise (as some have already).


(Angus McLeod) #11

Thanks again to everyone who expressed interest and turned in solutions to the problem.

I’ve chosen the first two participants in my ‘program’, @ryanerwin and @Ellibereth.

We’ll be learning about Rails, Ember and Discourse while working away on various items on my plugin to do lists for the next 4 months.

I’ll be putting out another call in around 4 months time, i.e. the middle of August, so if you’re interested in the next round, study up on the basics till then.


Locations Plugin
(Eingang) #12

I just wanted to say that this is an awesome offer and a great example of thinking outside of the box. It has a lot of potential, I think, to snowball, like the old 80s Faberge Organics commercial: you train two people, they train two people, and they train two people, and so on, and so on.

You missed a benefit. As an experienced higher education teacher, I can tell you that teaching and mentoring others is an excellent way to improve your own understanding and practices. From someone else’s questions, you’re often forced to think about things, especially why you do things the way you do, in ways you wouldn’t normally. The act of explaining something helps clarify your own understanding of topics. Finally, looking at how someone else tackles a problem can provide you with new techniques or better understand the pitfalls and benefits of particular approaches.

Lots of win here! If I commit to transitioning my existing community to Discourse, I’ll definitely be watching this thread for future opportunities. Even if I don’t, I appreciate your efforts to be a positive, constructive force in the community, helping to build community knowledge, resources, and tools.


(Ryan Erwin) #13

For anyone on this topic that was interested in improving their plugin developing ability, I thought that a “newby discourse dev” category might be a useful tool. If you think so too, chime in:


(Saumia Singhal) #14

Hie @angus. I am a Junior Undergraduate student at IIT Roorkee, India. I was directed by @lognaturel here. I personally feel, this is a great and very kind offer. I would like to work with you from December to January (I’ll be free from my classes then), in case you are looking for more interns. I have prior experience in a few programming languages like Python, Java, JS, as a part of campus society. It would be a great opportunity for me. I look forward to hear from you.


(Angus McLeod) #15

Hey @SaumiaSinghal :slight_smile:

@lognaturel told me about you. I’d be happy to mentor you! I’ll send you a private message here on meta and we’ll take it from there.


(Angus McLeod) #16

Round 2

Hey everyone, I’m happy to announce round 2 of this initiative!

I’m looking for up to two more people who’d like to work on an open source Discourse plugin, in exchange for specific instruction in how to code and think about building software. It’s a self-driven education in software development through open source contributions and detailed guidance.

I’ve learned a few things from round 1, and have made a few updates to the mentoring model. This is how it’s going to work.

Two mentors!

@gdpelican (James), the author of Babble, Retort, Mingle and a number of other popular Discourse plugins, has kindly agreed to lend some of his time to mentoring aspiring Discourse developers. He and I will be available to all mentees, and particularly for those working on our individual plugins.

The reasons both of us are doing this is the same and have been mentioned in previous posts. In short, we both love Discourse and open source software, and the more contributors we have to our plugins, the better for us in the long run.

You’ll focus on a specific plugin

One of the biggest lessons I got from the first round is that it’s best to focus on an individual plugin when learning. The best way to learn is to incrementally progress in your understanding the fundamentals, while focusing on individual tasks one at a time within a contained context.

You can choose any of my or @gdpelican’s plugins’ to focus on.

Collaborative environments

The first round was largely conducted via PM here on meta. For this second round you’ll be learning and building in a few different environments:

  • A private “Learn and Build” category on my sandbox. This is a private space to ask, talk and share anything you’re working on or are struggling with with your mentor and other mentees. You get your own topic to chat with your mentor in, but can also chat with the other mentees. This category is not meant to replace the great knowledge sharing that goes on here on Meta, but rather to provide a dedicated, private space for learning.

  • Github issues and projects. Individual tasks you’re working on will be handled via the in-built project management tools on GitHub. This is to provide structure to your work, to make it easier to keep track, and also to let folks using the plugin know what we’re working on.

  • A video check-in. I’ll also be hosting a regular video check-in with the mentees to see how they’re going and to surface anything they haven’t articulated in their written communications.

Current mentees

There are currently three mentees in the program:

We’ll be joined by @SaumiaSinghal in December (when she has a break from her studies).

How to join

If you want to join this initiative please reply here or PM me with:

  • What plugin you would like to focus on and why.

  • Your general background, and why you want to learn how to code.

  • Whether you’ve read and understood the “the basics” see here .

Like last time, I will give you a little test (tip: it’s not necessarily whether you solve the problem, but how you approach it). I think this time I will have a quick video chat with those who do well in the test to decide who to include.

We’ll be taking on a maximum of two more mentees.

How to support this

If you want to support this initiative, I recently started accepting donations on my sandbox. You can donate to an individual plugin, or to “meta” which will go towards this program as a whole.

Donations to individual plugins will be shared equally between the plugin maintainers, currently myself, and the mentees mentioned above on the plugins they’re working on.

Donations to “meta”, i.e. to the program as a whole will be shared by James and myself.

To handle donations, I’ve made a number of updates to the Donations Plugin (which I may relaunch soon as just a “Stripe Plugin”). You can see the amount donated to each plugin (or the program as a whole in ‘meta’), as well as the current maintainers and other metadata in category banners at the top of each category.