Git Product home page Git Product logo

zulip-gci's Introduction

Zulip Google Code-In repository

Welcome to the Zulip GCI landing page!

This page has information on joining the developers' chat server and setting up a development environment.

Once you're done, we recommend browsing through Zulip's extensive documentation about its code and community. If you're planning on submitting a lot of code, we particularly recommend the guides to git, version control, coding style, and testing.

Community

Almost all GCI discussion (and discussion of Zulip more generally) happens on our developers' server, https://chat.zulip.org. Create an account and say hi on the "introductions" topic of the "GCI general" stream! When signing up, check the box that says you are a GCI student. This will subscribe you to the following streams (among others):

  • #GCI announce: Messages from the Zulip GCI mentors.
  • #GCI tasks: Task-specific discussion or help.
  • #GCI help: Questions (about code or otherwise) not related to a specific task.
  • #GCI general: General discussion, feedback, questions, or anything you want!
  • #test here: Used for sending test messages.
  • #bot testing: Used for testing bots.

There are at least a dozen other active streams on the server; go to https://chat.zulip.org/#streams/all to check them out.

Participating in an open source community is about more than just contributing code. It is about helping your fellow contributors with their contributions as well. As such, one of the major considerations for the competition winners will be how active you are in helping your fellow students. You can do this in two ways:

  • Answer questions in any of the streams
  • Help people during code review, so that by the time a mentor looks at the pull request, your fellow student has enough feedback to make their PR clean enough to approve.

Please be kind in all of your interactions, and adhere to our community code of conduct.

A few non-obvious things that help keep the server manageable:

  • All test messages should go to the #test here stream, except for testing bots. Test bots in the #bot testing stream.
  • Always use a topic. If you're not sure what to put, you can use your name.
  • When asking for help, include as much detail as you can, in particular, what you tried, and the full traceback of any error messages you got.

Setting up the Zulip Development environment

Most coding tasks require a working Zulip development environment. There are two strategies for setting one up.

Remote VM

Zulip has partnered with Digital Ocean to provide VMs for GCI participants developing Zulip. To get a VM, follow the instructions here.

Once you have access to your VM, take a look at our tips for editing code on a remote development server machine.

Local install

See the Vagrant environment setup tutorial for installing Zulip on Linux or OS X. There are also instructions for installing locally on Windows, though the setup can be tricky.

There is also documentation for using Docker or installing directly on Ubuntu. We don't recommend either of those methods unless you have a specific reason to prefer them.

How to choose

Setting up a Remote VM can be faster, but day to day development can be more convenient with a local install. If you are running Windows, have a slow internet connection (the local install is ~500 Mb), or are planning on doing a small number of Zulip tasks, we recommend starting with the remote VM. You can always set up a local install later.

GCI repositories

This repository is the home for Google Code In documentation, code, task descriptions, and anything else that helps us keep Google Code In organized.

Many of the tasks will instruct you to submit pull requests and create github issues on a github respository that we made especially for student submissions that do not yet have a place in other Zulip repositories.

If you are not sure how to submit a pull request (or what that even means), check out our beginner task on this topic.

Can't find the perfect task to work on?

Zulip has hundreds of open issues that we'd like to resolve that don't have corresponding GCI tasks; many of them have been tagged as "good first issue" because we expect them to be accessible to new contributors:

https://github.com/zulip/zulip/issues?page=3&q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22+no%3Aassignee

You're encouraged to browse that list! If you see a project in there that you're excited about helping with, ask about it on https://chat.zulip.org; it's likely that we'll be happy to create a GCI task for it. Additionally, you can comment @zulipbot claim on it to have our GitHub bot @zulipbot officially assign the issue to you. You can read more about using @zulipbot here.

Information for GCI mentors

This repository also contains items generally related to Zulip's participation in Google Code-In.

At the moment, this includes:

  • docs/: Documentation that you can point students to in order to help them learn about how open source works.
  • scripts/: Tools for iterating over the tasks in a category and creating actual GCI tasks out of them.
  • tasks/: Template descriptions for large categories of tasks. We put the bulk of the descriptions in this repo rather than in the GCI interface so that it's possible to update the documentation on how to do things as we see what folks find confusing.

For each major category of tasks, we'll want to have both a template description under tasks/ as well as a script under scripts/ to import the tasks into the GCI web application. We'll run the relevant scripts as tasks are ready to be published.

zulip-gci's People

Contributors

1niels avatar abhaykashyap03 avatar actuallyatoaster avatar andrewallen00 avatar anirudhjain75 avatar arpith avatar balaji2198 avatar bickio avatar christi3k avatar dob9601 avatar fremiller avatar hackerkid avatar ishankc avatar jacklqiu avatar jainkuniya avatar lonerz avatar lyla-fischer avatar pweaver avatar refeed avatar rishig avatar roberthoenig avatar s1db avatar sampritipanda avatar showell avatar synicalsyntax avatar timabbott avatar tommyip avatar trueskawka avatar umairwaheed avatar yagogg avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zulip-gci's Issues

Give mentors ssh access to droplets

When debugging issues with droplets, it would be helpful if mentors could ssh in.

It probably makes sense to implement this by putting an ssh key on a shared machine, and having mentors ssh into that machine with their own keys, and then ssh from there to the droplet, rather than ssh'ing directly -- that way, if a mentor joins after a droplet is created, they can still connect to it. There was some discussion of this on the GCI mentors stream.

Make a task for getting started with the RN mobile app

I think the task should just ask the student to get the Zulip RN app working in the simulator, taking notes on any issues they ran into (whether they documentation helped them through those or not). End result can be a screenshot showing the simulator running. I'd recommend focusing on Android since that is available on every platform, and we should probably mark this as a more challenging task.

Someone should then test-solve the task, and contribute what they learned back to the main zulip-mobile docs.

docs: Write a beginner doc on testing.

We already have a pretty extensive documentation on testing, but it might be too intimidating for newbies, especially students.

A simpler and more basic doc could cover:

  • running tests on code before submitting a PR, especially running linter tests with pep-8
  • checking Travis errors and understanding how to run the tests locally

I'm not sure writing tests should be a part of the doc.

task idea: Migrate old type hints to python 3 style

@rht has migrated ~48% of the hints to the Python 3 format using a tool(zulip/zulip#6841) he built. The ones remaining are mostly multi line type hints which the tool is not equipped dealing with.

Proposed task ideas

  • Migrate to Python 3 type hints using the tools one file at a time if @rht and @tommyip is able to add multi line type hint support to the tool.
  • Manually do the migration if the tool is not complete befored GCI.

https://chat.zulip.org/#narrow/stream/backend/subject/GCI/near/330328

Quality Assurance

screenshot_20161215-234841

Steps to verify the bug

  • Choose any stream.
  • Scroll down to till you reach the end.
  • Check the panel on right side where the scrolling status is displayed
  • You'll find that its not in the end but slightly up.

Quality Assurance: Emoji Menu shows 9 sets of same emoji

To view the bug simply start a new message, open the emoji menu, and scroll through it. I looked over the menu and counted the ๐Ÿ’ฏ emoji 9 times. I can't include a screenshot of the bug in this issue so I uploaded an example to dropbox here. Thanks!

Make a task for QAing existing user docs

From #630.

I think we might want to resurrect a variant of "task type B" where their job is to go through a group of 5 articles, try to follow the instructions somewhat blindly, taking notes on what didn't work. And then also compare with the UI and see what other articles should possibly be link. And the work product is a list of things about that documentation that can be improved.

I think we could have ~20 tasks that way (by grouping articles; I think we want each to involves carefully reviewing ~3-5 pages of text).

While we're editing this, it may be worth advertising that Zulip's original user docs were written during last year's GCI?

task idea: Add test coverage for linter lines.

We have a lot of linter lines left without coverage. Adding coverage is very easy (just add good_lines, bad_lines). I'm thinking of 15 - 20 lines per task? What's the time consumption we should aim for? I expect 5 rules to take 30-45 minutes, if done well.

Quality Assurance: Stream settings hidden menu overflow

  1. Minimize window to mobile width (365px)
  2. Press the hamburger menu icon to open list of streams
  3. Press the down chevron to the right of any stream's name

The stream settings that extend after pressing the down chevron should overflow and be hidden outside of the window's view as seen in the picture.

screenshot from 2016-11-27 18-13-44

Quality Assurance: Stream title text overflow

Create a stream

  1. Login as Iago
  2. Locate the Navigate cog icon by the Streams section in your left sidebar to navigate to the Streams menu.
  3. Click the blue "Create new stream" button.

Bug 1

Bug #1 Screenshot
Error with stream titles longer than 100 characters

  1. Create a stream with a long stream title (over 100 characters).
  2. The resulting error message will have an overflow of text.

Bug 2

bug
Error with stream titles longer than 48 characters

  1. Create a stream with a long stream title (longer than 48 characters)
  2. Click the cog icon located in the upper right corner and click the Administration tab from the dropdown, then click the Streams Deletion tab
  3. Find the stream that was just created and click its corresponding Delete stream button.
  4. A modal window will appear confirming your stream deletion, but the text will overflow.

Bug 3

bugg
Error with stream titles longer than 30 characters.

  1. Create a stream with a long stream title (longer than 30 characters) using an admin account (ex: Iago)
  2. In the left sidebar under the Streams section, hover over the right side of the new stream to make the chevron appear
  3. The chevron is obscured by the stream name

doc: Write a doc on automated testing.

It would be great for a GCI student to write an intro to automated testing, as there is a lot of diversity when it comes to understanding it among the students.

The guide should point to relevant existing resources on the web (such as automated testing tutorials) since Zulip's approach to it is pretty mainstream.

docs: Write a beginner doc on traceback.

While discussing the bash doc for newbies, I've had an idea on a traceback doc, that should:

  • inform what a traceback is
  • explain how to use it to use it to understand issues, with some help from googling the relevant errors
  • explain how to share it in a meaningful way

Sharing and discussing problems is a skill to be learned and traceback can be confusing.

Make sure script to create remote server hasn't bitrotted

I tried running the script to create a remote server this weekend to show someone, and it failed with an error I hadn't seen before. We should test it out and make sure it works, ideally in the next week (Since I have a project night I'll be going to next Tuesday...).

Anyone interested? My guess is it's just a pip install python-digitalocean gives a version with some API changes or something.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.