Exemplo n.º 1
0
def create_tasks_from_issues(issues, repo_name, mentors):
    head_description = """Your task is to solve an open bug or missing feature in the
{} repository. Here is the issue:

""".format(repo_name)

    tail_description = """

Instructions for all issue tasks are at
https://github.com/zulip/zulip-gci/blob/master/tasks/2017/issues.md
"""

    # Task Type A
    for (issue, tags) in issues:
        issue_url = "https://api.github.com/repos/zulip/{}/issues/{}".format(
            repo_name, str(issue))
        issue_data = json.loads(
            requests.get(issue_url).content.decode('utf-8'))
        title = issue_data['title']
        url = issue_data['html_url']
        description = 'Issue [#{0}]({1}) {2}'.format(issue, url, title)
        print(head_description + description + tail_description)
        print("")
        upload_task(
            # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
            name='Issue #{0} {1}'.format(issue, title),
            description=head_description + description + tail_description,
            status=2,  # 1: draft, 2: published
            max_instances=1,
            mentors=mentors,
            tags=['issues'] + tags,  # free text, maximum 5 tags
            is_beginner=False,
            # 1: Coding, 2: User Interface, 3: Documentation & Training,
            # 4: Quality Assurance, 5: Outreach & Research
            categories=[1],
            time_to_complete_in_days=5,  # must be between 3 and 7
            # external_url=url,
            private_metadata="issues",
            do_upload=args.force)
Exemplo n.º 2
0
parser.add_argument('-f', '--force', dest='force', action="store_true", default=False)
args = parser.parse_args()


upload_task(
# https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
name = 'Write documentation for the Chat Box',
description = """Write a detailed description about the chatBox (functioning and 
what each button does) with screenshots.

Checklist:
    Include text about the behavior details about swipe to remove and it 
    automatically goes away when the main recyclerView is scrolled.
    Switching between private and stream mode.""",
status = 1, # 1: draft, 2: published
max_instances = 1,
mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**'
           , '*****@*****.**'],
tags = ['documentation', 'user guides', 'android'], # free text
is_beginner = True,
# 1: Coding, 2: User Interface, 3: Documentation & Training,
# 4: Quality Assurance, 5: Outreach & Research
categories = [3, 5],
time_to_complete_in_days = 3, # must be between 3 and 7
# Field currently not accessible via API. gci-support says it is coming soon.
external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/android.md",
private_metadata = "android-A",
do_upload = args.force)

upload_task(
# https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
name = 'Write documentation for the Streams Drawer',
Exemplo n.º 3
0
"Slack's guide for this feature is at %s."
description_C = description + "For this task, do **Part 3** for any three features."

for feature, slack_link in features:
    # Part 1
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name='Write a rough user guide for a feature.',
        description=description_A_and_B % (1, feature, slack_link),
        status=1,  # 1: draft, 2: published
        max_instances=1,
        mentors=[
            '*****@*****.**', '*****@*****.**',
            '*****@*****.**'
        ],
        tags=['documentation', 'user guides'],  # free text
        is_beginner=True,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories=[3, 5],
        time_to_complete_in_days=3,  # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        external_url=
        "https://github.com/zulip/zulip-gci/blob/master/tasks/user-guides.md",
        private_metadata="user-guides-A",
        do_upload=args.force)

    # Part 2
    upload_task(
        name='Polish an existing user guide for a feature.',
        description=description_A_and_B % (2, feature, slack_link),
description = """This task will teach you how to create a pull request, which is an
important skill to learn for contributing to an open source project on
GitHub.  Follow the tutorial at
https://github.com/zulip/zulip-gci/blob/master/tasks/2017/submit-a-pull-request.md
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Learn how to create a GitHub Pull Request',
    description=description,
    status=2,  # 1: draft, 2: published
    max_instances=100,
    mentors=[
        '*****@*****.**', '*****@*****.**',
        '*****@*****.**', '*****@*****.**'
    ],
    tags=['pull request', 'git', 'github'],  # free text
    is_beginner=True,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[3],
    time_to_complete_in_days=5,  # must be between 3 and 7
    external_url=
    "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/submit-a-pull-request.md",
    private_metadata="submit-a-pull-request",
    do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
    )
Exemplo n.º 5
0
# Task Type A
for (issue, tags) in issues:
    issue_data = json.loads(requests.get("https://api.github.com/repos/zulip/zulip/issues/" + str(issue)).content)
    title = issue_data['title']
    url = issue_data['html_url']
    description = 'Issue [#{0}]({1}) {2}'.format(issue, url, title)
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Issue #{0} {1}'.format(issue, title),
        description = description + tail_description,
        status = 2, # 1: draft, 2: published
        max_instances = 1,
        mentors = ['*****@*****.**', '*****@*****.**'],
        tags = ['issues'] + tags, # free text
        is_beginner = False,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories = [1],
        time_to_complete_in_days = 5, # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        external_url = url,
        private_metadata = "issues",
        do_upload = args.force)


if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")
Exemplo n.º 6
0
"""

description_A = description + "For this task, do **Task Type A** for the following set of directories: **%s**."
description_B = description + "For this task, do **Task Type B** for the following file: **%s**."

for directory_set in A_tasks:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Update text_type->Text in mypy annotations',
        description = description_A % directory_set,
        status = 2, # 1: draft, 2: published
        max_instances = 1,
        mentors = ['*****@*****.**', '*****@*****.**'],
        tags = ['python', 'mypy'], # free text
        is_beginner = True,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories = [1],
        time_to_complete_in_days = 3, # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/mypy-annotations.md",
        private_metadata = "mypy-annotations-A",
        do_upload = args.force)

for filename in B_tasks:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Add mypy annotations to %s' % (filename,),
        description = description_B % filename,
        status = 2, # 1: draft, 2: published
Exemplo n.º 7
0
description = """This task will introduce you to git version control system.

Instructions for this task are at
https://github.com/zulip/zulip-gci/blob/master/tasks/2017/git-comfortable.md
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name=
    'Get comfortable with git, branches, and more with some great tutorials!',
    description=description,
    status=2,  # 1: draft, 2: published
    max_instances=100,
    mentors=['*****@*****.**', '*****@*****.**'],
    tags=['intro', 'git'],  # free text
    is_beginner=True,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[1, 3],
    time_to_complete_in_days=5,  # must be between 3 and 7
    external_url=
    "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/git-comfortable.md",
    private_metadata="git-comfortable",
    do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
    )
    print(
Exemplo n.º 8
0
"""

description_A = description + "For this task, do Task Type A for the **%s** feature."
description_B = description + "For this task, do Task Type B for the following features:\n"

# Task Type A
for feature in features:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name='Write a user guide for the * %s * feature.' % (feature, ),
        description=description_A % (feature, ),
        status=2,  # 1: draft, 2: published
        max_instances=1,
        mentors=['*****@*****.**'],
        tags=['documentation', 'user guides'],  # free text
        is_beginner=False,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories=[3, 5],
        time_to_complete_in_days=3,  # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        private_metadata="user-guides-A",
        do_upload=args.force)

# Task Type B
for name, features in features_review:
    upload_task(
        name='Review user guides: %s.' % name,
        description=description_B + create_list(features),
        status=2,  # 1: draft, 2: published
        max_instances=1,
Exemplo n.º 9
0
"""

description_A = description + "For this task, do **Task Type A**."
description_BCD = description + "For this task, do **Task Type %(type)s** for " + \
                  "the **%(integration)s** integration (%(desc)s)."

# Task Type A
upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name = 'Learn how Zulip integrations work.',
    description = description_A,
    status = 2, # 1: draft, 2: published
    max_instances = 20,
    mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**',
               '*****@*****.**', '*****@*****.**', '*****@*****.**'],
    tags = ['python', 'integrations'], # free text
    is_beginner = False,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories = [1],
    time_to_complete_in_days = 5, # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/webhook-integrations.md",
    private_metadata = "webhook-integrations-A",
    do_upload = args.force)

for integration, desc in integrations:
    # Task Type B
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Investigate how the %s integration should work.' % (integration,),
        description = description_BCD % {'type': 'B', 'integration': integration, 'desc': desc},
Exemplo n.º 10
0
issues = []

description = """This task is for posting or resolving
the Github issue or pull request referenced in the title.
"""

# Task Type A
for issue in issues:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name='Special task for #%s' % (issue, ),
        description=description,
        status=2,  # 1: draft, 2: published
        max_instances=1,
        mentors=['*****@*****.**', '*****@*****.**'],
        tags=['issues'],  # free text
        is_beginner=False,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories=[1, 4],
        time_to_complete_in_days=3,  # must be between 3 and 7
        private_metadata="issues",
        do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
    )
    print(
        "This is not idempotent. Running this twice with -f will create two sets of tasks."
task_description = """"Help us prepare the comparison page between Zulip and other chat tools,
with a matrix of which features each product has or doesn't have.  Your task is to test
**%s** and figure out which all features are present in it. See %s to see the features you
have to test and the output format."""

for chat_application_name in chat_applications_names:
    for set in task_sets:
        url = "https://github.com/hackerkid/zulip-gci/blob/master/tasks/chat-application-comparison.md#set-%s" % set
        upload_task(
            # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
            name = task_name % (chat_application_name, set.upper()),
            description = task_description % (chat_application_name, url),
            status = 1, # 1: draft, 2: published
            max_instances = 1,
            mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'],
            tags = ['user research'], # free text
            is_beginner = False,
            # 1: Coding, 2: User Interface, 3: Documentation & Training,
            # 4: Quality Assurance, 5: Outreach & Research
            categories = [2, 5],
            time_to_complete_in_days = 3, # must be between 3 and 7
            # Field currently not accessible via API. gci-support says it is coming soon.
            # external_url = "TODO",
            private_metadata = "chat-application-comparison",
            do_upload = args.force)

if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")
Exemplo n.º 12
0
description = """This task will introduce you to the process of making and
testing changes to Zulip.

Instructions for this task are at
https://github.com/zulip/zulip-gci/blob/master/tasks/intro-to-zulip-server.md.
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name = 'Intro to Zulip server development',
    description = description,
    status = 2, # 1: draft, 2: published
    max_instances = 30,
    mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**',
               '*****@*****.**', '*****@*****.**'],
    tags = ['intro'], # free text
    is_beginner = True,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories = [1],
    time_to_complete_in_days = 5, # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/intro-to-zulip-server.md",
    private_metadata = "intro-to-zulip-server",
    do_upload = args.force)

if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")
Exemplo n.º 13
0
"""

description_A = description + "For this task, do **Task Type A** for the following set of directories: **%s**."
description_B = description + "For this task, do **Task Type B** for the following file: **%s**."

for directory_set in A_tasks:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Update text_type->Text in mypy annotations',
        description = description_A % directory_set,
        status = 2, # 1: draft, 2: published
        max_instances = 1,
        mentors = ['*****@*****.**', '*****@*****.**'],
        tags = ['python', 'mypy'], # free text
        is_beginner = True,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories = [1],
        time_to_complete_in_days = 3, # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/mypy-annotations.md",
        private_metadata = "mypy-annotations-A",
        do_upload = args.force)

for filename in B_tasks:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Add mypy annotations to %s' % (filename,),
        description = description_B % filename,
        status = 2, # 1: draft, 2: published
Exemplo n.º 14
0
https://github.com/zulip/zulip-gci/blob/master/tasks/review-slack-integrations.md

For this task, review rows **%s** through **%s** in the spreadsheet.
"""

for n in range(5, 806, 30):
    low = n
    high = max(n + 29, 806)
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Analyze Slack integrations: rows {} to {}'.format(low, high),
        description = description % (low, high),
        status = 2, # 1: draft, 2: published
        max_instances = 1,
        mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'],
        tags = ['integrations', 'research'], # free text
        is_beginner = False,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories = [5],
        time_to_complete_in_days = 5, # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/eslint.md",
        private_metadata = "slack",
        do_upload = args.force)

if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")
Exemplo n.º 15
0
For this task, do **Task Type B** for the following set of files:

%s
"""

for files in tasks_A:
    file_list = "\n".join([("* " + file_name) for file_name in files]),
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name='Update mypy annotations to Python 3 syntax',
        description=description_A % file_list,
        status=2,  # 1: draft, 2: published
        max_instances=1,
        mentors=['*****@*****.**', '*****@*****.**'],
        tags=['python', 'mypy'],  # free text
        is_beginner=False,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories=[1],
        time_to_complete_in_days=4,  # must be between 3 and 7
        # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/mypy-annotations.md",
        private_metadata="mypy-annotations-A",
        do_upload=args.force)

for files in tasks_B:
    file_list = "\n".join([("* " + file_name) for file_name in files]),
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name="Add mypy annotations to Zulip's interactive bots",
        description=description_B % file_list,
        status=2,  # 1: draft, 2: published
Exemplo n.º 16
0
    ("group python_rules", ['python']),
    ("groups bash_rules, handlebars_rules and jinja2_rules", []),
    ("groups css_rules and html_rules", ['html', 'css']),
]

linter_rules = []

for task, tags in linter_rules:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name="Write tests for Zulip's code linter",
        description=description.format(task),
        status=2,  # 1: draft, 2: published
        max_instances=1,
        mentors=['*****@*****.**'],
        tags=['linting', 'testing'] + tags,  # free text
        is_beginner=True,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories=[1, 4],
        time_to_complete_in_days=3,  # must be between 3 and 7
        # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/linter-rules.md",
        private_metadata="linter-rules",
        do_upload=args.force)

if not args.force:
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
    )
    print(
        "This is not idempotent. Running this twice with -f will create two sets of tasks."
    )
Exemplo n.º 17
0
description_A = description + "For this task, do **Task Type A**."
description_BCD = description + "For this task, do **Task Type %(type)s** for " + \
                  "the **%(integration)s** integration (%(desc)s)."

# Task Type A
upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Learn how Zulip integrations work.',
    description=description_A,
    status=2,  # 1: draft, 2: published
    max_instances=20,
    mentors=[
        '*****@*****.**', '*****@*****.**',
        '*****@*****.**', '*****@*****.**',
        '*****@*****.**', '*****@*****.**'
    ],
    tags=['python', 'integrations'],  # free text
    is_beginner=False,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[1],
    time_to_complete_in_days=5,  # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    external_url=
    "https://github.com/zulip/zulip-gci/blob/master/tasks/webhook-integrations.md",
    private_metadata="webhook-integrations-A",
    do_upload=args.force)

for integration, desc in integrations:
    # Task Type B
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
Exemplo n.º 18
0
testing changes to Zulip.

Instructions for this task are at
https://github.com/zulip/zulip-gci/blob/master/tasks/2017/intro-to-zulip-server.md
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Intro to Zulip server development',
    description=description,
    status=2,  # 1: draft, 2: published
    max_instances=100,
    mentors=[
        '*****@*****.**', '*****@*****.**', '*****@*****.**',
        '*****@*****.**'
    ],
    tags=['intro', 'dev environment', 'vagrant'],  # free text
    is_beginner=True,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[1, 3],
    time_to_complete_in_days=5,  # must be between 3 and 7
    external_url=
    "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/intro-to-zulip-server.md",
    private_metadata="intro-to-zulip-server",
    do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
    )
Exemplo n.º 19
0
args = parser.parse_args()

description = """This task will teach you how to create a pull request, which is an
important skill to learn for contributing to an open source project on
GitHub.  Follow the tutorial at
https://github.com/zulip/zulip-gci/blob/master/tasks/submit-a-pull-request.md.
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name = 'Learn how to create a GitHub Pull Request',
    description = description,
    status = 1, # 1: draft, 2: published
    max_instances = 40,
    mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'],
    tags = [], # free text
    is_beginner = True,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories = [3],
    time_to_complete_in_days = 5, # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/submit-a-pull-request.md",
    private_metadata = "submit-a-pull-request",
    do_upload = args.force)

if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")
Exemplo n.º 20
0
great way to learn the basics of refactoring, git workflow, and good style.

Instructions for PEP-8 tasks are at https://github.com/zulip/zulip-gci/blob/master/tasks/pep8.md.

For this task, fix the errors for the following rule(s): **%s**.
"""

for rules, is_beginner in pep8_rules:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Cleanup Zulip code to follow PEP-8 style standards',
        description = description % ', '.join(rules),
        status = 2, # 1: draft, 2: published
        max_instances = 1,
        mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**'],
        tags = ['python', 'pep8'], # free text
        is_beginner = is_beginner,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories = [1],
        time_to_complete_in_days = 3, # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/pep8.md",
        private_metadata = "pep8",
        do_upload = args.force)

if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")
Exemplo n.º 21
0
testing changes to Zulip.

Instructions for this task are at
https://github.com/zulip/zulip-gci/blob/master/tasks/intro-to-zulip-server.md.
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Intro to Zulip server development',
    description=description,
    status=2,  # 1: draft, 2: published
    max_instances=30,
    mentors=[
        '*****@*****.**', '*****@*****.**',
        '*****@*****.**', '*****@*****.**', '*****@*****.**'
    ],
    tags=['intro'],  # free text
    is_beginner=True,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[1],
    time_to_complete_in_days=5,  # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/intro-to-zulip-server.md",
    private_metadata="intro-to-zulip-server",
    do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
    )
Exemplo n.º 22
0
Choose a tool that works best for you!

For this task, do **Task Type %(type)s**.
"""

# Task Type A
upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Draw user avatars.',
    description=description % {'type': 'A'},
    status=2,  # 1: draft, 2: published
    max_instances=20,
    mentors=['*****@*****.**', '*****@*****.**'],
    tags=['art', 'avatars'],  # free text
    is_beginner=True,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[2],
    time_to_complete_in_days=3,  # must be between 3 and 7
    external_url=
    "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/visual-art.md",
    private_metadata="visual-art-A",
    do_upload=args.force)

# Task Type B
upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Generate identicons for user avatars.',
    description=description % {'type': 'B'},
    status=2,  # 1: draft, 2: published
Exemplo n.º 23
0
Instructions for quality assurance tasks are at
https://github.com/zulip/zulip-gci/blob/master/tasks/quality-assurance.md.

For this task, do any one of the listed Task Types.
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Find bugs in Zulip',
    description=description,
    status=2,  # 1: draft, 2: published
    max_instances=20,
    mentors=['*****@*****.**', '*****@*****.**'],
    tags=['bug squashing', 'internationalization', 'android',
          'frontend'],  # free text
    is_beginner=False,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[2, 4],
    time_to_complete_in_days=3,  # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    external_url=
    "https://github.com/zulip/zulip-gci/blob/master/tasks/quality-assurance.md",
    private_metadata="quality-assurance",
    do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
    )
**%s** and figure out which all features are present in it. See %s to see the features you
have to test and the output format."""

for chat_application_name in chat_applications_names:
    for set in task_sets:
        url = "https://github.com/hackerkid/zulip-gci/blob/master/tasks/chat-application-comparison.md#set-%s" % set
        upload_task(
            # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
            name=task_name % (chat_application_name, set.upper()),
            description=task_description % (chat_application_name, url),
            status=2,  # 1: draft, 2: published
            max_instances=1,
            mentors=[
                '*****@*****.**', '*****@*****.**',
                '*****@*****.**', '*****@*****.**'
            ],
            tags=['user research'],  # free text
            is_beginner=False,
            # 1: Coding, 2: User Interface, 3: Documentation & Training,
            # 4: Quality Assurance, 5: Outreach & Research
            categories=[2, 5],
            time_to_complete_in_days=3,  # must be between 3 and 7
            # Field currently not accessible via API. gci-support says it is coming soon.
            # external_url = "TODO",
            private_metadata="chat-application-comparison",
            do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
    )
Exemplo n.º 25
0
Instructions for this task are at
https://github.com/zulip/zulip-gci/blob/master/tasks/quality-assurance.md.
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name=
    'Find and report bugs in Zulip (backend, web, desktop, mobile, bots, or anywhere else!)',
    description=description,
    status=2,  # 1: draft, 2: published
    max_instances=40,
    mentors=['*****@*****.**'],
    tags=[
        'bug squashing', 'internationalization', 'mobile', 'frontend',
        'real-time sync'
    ],  # free text
    is_beginner=False,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[2, 4],
    time_to_complete_in_days=3,  # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/quality-assurance.md",
    private_metadata="quality-assurance",
    do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
Exemplo n.º 26
0
description_AB = description + "For this task, do **Task Type %(type)s**."
description_C = description + "For this task, do **Task Type C** for creating a " + \
                              "**%(bot)s** bot (%(desc)s)."
description_D = description + "For this task, do **Task Type D** for improving " + \
                               "the **%(bot)s** bot (%(desc)s)."

# Task Type A
upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Learn about interactive bots, pt 1: running the helloworld bot.',
    description=description_AB % {'type': 'A'},
    status=2,  # 1: draft, 2: published
    max_instances=100,
    mentors=['*****@*****.**'],
    tags=['python', 'bots'],  # free text
    is_beginner=False,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[1],
    time_to_complete_in_days=3,  # must be between 3 and 7
    external_url=
    "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/interactive-bots.md",
    private_metadata="interactive-bots-A",
    do_upload=args.force)

# Task Type B
upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Learn about interactive bots, pt 2: creating a message info bot.',
    description=description_AB % {'type': 'B'},
    status=2,  # 1: draft, 2: published
Exemplo n.º 27
0
of the different types of integrations and the enormous range of them.

Instructions for these tasks are at
https://github.com/zulip/zulip-gci/blob/master/tasks/review-slack-integrations.md

For this task, review rows **%s** through **%s** in the spreadsheet.
"""

for n in range(5, 806, 30):
    low = n
    high = max(n + 29, 806)
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Analyze Slack integrations: rows {} to {}'.format(low, high),
        description = description % (low, high),
        status = 2, # 1: draft, 2: published
        max_instances = 1,
        mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'],
        tags = ['integrations', 'research'], # free text
        is_beginner = True
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories = [5],
        time_to_complete_in_days = 3, # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/eslint.md",
        private_metadata = "slack",
        do_upload = args.force)

if not args.force:
    print
Exemplo n.º 28
0
                  "the **%(integration)s** integration (%(desc)s)."
description_E = description + "For this task, do **Task Type E** for " + \
                "the webhook integrations {webhooks[0]}, {webhooks[1]} and {webhooks[2]}."

# This task has already been uploaded for 2017
if False:
    # Task Type A
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name='Learn how Zulip integrations work.',
        description=description_A,
        status=2,  # 1: draft, 2: published
        max_instances=100,
        mentors=['*****@*****.**', '*****@*****.**'],
        tags=['python', 'integrations'],  # free text
        is_beginner=False,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories=[1],
        time_to_complete_in_days=3,  # must be between 3 and 7
        external_url=
        "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/webhook-integrations.md",
        private_metadata="webhook-integrations-A",
        do_upload=args.force)

for integration, desc in integrations:
    # Task Type B
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name='Investigate how the %s integration should work.' %
        (integration, ),
Exemplo n.º 29
0
them in the following fashion:

%s.

"""

# Task Type A
for (url, solution) in urls:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name='Eliminate legacy %s URL.' % (url, ),
        description=description % (url, solution),
        status=2,  # 1: draft, 2: published
        max_instances=1,
        mentors=['*****@*****.**', '*****@*****.**'],
        tags=['refactoring', "python"],  # free text
        is_beginner=False,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories=[1],
        time_to_complete_in_days=5,  # must be between 3 and 7
        private_metadata="issues",
        do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
    )
    print(
        "This is not idempotent. Running this twice with -f will create two sets of tasks."
Exemplo n.º 30
0
Instructions for eslint tasks are at
https://github.com/zulip/zulip-gci/blob/master/tasks/eslint.md

For this task, fix the errors for rule **%s**.
"""

for rules in eslint_rules:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Cleanup Zulip JavaScript code: eslint %s' % (rules,),
        description = description % ', '.join(rules),
        status = 2, # 1: draft, 2: published
        max_instances = 1,
        mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'],
        tags = ['javascript', 'eslint'], # free text
        is_beginner = rules in ['new-cap', 'no-empty', 'space-before-blocks', 'yoda'],
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories = [1],
        time_to_complete_in_days = 3, # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/eslint.md",
        private_metadata = "eslint",
        do_upload = args.force)

if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")
Exemplo n.º 31
0
For this task, fix the errors for rule **%s**.
"""

for rule in eslint_rules:
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name='Cleanup Zulip JavaScript code: eslint %s' % (rule, ),
        description=description % (rule, ),
        status=2,  # 1: draft, 2: published
        max_instances=1,
        mentors=[
            '*****@*****.**', '*****@*****.**',
            '*****@*****.**', '*****@*****.**'
        ],
        tags=['javascript', 'eslint'],  # free text
        is_beginner=rule
        in ['new-cap', 'no-empty', 'space-before-blocks', 'yoda'],
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories=[1],
        time_to_complete_in_days=3,  # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/eslint.md",
        private_metadata="eslint",
        do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
Exemplo n.º 32
0
description = """Find new bugs in Zulip!

Instructions for quality assurance tasks are at
https://github.com/zulip/zulip-gci/blob/master/tasks/quality-assurance.md.

For this task, do any one of the listed Task Types.
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name = 'Find bugs in Zulip',
    description = description,
    status = 2, # 1: draft, 2: published
    max_instances = 20,
    mentors = ['*****@*****.**', '*****@*****.**'],
    tags = ['bug squashing', 'internationalization', 'android', 'frontend'], # free text
    is_beginner = False,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories = [2, 4],
    time_to_complete_in_days = 3, # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/quality-assurance.md",
    private_metadata = "quality-assurance",
    do_upload = args.force)

if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")
Exemplo n.º 33
0
https://github.com/zulip/zulip-gci/blob/master/tasks/bot-avatars.md

For this task, do any one of the listed Task Types.
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Design or find avatars for Zulip bots',
    description=description,
    status=1,  # 1: draft, 2: published
    max_instances=30,
    mentors=[
        '*****@*****.**', '*****@*****.**', '*****@*****.**',
        '*****@*****.**'
    ],
    tags=['design', 'bots', 'avatars'],  # free text
    is_beginner=True,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[2, 5],
    time_to_complete_in_days=7,  # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    external_url=
    "https://github.com/zulip/zulip-gci/blob/master/tasks/bot-avatars.md",
    private_metadata="bot-avatars",
    do_upload=args.force)

if not args.force:
    print
    print(
        "No tasks uploaded. Add a -f argument to upload tasks to the GCI website."
Exemplo n.º 34
0
args = parser.parse_args()

description = """\
This task teaches two skills important in developing almost any product:
user research, and sales. The task description is available here:

https://github.com/zulip/zulip-gci/blob/master/tasks/2017/user-research.md
"""

upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name = 'Learn about sales by doing user interviews',
    description = description,
    status = 2, # 1: draft, 2: published
    max_instances = 30,
    mentors = ['*****@*****.**', '*****@*****.**'],
    tags = ['outreach'], # free text
    is_beginner = False,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories = [5],
    time_to_complete_in_days = 7, # must be between 3 and 7
    # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/user-research.md",
    private_metadata = "user-research",
    do_upload = args.force)

if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")
Exemplo n.º 35
0
"""

for language_tasks in languages_tasks:
    language = language_tasks[0]
    tasks = language_tasks[1]
    if 'A' in tasks:
        upload_task(
            # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
            name='%s: Research web application translations' % (language),
            description=description_ABCD % {
                'type': 'A',
                'language': language
            },
            status=2,  # 1: draft, 2: published
            max_instances=1,
            mentors=['*****@*****.**'],
            tags=['translation'],  # free text
            is_beginner=False,
            # 1: Coding, 2: User Interface, 3: Documentation & Training,
            # 4: Quality Assurance, 5: Outreach & Research
            categories=[3, 5],
            time_to_complete_in_days=5,  # must be between 3 and 7
            external_url=
            "https://github.com/zulip/zulip-gci/blob/master/tasks/2017/translations.md",
            private_metadata="translations-A",
            do_upload=args.force)

    if 'B' in tasks:
        upload_task(
            # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
            name='%s: Write general translation rules' % (language),
            description=description_ABCD % {
Exemplo n.º 36
0
"""

description_ABD = description + "For this task, do **Task Type %(type)s**."
description_C = description + "For this task, do **Task Type C** for " + \
                  "the **%(bot)s** bot (%(desc)s)."

# Task Type A
upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Learn about interactive bots, pt 1: running the followup bot.',
    description=description_ABD % {'type': 'A'},
    status=2,  # 1: draft, 2: published
    max_instances=30,
    mentors=['*****@*****.**'],
    tags=['python', 'bots'],  # free text
    is_beginner=False,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories=[1],
    time_to_complete_in_days=3,  # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/webhook-integrations.md",
    private_metadata="interactive-bots-A",
    do_upload=args.force)

# Task Type B
upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name='Learn about interactive bots, pt 2: creating a links bot.',
    description=description_ABD % {'type': 'B'},
    status=2,  # 1: draft, 2: published
Exemplo n.º 37
0
description_A_and_B = description + "For this task, do Task Type A for the **%s** feature.\n" + \
"Slack's guide for this feature is at %s."
description_C = description + "For this task, do **Part 3** for any three features."

for feature, slack_link in features:
    # Part 1
    upload_task(
        # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
        name = 'Write a user guide for the %s feature.' % (feature,),
        description = description_A_and_B % (feature, slack_link),
        status = 2, # 1: draft, 2: published
        max_instances = 1,
        mentors = ['*****@*****.**', '*****@*****.**',
                   '*****@*****.**', '*****@*****.**'],
        tags = ['documentation', 'user guides'], # free text
        is_beginner = False,
        # 1: Coding, 2: User Interface, 3: Documentation & Training,
        # 4: Quality Assurance, 5: Outreach & Research
        categories = [3, 5],
        time_to_complete_in_days = 3, # must be between 3 and 7
        # Field currently not accessible via API. gci-support says it is coming soon.
        # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/user-guides.md",
        private_metadata = "user-guides-A",
        do_upload = args.force)

    # # Part 2
    # upload_task(
    #     name = 'Polish an existing user guide for a feature.',
    #     description = description_A_and_B % (2, feature, slack_link),
    #     # Note: this should be released as a draft, and published only after Part 1 is done
    #     status = 1, # 1: draft, 2: published
Exemplo n.º 38
0
titles = {
    "A": "Find a collection of avatars for Zulip bots",
    "B": "Design a collection of avatars for Zulip bots",
    "C": "Refine a collection of avatars for Zulip bots",
}

for task_type in titles.keys():
    upload_task(
    # https://developers.google.com/open-source/gci/resources/downloads/TaskAPISpec.pdf
    name = titles[task_type],
    description = description % (task_type,),
    status = 2 if task_type != 'C' else 1, # 1: draft, 2: published
    max_instances = 10,
    mentors = ['*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**'],
    tags = ['design', 'bots', 'avatars'], # free text
    is_beginner = False,
    # 1: Coding, 2: User Interface, 3: Documentation & Training,
    # 4: Quality Assurance, 5: Outreach & Research
    categories = [2, 5],
    time_to_complete_in_days = 7, # must be between 3 and 7
    # Field currently not accessible via API. gci-support says it is coming soon.
    # external_url = "https://github.com/zulip/zulip-gci/blob/master/tasks/bot-avatars.md",
    private_metadata = "bot-avatars",
    do_upload = args.force)

if not args.force:
    print
    print("No tasks uploaded. Add a -f argument to upload tasks to the GCI website.")
    print("This is not idempotent. Running this twice with -f will create two sets of tasks.")