Google Code In 2017 Tasks

@ 
= Interested Mentors =
Please first fill out the Google form mentioned at the top of: Google Code In 2017 Mentors
= Effort for a Task =
* Each task is expected to take 3-5 hours of work to complete
* Students have at least 3 days to complete the task
= Types of Tasks =
There are 5 types of Code-in Tasks in general:
;Code
: Tasks related to writing or refactoring code
;Documentation/Training
: Tasks related to creating/editing documents and helping others learn more
;Outreach/Research
: Tasks related to community management, outreach/marketing, or studying problems and recommending solutions
;Quality Assurance
: Tasks related to testing and ensuring code is of high quality
;User Interface
: Tasks related to user experience research or user interface design and interaction
= Beginner Tasks =
* A student can only complete a total of 2 beginner tasks
* Each OSGeo project should specify that a task is a beginner task by including "[BEGINNER]" at the end of the task name
= Example Tasks =
* Haiku project's 2016 tasks: https://codein.withgoogle.com/archive/2016/organization/5146925732986880/task/
** Haiku project's tasks in json format: https://raw.githubusercontent.com/pulkomandy/GCITool/master/tasks.json
* "Install and open project XXX and take a screenshot showing the interface, with your Code-in dashboard in the background"
* "Fix an issue in the tracker for project XXX [DIFFICULT]"
* "Present the project XXX to your class [BEGINNER]"
= Project Tasks =
* moved to private document on 2017-10-26
= Bulk Uploading Tasks =
Documentation
* API
Prep
NOTE: the python scripts for bulk uploading are written for Python2, these steps below were adapted for Python3:
# git clone https://code.googlesource.com/codein/api api
# cd api
# check your Python version: 
#* python -V
# install module "requests" through easy_install or pip: 
#* easy_install requests
#* pip install requests
# (for Python3) in list_tasks.py change print command on line# 46 to
#* print ('\t'.join([str(t['id']), t['name']]))
# (for Python3) in list_tasks.py convert to an int on line# 52 to
#* next_page = int(result.group(1))
# (for Python3) in csv_uploader.py change print command on line# 81 to
#* print ('\t'.join(['OK', str(t['id']), t['name'], ]))
# (for Python3) in csv_uploader.py change print command on line# 84 to
#* print ('\t'.join(['ERROR', , t['name'], e.response.text]))
# (for Python3) in client.py change instances of "urlparse" to "urllib.parse"
Export CSV
* export your tasks from the Google spreadsheet (assuming you created a new sheet in the shared doc Code-in Bulk Upload Spreadsheet) as CSV (File/Download as/CSV), but before that be sure to:
** make sure that the "categories" field is comma separated INTEGERs (see the "column definitions" sheet in Code-in Bulk Upload Spreadsheet)
** verify that your dashboard PROFILE email address is the EXACT same as what you entered in the "mentors" field in 'Code-in Bulk Upload Spreadsheet' (otherwise your uploaded tasks will have empty/missing mentor) 
List Tasks through Commandline
# see usage of list_tasks.py
#* python list_tasks.py --help
# get a list of tasks at the commandline
#* python list_tasks.py --apikey [OSGeoKey]
#** should return something like:
 5126447435874304 gvSIG: Make a .....
 5172599543824384 gvSIG: Install.....
 5702068213907456 MapServer: Find and fix ....
 5723293673848832 gvSIG: Make a ....
 5761046167945216 gvSIG: Give a talk about ....
 5762611012435968 MapServer: Design a ....
 5765029615894528 MapServer: Install ....
Upload Tasks through Commandline
# see usage of csv_uploader.py
#* python csv_uploader.py --help
# upload your csv at the commandline
#* python csv_uploader.py -v --apikey [OSGeoKey] project-tasks.csv
#** should return something like:
 OK 6030299680997376 MapServer: Give a ....
 OK 5944469725642752 MapServer: Make a ....
 OK 5765029615894528 MapServer: Install ....
 OK 5702068213907456 MapServer: Find and fix ....
 OK 5770211091283968 MapServer: Fix ....
Category:Google Code In