@GlitchMr wrote:
(the Application Guide says it's fine to create a draft on forums, so sure, why not, perhaps somebody will provide me some hints about this)
Name: Konrad Borowski
Meta Discourse Name: GlitchMr
Email: xfi... it's on my profile anyway, and it's better protected from spam here (the final PDF will have it written properly, but until then...)
Country & timezone: Poland, GMT+1
School Name & Study: Politechnika Warszawska, Computer ScienceSynopsis
A chat plugin for Discourse called Babble is going to be improved to the point where it will be a really usable chat system, while keeping it simple. I like working on chat systems myself, I find them interesting. I believe I'm qualified, by sending a few Discourse patches before.
Specification
The project's purpose is to implement various improvements to the Babble plugin which implements a simple, but really neat chat plugin for Discourse. In particular, those improvements should be implemented
Editing posts
While playing a bit with this plugin, I quickly realized that posts cannot be modified. This is how it works in systems like IRC, but such behavior doesn't really make sense in context of Discourse. Misspellings happen, and while you can correct them by writing another message with a correction, wouldn't be it simpler and cleaner to just let the user modify a post.
The simplest user interface would be to make pressing Up button allow modifying the post, however, that only applies to keyboard user interface, mouse user interface needs another solution.
Allowing flagging posts
As it happens, spam is a common problem of forums. Giving users the capacity to flag Babble posts, just like other posts on Discourse would help a bit with abuse. The flag system is not supposed to deal with non-post content, but as it happens, chat posts are posts too, and administrators can see chat threads whatever the case is.
Allow deleting posts
There are two reasons to add this feature.
First of all, staff members would have to be able to delete posts that actually were flagged, that is a given. What would be a point of allowing to flag posts, without the system being able to behave to it in any way.
Second, a user could have realized that he didn't want to write what he wrote. Or perhaps missed a really obvious thing. Being able to remove posts (even if they could be still seen by staff) would help clean chat a bit.
The biggest issue is an UI for this feature. The chat system is intended to be simple, and it's hard to fit any buttons into it. Perhaps requiring visiting the chat thread would work? (just thinking out loud)
Information about other user typing
That one should be simple, I think? The general idea is that when the user is typing something. The extension in question is similar in design to XMPP's XEP-0085
File attachments
If an user wants to share a screenshot (can happen), why require using an external service to do it, when Discourse has perfectly fine attachment system. For some reason, chat doesn't use it however.
This can be solved by adding a button to add attachments (the same as while writing posts) and by allowing to drag and drop files into chat box.
Sending notifications on @-mention
That one, I do admit, is trickest from all the points mentioned here, but nevertheless important. If an user says something, leaves, then he is notified, and 100 unrelated messages appear, the user should be informed about a notification after he returns, without having to read all the messages.
Why is tricky? Notification types are an enum that is within Discourse source code, so other applications cannot add new notification types.
Although, I guess you could just link to a post in chat thread, and use a standard mention notification. It's probably simpler.
Linking to posts
While technically not part of an idea mentioned on a site, it feels really weird to have dates that don't do anything when clicked, and yet work as hyperlinks. They probably were supposed to be permalinks, so why not implement that while improving everything else?
Anticipated challenges
I... honestly cannot think of anything at this point. Perhaps my inability to think of deletion UI, but otherwise I have a general idea how to implement those improvements.
Groundwork
I already checked Discourse code and Babble source code in order to get a general idea how would I go about implementing this feature. I also made a few contributions before to Discourse, although they aren't particularly big or anything.
I did made a shoutbox feature for a forum I wrote long time ago (like 8 years ago in PHP, wow, time sure goes fast), although that was long time ago, and probably not that much of interest. I also wrote an a converter of certain proprietary chat protocol to IRC (using IRC server written in Golang).
Project Schedule
I do admit, at first I assumed that the project was 3 months, but apparently it's 4, which I realized while writing this schedule (which actually makes things easier, because projects always take longer than you expect).
In general, the idea is to not take more than a week (potentially expandable to 10 days if needed, perhaps due to technical difficulties) to finish a usable version of a feature (although may be slightly buggy, later on it should be improved by me). The features in question are somewhat independent, so the order is mostly meaningless, although the editing feature will probably be implemented first, because lack of it is most annoying from these (at least for me).
This general plan should allow expanding if needed, but I also should not use this opportunity unless really, really, really needed. If I need to ask myself, it means it's not needed .
The features will be worked on a git branch, that will be sent as a pull request, so code review could be performed early on. It's not a good idea to wait with those things .
Experience
I don't really have experience with Ruby on Rails, but looking at Discourse code, and contributing some small things, I can manage it (it's just yet another MVC framework, isn't it?).
That said, I did work on various open source projects, and timezones are somewhat annoying, but they can be dealt with, by for instance sending messages that can be read by another person later on. I'm comfortable speaking in English, I wrote this draft after all . I did work for instance on fish shell, which is quite popular software I would say, although I do admit I didn't work on it recently, because university is hard (I don't think university will be a problem during summer break however).
As for deadlines, I usually set myself deadlines even when I technically don't need to, because otherwise I usually do things way too slowly, so... nothing new to me.
What after Google Summer of Code
I do plan contributing to Discourse even after Google Summer of Code, however, I cannot really guarantee anything (I was contributing to fish shell, and am still contributing, although because of difficulties at university, I don't contribute as much as I used to). That said, if I will have time to contribute, I will try to. I like Discourse myself, and I believe the point of Google Summer of Code is not much as writing code for a task, but rather staying as a contributor, once you will like the first real project.
This draft is unfinished, I will look into improving it until the deadline.
Posts: 3
Participants: 3