Skip to content

Commit

Permalink
_reports: Add yzgyyang's GSoC report
Browse files Browse the repository at this point in the history
  • Loading branch information
yzgyyang committed Aug 20, 2018
1 parent fae5891 commit 9a72147
Showing 1 changed file with 205 additions and 0 deletions.
205 changes: 205 additions & 0 deletions _reports/GuangyuanYang.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,205 @@
---
categories:
- GSoC
- 2018
- StatusReport
date: 2018-08-14
student: Guangyuan Yang
organisation: coala
organisation_link: https://coala.io
report_year: 2018
project: Go Bears on BSD
project_link: https://summerofcode.withgoogle.com/projects/#4521151787696128
tarball: https://github.com/yzgyyang/gsoc-reports/raw/master/gsoc18/GuangyuanYang-coala-gsoc18.tar.gz
sha256sum: adada78166b16d6c6c8e1107d326b3f5fb1505fa59d8f18e492b9ffa1a6f0f09
mentors: >
[Muhammad Kaisar Arkhan](https://github.com/yukiisbored),
[Andrey Safonov](https://github.com/xferra)
phase:
- Bonding: https://gitlab.com/coala/GSoC/GSoC-2018/milestones/74
- Phase 1: https://gitlab.com/coala/GSoC/GSoC-2018/milestones/64
- Phase 2: https://gitlab.com/coala/GSoC/GSoC-2018/milestones/67
- Phase 3: https://gitlab.com/coala/GSoC/GSoC-2018/milestones/73
bio: >
I am a sophomore studying Mathematics and Computer Science at the University
of Waterloo. I participated in GSoC 2018 and worked with
[coala](https://coala.io) to improve linter dependency management, the goal
of which in the duration of this year's GSoC is to have Go Linters installed
automatically on bare-metal BSD systems, with a post-GSoC goal of supporting
more platforms and more kinds of dependencies.
social:
- GitHub:
- username: yzgyyang
- link: https://github.com/yzgyyang
- GitLab:
- username: yzgyyang
- link: https://gitlab.com/yzgyyang
- Gitter:
- username: yzgyyang
- link: https://gitter.im/yzgyyang
- OpenHub:
- username: yzgyyang
- link: https://www.openhub.net/accounts/yzgyyang
email: [email protected]
blog: https://charlieyang.me/tags/#gsoc18
activity:

- 1:
- repo: projects
- link: https://github.com/coala/projects/commit/e26976aa8da0379c39a4d294ee6cb6e213db1668
- details: >
meta_review.md: go_bears_on_bsd.md: Add Go on BSD project
- 2:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/ed140c6a1d76520e38ed7d2a2ba003f0735cb000
- details: >
.gitlab-ci.yml: Fix OpenSUSE CI build breakages
- 3:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/94507b56ad0bf101fe1a8fbc7e9d502dbc1c3ea7
- details: >
DistributionRequirement.py: Add FreeBSD pkg
- 4:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/fe065becef284b84f2193e36ae417e82e1da7eff
- details: >
GoRequirement.py: Add Go packages
- 5:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/77c50517b0a47f772950bf13bff5d665389ecb52
- details: >
.ci/common.sh: move CI common setup into a script
- 6:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/3c18d1504b6f6d282fa15ae7058829aa7369aed7
- details: >
GoMetaLinterRequirement.py: Add GoMetaLinterPM
- 7:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/dd1413c9057d7f75db0e1856cfba4a3894400a35
- details: >
PkgRequirement.py: Add pkg for PlatformRequirement
- 8:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/e8ef04e33b5f00f6d751a5450e90d795a778c236
- details: >
.gitlab-ci.yml: Add FreeBSD CI configuration
- 9:
- repo: coala-utils
- link: https://gitlab.com/coala/coala-utils/commit/f0d74e8167edef7b69c3ec6ef4a8f0b3bdb13844
- details: >
Question.py: Add function to ask yes/no questions
- 10:
- repo: coala-utils
- link: https://gitlab.com/coala/coala-utils/commit/0a1000d2601f7a53b2034869cffead422d6efc1a
- details: >
Question.py: Avoid creating objects in arg default
- 11:
- repo: [personal gist]
- link: https://gist.github.com/yzgyyang/13ebb46a5c90ac624b5c6eb43deedc0d/9e5591f526917a36fcd3390d4a52901a5af1911f
- details: >
coala Bootstrap Script (Experimental)
- 12:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/3816e3d01cd2418941f23001b95027511ac58e95
- details: >
.gitlab-ci.yml: Move php-pear into common packages
- 13:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/ab1ee3d40d8c3f5b64055d9520e0b8bbdd88b604
- details: >
tests/: Use sys.executable for testing executables
- 14:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/c94cd416ab03c5838edd7ff0099350233df9eac2
- details: >
.gitlab-ci.yml: Pin ghc version to fix build
- 15:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/ec7e9fd0a855df299596c72a73bdefd1b7bc1202
- details: >
.gitlab-ci.yml: Avoid copying exec into /usr/bin
- 16:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/commit/c9a42579caf278faf4849ca00e9f64f3a58b960b
- details: >
.gitlab-ci.yml: Use pip as a Python module
- 17:
- repo: dependency_management
- link: https://gitlab.com/coala/package_manager/merge_requests/152/diffs?commit_id=29306af9e0aadd5117e764496828171c3250b380
- details: >
[Merge Request] Demonstration of recursive installation
---

### Go Bears on BSD

#### Work Done

Support for FreeBSD and Go packages have been added to
[`dependency_management`](https://gitlab.com/coala/package_manager), the
working repo. The GitLab-based Continuous Integration (CI) config has been
enhanced. An official FreeBSD CI server is up, and all supported tests are now
also running on BSD.

`dependency_management` tool is now capable of recursively resolving
dependencies down to the system level, with some implementations still under
investigation/review. Based on this feature, I implemented a
[script](https://gist.github.com/yzgyyang/13ebb46a5c90ac624b5c6eb43deedc0d) to
demonstrate the ability of bootstrapping coala Go bears on a bare-metal FreeBSD
system
([Screen record for the demo](https://asciinema.org/a/0poVbHE7lqehV4islFo6cptjb)),
and it can be expanded to support multiple platforms.

Further design and implementation issues have been identified and logged.

Aside from the project, I got myself involved in the community by reporting and
solving issues across the coala and coala-bears repo and also in upstream
projects. I also did code review and helped other newcomers get onboard.

#### Challenges

Most tasks went smoothly. The FreeBSD CI part is challenging, since such
infrastructure doesn't exist before, and thus it takes a lot of time to do
experiments and testing to make things right.

The end goal of this project is open-ended while the timeframe is limited,
which I found to be the most challenging part of the project. Aside from the
actually coding part, I spent much time and energy exploring different package
management tools, and communicating with my mentors and maintainers of related
internal projects, in order to find the best design choices.

#### Work to be done

The FreeBSD CI could be improved by adding a new runner
[upstream](https://gitlab.com/gitlab-org/gitlab-runner/issues/3358).

Support for more BSDs and more bears could be implemented, and more design
documents should be logged.

The concept of recursively installation on Unix-like platforms is proved, but
the actual inplementation of such feature requires more discussion about the
design in a longer timeframe. I plan to continue following up on this in the
future.

Resolving dependencies using Repology metadata is a nice addition to the
project. It was planned to be implemented in accordance with the
[Automation of Dependency Management using Repology](https://projects.coala.io/#/projects?project=automation_of_dependency_management_using_repology&lang=en)
project, but this part seems to be stale at the moment.

0 comments on commit 9a72147

Please sign in to comment.