├── .github └── dco.yml ├── .gitignore ├── CODEOWNERS ├── CODE_OF_CONDUCT.md ├── LICENSE.md ├── README.md ├── communication ├── README.md ├── donut.md └── slack_channels.md ├── developer-community ├── README.md ├── events-list.md ├── events.md ├── fix-DCO.md ├── optimizing-png.md └── tech-talks.md ├── engineering ├── README.md ├── continuous-delivery.md ├── conventions.md ├── conventions │ ├── go.md │ ├── python.md │ └── scala.md ├── documentation.md ├── documents │ ├── CONTRIBUTING.md │ ├── DCO │ ├── ISSUE_TEMPLATE.md │ ├── README.tmpl.md │ ├── apache │ │ └── LICENSE │ ├── cc-by-sa │ │ └── LICENSE │ └── gpl │ │ └── LICENSE ├── git-flow.md ├── images │ ├── git-flow-app-source.js │ ├── git-flow-app.png │ ├── release-branch.png │ └── workflow.png ├── licensing.md ├── maintainers.md ├── manuals │ └── gnome2unity │ │ ├── button.png │ │ ├── date.png │ │ ├── ext.png │ │ ├── gnome2unity.md │ │ └── screen.png ├── methodology.md ├── project-template │ ├── .github │ │ └── ISSUE_TEMPLATE.md │ ├── DCO │ ├── LICENSE.md.apache │ ├── LICENSE.md.cc-by-sa │ ├── LICENSE.md.gpl │ ├── MAINTAINERS │ ├── NOTICE.md.apache │ ├── NOTICE.md.gpl │ ├── README.md │ └── docs │ │ ├── CODE_OF_CONDUCT.md │ │ └── CONTRIBUTING.md ├── releases.md ├── repositories.md ├── teams │ ├── methodology-infrastructure.md │ ├── methodology-language-analysis.md │ ├── methodology-ml.md │ └── methodology.md └── workflow.md ├── general ├── available_hardware.md ├── company_wide_meeting.md ├── culture.md ├── expenses_travel.md ├── investors_board_advisors.md ├── organizational_legal_structure.md ├── product.md ├── roadmap.md ├── tools.md └── wifi.md ├── img └── brave.png ├── office ├── README.md ├── books_list.md ├── company_events.md ├── get_together_history.md ├── madrid_office_seating_chart.md └── ubuntu_wireless_scan.md ├── product ├── design-documents.md └── graphic-design-guide.md ├── remote ├── images │ ├── remote_screenshot_1.png │ └── remote_screenshot_2.png ├── remote_guidelines.md └── video-conferencing.md └── talent ├── README.md ├── application-process.md ├── by-developers-training ├── README.md └── arch-linux-setup.md ├── career_development.md ├── contract.md ├── engineering-teams-description.md ├── esop.md ├── flexible_holidays_working_schedule_remote_work.md ├── hiring_process.md ├── images ├── teams.png └── teams_comm.png ├── job-descriptions ├── company-section.md ├── culture-section.md ├── engineering-section.md ├── location-seniority-section.md ├── madrid-location-seniority-section.md ├── ml-engineering-section.md ├── offers │ ├── applications.md │ ├── data-processing.md │ ├── data-retrieval.md │ ├── devrel-sf.md │ ├── language-analysis.md │ ├── lead-applications.md │ ├── lead-infrastructure.md │ ├── ml-intern.md │ ├── ml-senior.md │ ├── senior-pm-sf.md │ ├── solutions.md │ └── test-senior.md ├── other-section.md ├── perks-section.md └── sf-location-seniority-section.md ├── offboarding.md ├── onboarding ├── Non-EU_residents.md ├── README.md ├── eu_residents.md └── spanish_residents.md ├── one_on_one_guide.md ├── open_source_days.md ├── relocation_expenses.md ├── sourcerers ├── README.md ├── dpordomingo.md ├── eiso.md ├── erizocosmico.md ├── gomesfernanda.md ├── jorgeschnura.md ├── juanjo.md ├── mcuadros.md ├── meyskens.md ├── questions.md ├── rkeramitas.md ├── rporres.md ├── se7entyse7en.md ├── smola.md ├── tsolakoua.md └── vmarkovtsev.md └── wage_policy.md /.github/dco.yml: -------------------------------------------------------------------------------- 1 | require: 2 | members: false 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | # default 2 | * @jorgeschnura 3 | 4 | # sections 5 | developer-community/* @campoy 6 | engineering/* @mcuadros 7 | office/* @estherrgarcia 8 | talent/* @bluer73 9 | product/* @marnovo -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | education, socio-economic status, nationality, personal appearance, race, 10 | religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at conduct@sourced.tech. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # source{d} guide 2 | 3 | Welcome! The source{d} guide documentation is where you will find all information relevant for sourcerers (source{d} team members) and anyone interested in who we are, what we do, and how we do it. 4 | 5 | This documentation is open to everyone, sourcerers and non-sourcerers. So please feel free to suggest improvements or ask questions via [issues](https://github.com/src-d/guide/issues), or directly open a [pull request](https://github.com/src-d/guide/pulls) suggesting changes or reviewing those of someone else. 6 | 7 | We try to put as much information here as possible, in the rare cases that a topic should be private within the company, please redirect to [src-d/company](https://github.com/src-d/company/). 8 | 9 | * General 10 | * Mission & Vision 11 | * Roadmap 12 | * [Culture](general/culture.md) 13 | * [Product](general/product.md) 14 | * [Organizational & Legal Structure](general/organizational_legal_structure.md) 15 | * [Investors, Board of Directors and Advisors](general/investors_board_advisors.md) 16 | * Leadership 17 | * [Objectives & Key Results (OKRs)](https://github.com/src-d/okrs) 18 | * [Company Wide Meeting](general/company_wide_meeting.md) 19 | * [Remote Guidelines](remote/remote_guidelines.md) 20 | * [Tools](general/tools.md) 21 | * [Hardware](general/available_hardware.md) 22 | * Security 23 | * [Expenses & Travel](general/expenses_travel.md) 24 | * [WiFi](general/wifi.md) 25 | * [Office](office/) 26 | * [Talent](talent/) 27 | * [Engineering](engineering/) 28 | * [Developer Community](developer-community/) 29 | * Product 30 | * [Design Documents](product/design-documents.md) 31 | * [Design and Branding](https://github.com/src-d/design) 32 | * [Graphic Design Guide](product/graphic-design-guide.md) 33 | * Communication 34 | * [Slack channels](communication/slack_channels.md) 35 | * Financials 36 | 37 | 38 | # Contribute 39 | 40 | [Contributions](https://github.com/src-d/guide/issues) are more than welcome, if you are interested please take a look to 41 | our [Contributing Guidelines](engineering/documents/CONTRIBUTING.md). 42 | 43 | 44 | # Code of Conduct 45 | 46 | All activities under source{d} projects are governed by the [source{d} code of conduct](.github/CODE_OF_CONDUCT.md). 47 | 48 | 49 | # License 50 | 51 | This work is licensed under a Creative Commons — Attribution-ShareAlike 4.0 International License. See [LICENSE](./LICENSE.md). 52 | -------------------------------------------------------------------------------- /communication/README.md: -------------------------------------------------------------------------------- 1 | ### Communication 2 | 3 | **Maintainer:** [@jorgeschnura](https://github.com/jorgeschnura) 4 | 5 | * [Slack channels](slack_channels.md) 6 | * [Donut bot](donut.md) is an Slack app to create informal and random conversations between people 7 | -------------------------------------------------------------------------------- /communication/donut.md: -------------------------------------------------------------------------------- 1 | # Donut 2 | 3 | One potential downside of being a remote company is that sourcerers don't have as many opportunities to have sporadic, informal conversations to get to know each other better. 4 | 5 | In order to solve this partially, we use [Donut for Slack](https://www.donut.ai/pairing). Donut is a Slack app that will match you up with someone from the company every two weeks to have a videocall or to meet in the Kitchen of the Madrid or SF office. This provides the opportunity for people to get to know each other better. 6 | 7 | All you have to do to opt-in is join the `#sourcerers-matchup` channel and you will get an invite for every Monday at 10:00AM. It's the perfect time to also talk about the weekend ;) 8 | -------------------------------------------------------------------------------- /communication/slack_channels.md: -------------------------------------------------------------------------------- 1 | # Slack Channels 2 | 3 | Please find a list here of Slack channels at source{d}. 4 | 5 | Slack channels are encouraged to be open to all sourcerers to join. Private channels for professional reasons are highly discouraged (have fun with private personal slack channels). We encourage people to have discussions in open/public channels rather than direct messages when the information is relevant to multiple people for a limited amount of time. If a piece of information should be preserved, it should always go to the guide or company repo. 6 | 7 | ### General channels 8 | 9 | * `#general` 10 | * Company-wide announcements, company-related or generally important topics 11 | * `#offtopic` 12 | * Almost anything goes, the place to share interesting or funny things and keep other channels clean and on topic 13 | * `#officechat` 14 | * Physical office related discussions (SF & Madrid) 15 | * `#offtopic-` 16 | * Targeted offtopic channels. Search in Slack for #offtopic- and you'll find different offtopic channels like #offtopic-music 17 | * `#osd` 18 | * `#osd` stands for [Open Source Days](../talent/open_source_days.md); people share what they'll be working on during their OSD and share the results/demos 19 | * `#twitter` 20 | * Source{d} mentions and tweets 21 | 22 | ### Team channels 23 | 24 | * `#eng-team` 25 | * `#product-team` 26 | * `#devrel` 27 | * `#dev-infrastructure` 28 | * `#dev-retrieval` 29 | * `#dev-language-analysis` 30 | * `#dev-machine-learning` 31 | * `#dev-applications` 32 | 33 | ### Daily standup channels 34 | 35 | This is where the daily standups happen. 36 | 37 | * `#su-general` 38 | * For those of us whose team is too small to warrant their own channel 39 | * `#su-management` 40 | * `#su-product` 41 | * `#su-infrastructure` 42 | * `#su-data-retrieval` 43 | * `#su-language-analysis` 44 | * `#su-machine-learning` 45 | * `#su-applications` 46 | 47 | ### Public channels that are shared with the community slack 48 | 49 | Anyone can join [here](http://bit.ly/src-d-community) 50 | 51 | * `#community-general` 52 | * General discussions around Machine Learning on Source Code (MLoSC) and announcements 53 | * `#machine-learning` 54 | * ML specific discussions 55 | * `#babelfish` 56 | * For users and developers of Babelfish 57 | * `#go-git` 58 | * For users and developers of go-git 59 | 60 | ### Other 61 | 62 | * `#design` 63 | * Give your input on visual/UX design at source{d} 64 | * `#leads` 65 | * Where the leads are having discussions 66 | * `#brewing` 67 | * [source{d} made beer](https://github.com/src-d/homebrew) 68 | * `#spanish` 69 | * For those learning Spanish 70 | * `#developer-training` 71 | * For those going through the "by developers" training 72 | * `#python` 73 | * Oriented towards those learning Python but also general interesting Python news 74 | * `#goodtalks` 75 | * A place to share good tech talks somehow related to what we do at source{d} 76 | * `#sourcerers-matchup` 77 | * [Join](https://github.com/src-d/guide/blob/master/communication/donut.md) it to be paired with a sourcerer every two weeks for an informal chat to get to know each other better 78 | 79 | ### Private channels 80 | 81 | * `management` 82 | * Where the management team holds private discussions 83 | * `data-intelligence` 84 | * Sensitive data is sometimes shared here, could be made public in the future 85 | -------------------------------------------------------------------------------- /developer-community/README.md: -------------------------------------------------------------------------------- 1 | ### Developer Community 2 | 3 | **Maintainer:** [@campoy](https://github.com/campoy) 4 | 5 | * [Tech Talks](tech-talks.md) 6 | * [Events Guidelines](events.md) 7 | * [Events List](events-list.md) 8 | * [Conferences CFP's](https://github.com/src-d/conferences/issues) 9 | * [Engineering Blog](https://blog.sourced.tech) 10 | * [Company Blog](https://medium.com/source-d) -------------------------------------------------------------------------------- /developer-community/events.md: -------------------------------------------------------------------------------- 1 | # Community Events 2 | 3 | ## source{d} tech talks 4 | 5 | Our tech talks are one-day conferences held in Madrid at our offices, or elsewhere, where we invite up to 7-8 speakers to talk to us about a very advanced topic related with Infrastructure, Machine Learning, Frontend & more (suggestions are always more than welcome)! 6 | You can check all past events [here](http://talks.sourced.tech/) and all talks, as we record everything. 7 | 8 | When we organize such events, we expect the team which is closer to the topic of the event to closely help in organizing it. That means that for Frontend, for example, the entire platform team is responsible for choosing and inviting the speakers, approving their talks and hosting the event on its actual day (exceptions will exist of course, but this would be the ideal case). 9 | 10 | The Community team will however support all the speakers logistics, the venue, F&B, promotion materials, sponsors, communication and social media, etc. 11 | 12 | These events usually count around 100 attendees. 13 | 14 | 15 | ## Meetups at the office 16 | 17 | Thanks to Maximo, we host the [GoMAd](https://www.meetup.com/es-ES/go-mad/) meetup on a monthly basis here at the office! 18 | 19 | On a less frequent basis, we host any meetup that asks us to - if you know anyone looking for a venue for a <75 people event feel free to suggest the back of our office. Besides, depending on the occasion, we'd be happy to sponsor drinks and pizzas/snacks for them too! 20 | 21 | 22 | ## Beer Payback's 23 | 24 | As we try to aim for consistency, we are calling any conference side events 'beer payback'. It's not the best name, and suggestions, again, are welcome, but it's what we have at the moment. 25 | 26 | Beer paybacks are usually events that we organize abroad, next to conferences that the team is attending and whose crowd would be great to engage closely with. We've done so at: 27 | - FOSDEM, Brussels 28 | - MSR, Buenos Aires 29 | 30 | 31 | ### Besides the above three types of events we help organize, we're always on the lookout for CFP to submit and get anyone from the team speaking at third-party events that could be interesting to reach out to and attend. This is strongly encouraged from anyone in the team and something that we cover expenses for (if said conference doesn't already). 32 | -------------------------------------------------------------------------------- /developer-community/optimizing-png.md: -------------------------------------------------------------------------------- 1 | # How to optimize the size of PNG images like a pro 2 | 3 | PNG algorithm roughly consists of two steps: 4 | 5 | 1. Apply one of five specialized filters to each line. 6 | 2. Compress with DEFLATE (used in e.g. gzip). 7 | 8 | It is possible to dramatically (2-5x) reduce the size of a PNG file produced in a conventional image editor. 9 | The trick is to run it through the following pipeline: 10 | 11 | 1. [`pngquant`](https://pngquant.org/) gives up to 80% less. 12 | 2. [`optipng`](http://optipng.sourceforge.net/) gives another 1-5%. 13 | 3. [`zopflipng`](https://github.com/google/zopfli) further gives 5-10%. 14 | 15 | ### Installation 16 | 17 | Ubuntu 18.10+: 18 | 19 | ``` 20 | apt install pngquant optipng zopfli 21 | ``` 22 | 23 | Ubuntu 18.04: 24 | 25 | ``` 26 | apt install pngquant optipng 27 | wget http://es.archive.ubuntu.com/ubuntu/pool/universe/z/zopfli/zopfli_1.0.2-1_amd64.deb 28 | dpkg -i zopfli_1.0.2-1_amd64.deb 29 | ``` 30 | 31 | macOS: 32 | ``` 33 | brew install pngquant optipng zopfli 34 | ``` 35 | 36 | ### Pipeline example 37 | 38 | ``` 39 | pngquant -f img.png -o img.png 40 | optipng -o7 img.png 41 | zopflipng -ym img.png img.png 42 | ``` 43 | 44 | ### How it works 45 | 46 | `pngquant` simplifies the image, thus making it more PNG compression-friendly. It is a lossy transform, however there are no nasty artifacts and you are not going to see any difference. Really, I mean it. Even on fine structures like text or thin lines. 47 | `optipng` optimizes the PNG filters. It is hard: imagine that you've got an image of 100px height. Each line has 5 choices, so the overall number of possibilities is 5^100 - that's a HUGE number. No way you can brute force such. 48 | `zopflipng` works on the DEFLATE level. It is a clever multipass DEFLATE implementation which is 100 times slower than the usual one. 49 | -------------------------------------------------------------------------------- /engineering/README.md: -------------------------------------------------------------------------------- 1 | # Engineering 2 | 3 | **Maintainer:** [@mcuadros](https://github.com/mcuadros) 4 | 5 | ## Must read 6 | 7 | * [Methodology](methodology.md) 8 | * [Workflow](workflow.md) 9 | 10 | ## Key Concepts 11 | 12 | * [Repositories](repositories.md) 13 | * [Releases](releases.md) 14 | * [Git workflow](git-flow.md) 15 | * [Development Conventions](conventions.md) 16 | * [Continuous Delivery](continuous-delivery.md) 17 | * [Documentation Guide](documentation.md) 18 | * [Template for New Projects](project-templates/) 19 | * [Licensing Policy](licensing.md) 20 | * [Other Documents](documents/) 21 | 22 | ## Per Team 23 | 24 | * [Methodology: Kanban](teams/methodology.md) 25 | * [Methodology: Language Analysis Team](teams/methodology-language-analysis.md) 26 | * [Methodology: Infrastructure Team](teams/methodology-infrastructure.md) 27 | -------------------------------------------------------------------------------- /engineering/continuous-delivery.md: -------------------------------------------------------------------------------- 1 | Web application deployment workflow. 2 | ==== 3 | 4 | 5 | 6 | - [Intro](#intro) 7 | - [Quick summary:](#quick-summary) 8 | - [branches](#branches) 9 | - [Continuous delivery](#continuous-delivery) 10 | - [General workflow](#general-workflow) 11 | - [Deploying into Production](#deploying-into-production) 12 | - [special cases](#special-cases) 13 | - [Release branch](#release-branch) 14 | - [Exceptions](#exceptions) 15 | - [Deploying into Staging](#deploying-into-staging) 16 | 17 | 18 | 19 | # Intro 20 | 21 | This documentation assumes the [company deployment workflow](git-flow.md) is already known, and extends it to cover the continuous delivery as it should work for all source{d} web applications: 22 | 23 | repo | Prod | Staging 24 | --- | --- | --- 25 | [src-d/landing](https://github.com/src-d/landing) | [sourced.tech](https://sourced.tech) | [landing-staging.srcd.run](https://landing-staging.srcd.run) 26 | 27 | This document does not pretend to be exhaustive but as just a guide, and there can be special cases that will be defined in the README.md and CONTRIBUTING.md of each web application repository. 28 | 29 | This document is based on the agreements of the [2017-10-23 CD workflow](https://github.com/src-d/minutes/blob/master/infrastructure/2017-10-23-landing-cd-workflow.md) and [2017-10-26 Enforcing the CD workflow](https://github.com/src-d/minutes/blob/master/infrastructure/2017-10-26-enforcing-cd-workflow.md) meetings. 30 | 31 | # Quick summary: 32 | 33 | Here are the technical details of when CI or CD runs, but you need to know and understand the guides and conventions explained below this section. 34 | 35 | ## branches 36 | - `master` branch must always be production ready and will reflect the code deployed into Production. 37 | - there are no long-term branches but `master`, 38 | - `staging` branch must not be merged into other branches, 39 | - `staging` branch should be kept as close to master as possible, 40 | 41 | ## Continuous delivery 42 | CI and CD is controlled [by drone](https://drone.srcd.host) 43 | 44 | - It is automatically deployed into Production when something is tagged, 45 | - it is automatically deployed into Staging when the `src-d:staging` branch is updated, 46 | - CI automatically runs when a PR against `master` or a `release/*` branch is created or updated with new commits. 47 | 48 | 49 | # General workflow 50 | 51 | `master` branch must "always" be production ready. 52 | 53 | `master` branch will contain only approved commits through a PR. 54 | 55 | `master` branch is the starting point for feature branches (considering some [special cases](#special-cases)) 56 | 57 | Since the workflow in the source{d} web applications used to be closely guided by Product, it is quite likely that it is needed to obtain its approval before merging into `master`; the repository [Maintainers](repositories.md) will decide if any PR must be reviewed by Product, by themselves or by any other person. 58 | 59 | # Deploying into Production 60 | 61 | The deployment of the source{d} web applications is done [by drone](https://drone.srcd.host) when a commit is tagged. 62 | 63 | To tag something –and deploy– something, we follow the following conventions: 64 | 65 | - All tags must follow [Semantic Versioning 2](http://semver.org), 66 | - All tags must be reachable from `master` branch, 67 | - Tags must be done from a merge commit into `master` branch, 68 | - Every time something is merged into master, there must be a tag pointing to that merge; 69 | 70 | ## special cases 71 | 72 | ### Release branch 73 | ![release branch](images/release-branch.png) 74 | 75 | When it is needed to merge many PRs and deploy only the last one (for example during a redesign), the feature branches will be created from a release branch, and merged into that same branch. 76 | 77 | The release branches will be named with the pattern `release/__TAG_NAME__` being `__TAG_NAME__` the expected tag name that will be given when the release branch has been approved and merged into master. 78 | 79 | ### Exceptions 80 | 81 | There can be some special exceptions that would require merging into master some PRs consecutively, and only to tag the last one; when it is needed to proceed that way, only a few minutes should elapse between the first commit –not being tagged–, and the last one –being tagged–. 82 | 83 | # Deploying into Staging 84 | 85 | Whenever `staging` branch is updated, [drone](https://drone.srcd.host) automatically deploys it to Staging environment. 86 | 87 | `staging` branch is not a long-term branch, so it should be kept as close to `master` as possible. 88 | 89 | The project maintainer and team members working with that project will decide when `staging` should be reset to `master` or a `release/*` branch, considering its current state and other features that could be tested in Staging. 90 | 91 | Since the `staging` branch contains commits not approved, those ones must be kept outside from `master` or any other branch that could be merged against `master` –like release or feature branches–. Due to the necessity of keeping that risk as low as possible, it can be taken as a general rule that `staging` branch must not be merged into any branch –neither into the remote `src-d:staging`–. 92 | -------------------------------------------------------------------------------- /engineering/conventions/go.md: -------------------------------------------------------------------------------- 1 | 2 | # Go Development Conventions 3 | 4 | ## Introduction 5 | 6 | This guide documents development conventions for Go at source{d}. Check [general conventions](conventions.md) for language-independent conventions that are also applicable for Go projects. 7 | 8 | ## Supported Go Versions 9 | 10 | * Our **libraries** support latest two stable major versions of Go (currently: 1.11.x and 1.12.x). Both versions should be included in Travis CI. 11 | * Some of our libraries may support more versions, specially when there is wide-adoption outside source{d}, (e.g. [go-git](https://github.com/src-d/go-git) which currently supports three. 12 | * Our **applications** support only latest [stable](https://golang.org/dl/#stable) Go version (1.12.x). 13 | 14 | ## Dependency Management 15 | 16 | * If your project is a **library**: 17 | * Use [gopkg.in](http://labix.org/gopkg.in) to provide versioned imports. 18 | * If your project is an **application**: 19 | * Use [modules](https://github.com/golang/go/wiki/Modules) to manage dependencies. 20 | * Do not check in the `vendor` directory into git. 21 | 22 | ## Build System 23 | 24 | * If your project requires fetching or building dependencies, implement that in the `dependencies` rule. 25 | * If binaries can be built, do so in the `packages` rule. Note that [src-d/ci](https://github.com/src-d/ci) provides that rule by default. 26 | 27 | ## Code Generation 28 | 29 | * All generated code should be always processed by `gofmt`. 30 | * Generated code should have a `// Code generated ... DO NOT EDIT.` comment before the package clause, but not attached to it (see [convention](https://github.com/golang/go/issues/13560#issuecomment-288457920)). 31 | 32 | ## Docker 33 | 34 | * If you use alpine-based images, your binaries need to be built with `CGO_ENABLED=0`. [src-d/ci](https://github.com/src-d/ci/) does this by default. If your project uses `cgo`, you will have to use alpine for the build of binaries for Docker. 35 | 36 | ## Testing 37 | 38 | * Use [testify](https://github.com/stretchr/testify). 39 | * Use [suites](https://github.com/stretchr/testify#suite-package) to share setup/teardown code among related tests. When testing multiple methods of the same struct, you generally want to start with a suite. Some cases, such as table-driven tests, are better handled with [subtests](https://blog.golang.org/subtests) though. 40 | 41 | ## Error handling 42 | 43 | * Use [src-d/go-errors](https://github.com/src-d/go-errors). 44 | 45 | ## Logging 46 | 47 | * Use logging in your applications. 48 | * Use [src-d/go-log](https://github.com/src-d/go-log). 49 | 50 | ## Other libraries 51 | 52 | * We use protobuf extensively and [gogo](https://github.com/gogo/protobuf) is our preferred library. 53 | 54 | ## Best Practices 55 | 56 | * Use `gofmt`, `goimports`, `go vet`. 57 | * Follow community well-established best practices: [Effective Go](https://golang.org/doc/effective_go.html) and [Go Code Review Comments](https://github.com/golang/go/wiki/CodeReviewComments). 58 | * Sourcerers use additional linters such as [golint](https://github.com/golang/lint) and [megacheck](https://github.com/dominikh/go-tools/tree/master/cmd/megacheck). 59 | 60 | ### Group code blocks with blank lines 61 | 62 | In order to improve readability, we use single blank lines to separate logic blocks of code inside functions. 63 | 64 | A blank line is usually added after the end of any control structure, too. 65 | 66 | ### Naming 67 | 68 | * Prefer full names (e.g. `Repository`, not `Repo`). 69 | 70 | ## CLI 71 | 72 | * Put sources for your executable commands in `cmd//`, with the `main` function in `cmd//main.go`. 73 | * We use [go-flags](https://github.com/jessevdk/go-flags) extensively for CLI options parsing. 74 | * Implement commands in a subpackage ([example](https://github.com/src-d/gitbase/blob/master/cmd/gitbase/command/server.go)). 75 | 76 | ## Configuration 77 | 78 | * Use environment variables for configuration. 79 | * You can use the [envconfig](https://github.com/kelseyhightower/envconfig) package to parse the environment into a configuration struct. 80 | -------------------------------------------------------------------------------- /engineering/conventions/python.md: -------------------------------------------------------------------------------- 1 | 2 | # Python Development Conventions 3 | 4 | ## Introduction 5 | 6 | This guide documents development conventions for Python at source{d}. Check [general conventions](../conventions.md) for language-independent conventions that are also applicable for Python projects. 7 | 8 | ## Code Style 9 | 10 | 1. Contributing to existing projects - do not change the style. 11 | 2. [PEP8](https://www.python.org/dev/peps/pep-0008/) with 99 char line length limit. 12 | 3. Class methods order: first public, then protected (`_`), then private (`__`) 13 | 4. Use double quotes `"`. When a string contains single or double quote characters, however, use the other one to avoid backslashes in the string. 14 | 5. Favor `%` to `format()`. Although `format()` is generally considered as a replacement, it is much slower and the other languages stick to the `printf` syntax. As with the double quotes, we therefore reduce the friction with Go switches. 15 | 6. Do not use single letter argument names; use X and Y only in sklearn context. 16 | 7. Use [Sphinx style](https://devguide.python.org/documenting/#style-guide) for docstrings. 17 | 8. Format of TODO and FIXME: `# TODO(mygithubuser): blah-blah-blah`. 18 | 19 | ## CLI 20 | 21 | * Use standard [argparse](https://docs.python.org/3/library/argparse.html). 22 | -------------------------------------------------------------------------------- /engineering/conventions/scala.md: -------------------------------------------------------------------------------- 1 | 2 | # Scala Development Conventions 3 | 4 | ## Introduction 5 | 6 | This guide documents development conventions for Scala at source{d}. Check [general conventions](conventions.md) for language-independent conventions that are also applicable for Scala projects. 7 | 8 | ## Supported Scala and JVM Versions 9 | 10 | Given that most of our Scala projects are related to [Apache Spark](https://spark.apache.org/), our compatibility policy is closely related to it. 11 | 12 | * Actively support Java 8. Java 9 on a best-effort basis. 13 | * Support Scala 2.11. 14 | 15 | ## Build System 16 | 17 | * Use [sbt](https://www.scala-sbt.org/). 18 | * Include an sbt wrapper in the top-level directory (e.g. [paulp/sbt-extras](https://github.com/paulp/sbt-extras)). 19 | * Use [sbt-assembly](https://github.com/sbt/sbt-assembly) if fat jars are required. 20 | * You can use [coursier](https://github.com/coursier/coursier) for faster dependency downloading. 21 | * Integrate code coverage and scalastyle check in your sbt build files. 22 | 23 | ## Publishing 24 | 25 | * Artifacts should be published to Maven Central under the `tech.sourced` organization. 26 | 27 | ## Testing 28 | 29 | * Use [scalatest](http://www.scalatest.org/). 30 | * Prefer [FlatSpec](http://www.scalatest.org/user_guide/selecting_a_style) style. 31 | * Add the `Spec` suffix to test file names. 32 | 33 | ## Logging 34 | 35 | * If working with Spark, you might use `org.apache.spark.internal.Logging`. 36 | * [slf4j](https://www.slf4j.org/) otherwise. 37 | 38 | ## Code Style 39 | 40 | We do not have a fully standardized style for our Scala projects. However, they all stay close to [default scalastyle config](http://www.scalastyle.org/scalastyle_config.xml) with either 100 or 120 maximum line length. You may want to use [scalafmt](http://scalameta.org/scalafmt/) for automatic formatting too. 41 | 42 | ## Best Practices 43 | 44 | * [Effective Scala](http://twitter.github.io/effectivescala/) is a good summary of best practices you should follow. 45 | 46 | ## CLI 47 | 48 | * Most of our applications are in the form of Spark jobs meant to be used with `spark-submit`. 49 | * For standalone CLI, you can check [scopt](https://github.com/scopt/scopt) which we have used in some projects and is a good fit. 50 | 51 | ## Configuration 52 | 53 | * If you are creating a Spark application, use environment variables for configuration that might change on the workers (e.g. URI of some backing service that is co-located with workers) and Spark configuration for settings that need to be consistent across all workers for a given job. 54 | -------------------------------------------------------------------------------- /engineering/documents/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # source{d} Contributing Guidelines 2 | 3 | source{d} projects accept contributions via GitHub pull requests. 4 | This document outlines some of the 5 | conventions on development workflow, commit message formatting, contact points, 6 | and other resources to make it easier to get your contribution accepted. 7 | 8 | ## Certificate of Origin 9 | 10 | By contributing to this project, you agree to the [Developer Certificate of 11 | Origin (DCO)](DCO). This document was created by the Linux Kernel community and is a 12 | simple statement that you, as a contributor, have the legal right to make the 13 | contribution. 14 | 15 | In order to show your agreement with the DCO you should include at the end of the commit message, 16 | the following line: `Signed-off-by: John Doe `, using your real name. 17 | 18 | This can be done easily using the [`-s`](https://github.com/git/git/blob/b2c150d3aa82f6583b9aadfecc5f8fa1c74aca09/Documentation/git-commit.txt#L154-L161) flag on the `git commit`. 19 | 20 | If you find yourself pushed a few commits without `Signed-off-by`, you can still add it afterwards. We wrote a manual which can help: [fix-DCO.md](https://github.com/src-d/guide/blob/master/developer-community/fix-DCO.md). 21 | 22 | ## Support Channels 23 | 24 | The official support channels, for both users and contributors, are: 25 | 26 | - GitHub issues: each repository has its own list of issues. 27 | - Slack: join the [source{d} Slack](https://join.slack.com/t/sourced-community/shared_invite/enQtMjc4Njk5MzEyNzM2LTFjNzY4NjEwZGEwMzRiNTM4MzRlMzQ4MmIzZjkwZmZlM2NjODUxZmJjNDI1OTcxNDAyMmZlNmFjODZlNTg0YWM) community. 28 | 29 | *Before opening a new issue or submitting a new pull request, it's helpful to 30 | search the project - it's likely that another user has already reported the 31 | issue you're facing, or it's a known issue that we're already aware of. 32 | 33 | 34 | ## How to Contribute 35 | 36 | Pull Requests (PRs) are the main and exclusive way to contribute code to source{d} projects. 37 | In order for a PR to be accepted it needs to pass this list of requirements: 38 | 39 | - The contribution must be correctly explained with natural language and providing a minimum working example that reproduces it. 40 | - All PRs must be written idiomaticly: 41 | - for Go: formatted according to [gofmt](https://golang.org/cmd/gofmt/), and without any warnings from [go lint](https://github.com/golang/lint) nor [go vet](https://golang.org/cmd/vet/) 42 | - for other languages, similar constraints apply. 43 | - They should in general include tests, and those shall pass. 44 | - If the PR is a bug fix, it has to include a new unit test that fails before the patch is merged. 45 | - If the PR is a new feature, it has to come with a suite of unit tests, that tests the new functionality. 46 | - In any case, all the PRs have to pass the personal evaluation of at least one of the [maintainers](MAINTAINERS) of the project. 47 | 48 | 49 | ### Format of the commit message 50 | 51 | Every commit message should describe what was changed, under which context and, if applicable, the GitHub issue it relates to: 52 | 53 | ``` 54 | plumbing: packp, Skip argument validations for unknown capabilities. Fixes #623 55 | ``` 56 | 57 | The format can be described more formally as follows: 58 | 59 | ``` 60 | : , . [Fixes #] 61 | ``` 62 | -------------------------------------------------------------------------------- /engineering/documents/DCO: -------------------------------------------------------------------------------- 1 | ../project-template/DCO -------------------------------------------------------------------------------- /engineering/documents/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ../project-template/.github/ISSUE_TEMPLATE.md -------------------------------------------------------------------------------- /engineering/documents/README.tmpl.md: -------------------------------------------------------------------------------- 1 | ![logo if any exists](path/to/logo) 2 | 3 | ``` 4 | A row of badges you might consider necessary. 5 | Examples include: 6 | 7 | - godoc reference: 8 | 9 | [![GoDoc](https://godoc.org/gopkg.in/src-d/go-git.v4?status.svg)](https://godoc.org/github.com/src-d/go-git) 10 | 11 | - build status: 12 | 13 | [![Build Status](https://travis-ci.com/src-d/go-git.svg)](https://travis-ci.com/src-d/go-git) 14 | [![Build status](https://ci.appveyor.com/api/projects/status/nyidskwifo4py6ub?svg=true)](https://ci.appveyor.com/project/mcuadros/go-git) 15 | 16 | - code coverage: 17 | 18 | [![codecov](https://codecov.io/gh/src-d/go-git/branch/master/graph/badge.svg)](https://codecov.io/gh/src-d/go-git) 19 | 20 | - go report: 21 | 22 | [![Go Report Card](https://goreportcard.com/badge/github.com/src-d/go-git)](https://goreportcard.com/report/github.com/src-d/go-git) 23 | 24 | - stability of the project 25 | 26 | ![stable](https://svg-badge.appspot.com/badge/stability/stable?a) 27 | ``` 28 | 29 | # Project Name 30 | 31 | ``` 32 | Short description of the project. 33 | 34 | Should mention the kind of project this is (library, demo, tool, etc.) and 35 | the current [stability status](https://www.npmjs.com/package/stability-badges). 36 | 37 | Consider adding screencasts or screenshots when they help understand the project. 38 | GIFs can give a very good in-place representation of the tool in action. 39 | See [sqle/gitquet](https://github.com/sqle/gitquery) for an example. 40 | ``` 41 | 42 | # Installation 43 | 44 | ``` 45 | Short installation guide or link to longer installation instructions. 46 | This should include a pre-requisites subsection if needed. 47 | 48 | Are there Docker images, packages managers (brew, apt, etc), installations scripts? 49 | ``` 50 | 51 | # Example of utilization 52 | 53 | ``` 54 | Basic example or link to an `examples` directory with its own `README.md`. 55 | For libraries it might be some code. 56 | For tools it might be a quickstart. 57 | For demos it should explain how to run the demo. 58 | 59 | For libraries, the examples should be as close as possible to the code 60 | the user will eventually write. 61 | For instance, when writing Go examples, you should write the code so the 62 | import path appears in the code and any identifier used is qualified 63 | with the package name. 64 | ``` 65 | 66 | # Contribute 67 | 68 | [Contributions](https://github.com/src-d/{project}/issues) are more than welcome, if you are interested please take a look to 69 | our [Contributing Guidelines](CONTRIBUTING.md). 70 | 71 | # Code of Conduct 72 | 73 | All activities under source{d} projects are governed by the [source{d} code of conduct](.github/CODE_OF_CONDUCT.md). 74 | 75 | # License 76 | 77 | ``` 78 | There's a choice between the following three licenses: 79 | - GPL v3.0, for core parts 80 | - Apache License 2.0, for libraries/tools that intended to be consumed by third-parties 81 | - Creative Commons BY-SA 4.0, for projects which are heavy on creative content 82 | 83 | You will find more info about what license to choose at: https://github.com/src-d/guide/blob/master/engineering/licensing.md 84 | ``` 85 | 86 | Apache License Version 2.0, see [LICENSE](LICENSE). 87 | 88 | ``` 89 | or 90 | ``` 91 | 92 | GPL v3.0, see [LICENSE](LICENSE). 93 | 94 | ``` 95 | or 96 | ``` 97 | 98 | Creative Commons BY-SA 4.0, see [LICENSE](LICENSE). 99 | 100 | -------------------------------------------------------------------------------- /engineering/documents/apache/LICENSE: -------------------------------------------------------------------------------- 1 | ../project-template/LICENSE.md.apache -------------------------------------------------------------------------------- /engineering/documents/cc-by-sa/LICENSE: -------------------------------------------------------------------------------- 1 | ../project-template/LICENSE.md.cc-by-sa -------------------------------------------------------------------------------- /engineering/documents/gpl/LICENSE: -------------------------------------------------------------------------------- 1 | ../project-template/LICENSE.md.gpl -------------------------------------------------------------------------------- /engineering/git-flow.md: -------------------------------------------------------------------------------- 1 | # Git workflow 2 | 3 | ![Image](/engineering/images/git-flow-app.png?raw=true) 4 | 5 | # How to add more code to the project 6 | 7 | ## 1. Create feature branch / hotfix branch 8 | On your fork, create a new branch from the latest upstream master branch 9 | commit of the repository you need to work on. 10 | 11 | We do not enforce any particular branch naming policy, but we recommend using prefixes, like `fix`, `feature` or `improvement`, for example. 12 | 13 | ## 2. Development and Pull Requests 14 | Work on your local repository as you see fit. When the time comes to make the PR, rearrange your commits to improve its readability: squash similar or related changes into individual commits and try to keep the overall commit count at a minimum. 15 | 16 | ### 2.1 Development on a library repository 17 | In this specific case we want to develop a new version without changing the actual one in the master branch (because if we change the public API we can break projects that depend on us really quickly). To avoid that we will create a new branch named with the next library version, but with the `dev-` prefix (Example: `dev-v4.0.0`). This is intended to "break" semantic versioning, and do not create a version from this branch. 18 | 19 | The reason of that is the way versioning works in go. Only the major version is set in the import URL (Example: `import gopkg.in/src-d/go-git.v4/`). Let’s say our master branch is version 4.0.0 and we want to start developing the version 4.1.0; if we create a branch with this name, automatically our v4 import will point to this new branch. 20 | 21 | ## 3. Code review and requested changes 22 | 23 | - PRs will be reviewed by the project maintainer or a designated reviewer. [Read more about maintainers.](maintainers.md) 24 | 25 | After a code review, add the requested changes in a new commit. This is useful 26 | because it's possible to check again only the specific changes that the reviewer 27 | requested. When your PR is approved, rearrange all the commits to have a descriptive history of your changes. Also rebase with master branch. 28 | 29 | ### 3.1 Avoiding cascading delays when submitting PRs that depend on one another 30 | If you want to submit several PRs that depend on one another and you don't want to wait for the revisions of the former to submit the latter, you can, as an exceptional measure, submit them without waiting to rebase them against master, so each of them will depend on the changes of the previous ones. 31 | 32 | Always add a comment to the Pull Request indicating that it depends on other PRs 33 | that must be merged first. 34 | 35 | To be able to merge this kind of Pull Request you need to know how to use the 36 | `rebase -i` git command: 37 | 38 | - (Maintainers only) Merge into master the first PR in the dependency chain. 39 | - Because this PR is merged using squash, you need to rewrite your PR commit 40 | history removing old commits from the previous PR and adding the squashed one from 41 | master. Using `rebase -i` command is an easy task. 42 | 43 | # How to create a new version (maintainers only) 44 | 45 | ## 1. Create a tag 46 | In most of the cases we create a new tag from a master commit using [semantic versioning](http://semver.org/) with the `v` prefix: `v1.0.0`, `v1.0.3`, `v2.0.0-rc1`, and so on. 47 | 48 | If we want to create a new major version that breaks the public API, we can create a tag from a specific branch. 49 | 50 | If we want to create internal versions that we don't want to publish, we must add the `dev-` prefix to the branch with that version. Example: `dev-v4.1.0`. This avoids the 51 | publishing of a new version, because this branch name does not accomplish [semantic versioning](http://semver.org/). 52 | -------------------------------------------------------------------------------- /engineering/images/git-flow-app-source.js: -------------------------------------------------------------------------------- 1 | // Source code used to generate git-flow-app.png image using http://gitgraphjs.com/ 2 | // library 3 | 4 | var gitgraph = new GitGraph({ 5 | template: "metro", 6 | orientation: "vertical", 7 | author: "", 8 | mode: "extended" 9 | }); 10 | 11 | var master = gitgraph.branch("master"); 12 | gitgraph.commit({message: "Other feature",sha1:" ", tag:"v1.6.2"}); 13 | 14 | var fixOne = master.branch("fix/some-fix"); 15 | fixOne.commit({message: "Fix small bug",sha1:" "}) 16 | fixOne.merge(master,{message:"Fix small bug",sha:" ",sha1:" "}) 17 | 18 | var breakingThings = gitgraph.branch("feature/breaking-changes"); 19 | breakingThings.commit({message: "Added breaking changes",sha1:" "}) 20 | breakingThings.commit({message: "Added more breaking changes",sha1:" ", tag:"v2.0.0-rc1"}) 21 | breakingThings.commit({message: "Added a lot of things",sha1:" ", tag:"v2.0.0-rc2"}) 22 | 23 | 24 | var featureOne = master.branch("feature/some-feature"); 25 | var featureTwo = featureOne.branch("feature/another-feature"); 26 | 27 | featureOne.commit({message: "Added functionality",sha1:" "}); 28 | featureOne.commit({message: "Added more functionality",sha1:" "}); 29 | 30 | featureTwo.commit({message: "New cool feature",sha1:" "}); 31 | 32 | featureOne.commit({message: "Requested changes",sha1:" "}); 33 | 34 | featureOne.merge(master,{message:"Feature one",sha1:" "}); 35 | featureTwo.merge(master,{message: "Feature two", tag: "v1.7.0",sha1:" "}); 36 | breakingThings.merge(master,{tag: "v2.0.0",sha1:" "}) 37 | -------------------------------------------------------------------------------- /engineering/images/git-flow-app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/engineering/images/git-flow-app.png -------------------------------------------------------------------------------- /engineering/images/release-branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/engineering/images/release-branch.png -------------------------------------------------------------------------------- /engineering/images/workflow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/engineering/images/workflow.png -------------------------------------------------------------------------------- /engineering/licensing.md: -------------------------------------------------------------------------------- 1 | # Licensing Policy 2 | 3 | This document describes source{d}'s licensing policy for the open source projects. 4 | 5 | All the projects developed or being developed by source{d} should be open source and follow the 6 | rules presented below. 7 | 8 | Templates are available at the end of this document. 9 | 10 | ## Licence 11 | 12 | At the time of creating a new project you can choose between two different licenses: 13 | 14 | - [GPL v3.0](https://www.gnu.org/licenses/gpl.html), applied to all projects whose nature is specific to core parts of our stack like language analysis, machine learning, etc. and which are mostly applications and are intended to be consumed through a separate client library owned by us. This allows clean interaction to third-party proprietary code. 15 | _Examples: bblfsh/server, bblfsh/*-driver_ 16 | 17 | - [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0), this license should be applied to projects which are libraries or tools that are intended to be consumed by third-parties as source code dependencies, which the GPLv3 and variants doesn't allow (if consumers are not GPL). 18 | _Examples: bblfsh/*-client_ 19 | 20 | - [Creative Commons BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/), this license should be applied to projects which are heavy on creative content, have creative content as their key aspect, or are purely editorial content (creative content as in information and knowledge that is not in form of code). 21 | _Examples: src-d/blog, src-d/awesome-machine-learning-on-source-code_ 22 | 23 | *Variants of GPLv3, such as AGPLv3 or LGPLv3 can be used under request and on a per case basis.* 24 | 25 | ## Re-license 26 | 27 | When a piece of code is copied between two or more source{d} projects covered by different licenses, source{d} employees are entitled to relicense the code as needed among those projects, if all the code was written by source{d} employees. **THIS CANNOT BE DONE WITH 3RD PARTY CODE.** 28 | 29 | ## Developer Certificate of Origin 30 | 31 | All our projects should include a [Developer Certificate of Origin](https://developercertificate.org/) (DCO) document to protect us against any individual contributor revoking our rights to distribute their contribution to any of our projects. 32 | 33 | In practice, this means that every commit since the introduction of the DCO, should be signed off by the author, using `git commit -s`. Being irrelevant if the author is a source{d} employee or an individual contributor. 34 | 35 | To learn more about DCO please read: 36 | 37 | - [Introducing Developer Certificate of Origin](https://blog.chef.io/2016/09/19/introducing-developer-certificate-of-origin/) 38 | - [Developer Certificate of Origin versus Contributor License Agreements](https://julien.ponge.org/blog/developer-certificate-of-origin-versus-contributor-license-agreements/) 39 | 40 | ## Templates 41 | 42 | - [GPL v3.0 License](documents/gpl/LICENSE) Document 43 | - [Apache License 2.0](documents/apache/LICENSE) Document 44 | - [Creative Commons BY-SA 4.0](documents/cc-by-sa/LICENSE) Document 45 | - [Developer Certificate of Origin](documents/DCO) Document 46 | -------------------------------------------------------------------------------- /engineering/maintainers.md: -------------------------------------------------------------------------------- 1 | repositories.md -------------------------------------------------------------------------------- /engineering/manuals/gnome2unity/button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/engineering/manuals/gnome2unity/button.png -------------------------------------------------------------------------------- /engineering/manuals/gnome2unity/date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/engineering/manuals/gnome2unity/date.png -------------------------------------------------------------------------------- /engineering/manuals/gnome2unity/ext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/engineering/manuals/gnome2unity/ext.png -------------------------------------------------------------------------------- /engineering/manuals/gnome2unity/screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/engineering/manuals/gnome2unity/screen.png -------------------------------------------------------------------------------- /engineering/project-template/.github/ISSUE_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### _Type_: 2 | Issue / Request 3 | 4 | ### _What happened? / What do you need?_: 5 | 6 | ### _If it's a request, what do you need it for?_: 7 | 8 | ### _If it's an issue, how can we reproduce it?_: 9 | 10 | ### _Affected servers or services_: 11 | 12 | ### _Priority_: 13 | High / Medium / Low 14 | 15 | * High = We should stop anything we are doing and do this. 16 | If you're writing this calmly, you should probably choose another option. 17 | If it's really that urgent, please make sure we read this. 18 | * Medium = It's important that we do this within a few days. 19 | * Low = We will consider this on our next sprint planning. 20 | 21 | (Please be aware that your priority may not match ours, we'll use this as guidance only). 22 | 23 | ### _Other info we may need_: 24 | -------------------------------------------------------------------------------- /engineering/project-template/DCO: -------------------------------------------------------------------------------- 1 | Developer Certificate of Origin 2 | Version 1.1 3 | 4 | Copyright (C) 2004, 2006 The Linux Foundation and its contributors. 5 | 660 York Street, Suite 102, 6 | San Francisco, CA 94110 USA 7 | 8 | Everyone is permitted to copy and distribute verbatim copies of this 9 | license document, but changing it is not allowed. 10 | 11 | 12 | Developer's Certificate of Origin 1.1 13 | 14 | By making a contribution to this project, I certify that: 15 | 16 | (a) The contribution was created in whole or in part by me and I 17 | have the right to submit it under the open source license 18 | indicated in the file; or 19 | 20 | (b) The contribution is based upon previous work that, to the best 21 | of my knowledge, is covered under an appropriate open source 22 | license and I have the right under that license to submit that 23 | work with modifications, whether created in whole or in part 24 | by me, under the same open source license (unless I am 25 | permitted to submit under a different license), as indicated 26 | in the file; or 27 | 28 | (c) The contribution was provided directly to me by some other 29 | person who certified (a), (b) or (c) and I have not modified 30 | it. 31 | 32 | (d) I understand and agree that this project and the contribution 33 | are public and that a record of the contribution (including all 34 | personal information I submit with it, including my sign-off) is 35 | maintained indefinitely and may be redistributed consistent with 36 | this project or the open source license(s) involved. -------------------------------------------------------------------------------- /engineering/project-template/MAINTAINERS: -------------------------------------------------------------------------------- 1 | Full Name (@github_user) 2 | -------------------------------------------------------------------------------- /engineering/project-template/NOTICE.md.apache: -------------------------------------------------------------------------------- 1 | Copyright (C) 2018 Sourced Technologies, S.L. 2 | 3 | Licensed under the Apache License, Version 2.0 (the "License"); 4 | you may not use this file except in compliance with the License. 5 | You may obtain a copy of the License at 6 | 7 | http://www.apache.org/licenses/LICENSE-2.0 8 | 9 | Unless required by applicable law or agreed to in writing, software 10 | distributed under the License is distributed on an "AS IS" BASIS, 11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | See the License for the specific language governing permissions and 13 | limitations under the License. 14 | -------------------------------------------------------------------------------- /engineering/project-template/NOTICE.md.gpl: -------------------------------------------------------------------------------- 1 | Copyright (C) 2018 Sourced Technologies, S.L. 2 | 3 | This program is free software: you can redistribute it and/or modify 4 | it under the terms of the GNU General Public License as published by 5 | the Free Software Foundation, either version 3 of the License, or 6 | (at your option) any later version. 7 | 8 | This program is distributed in the hope that it will be useful, 9 | but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | GNU General Public License for more details. 12 | 13 | You should have received a copy of the GNU General Public License 14 | along with this program. If not, see . 15 | 16 | -------------------------------------------------------------------------------- /engineering/project-template/README.md: -------------------------------------------------------------------------------- 1 | ![logo if any exists](path/to/logo) 2 | 3 | ``` 4 | A row of badges you might consider necessary. 5 | Examples include: 6 | 7 | - godoc reference: 8 | 9 | [![GoDoc](https://godoc.org/gopkg.in/src-d/go-git.v4?status.svg)](https://godoc.org/github.com/src-d/go-git) 10 | 11 | - build status: 12 | 13 | [![Build Status](https://travis-ci.org/src-d/go-git.svg)](https://travis-ci.org/src-d/go-git) 14 | [![Build status](https://ci.appveyor.com/api/projects/status/nyidskwifo4py6ub?svg=true)](https://ci.appveyor.com/project/mcuadros/go-git) 15 | 16 | - code coverage: 17 | 18 | [![codecov.io](https://codecov.io/github/src-d/go-git/coverage.svg)](https://codecov.io/github/src-d/go-git) 19 | 20 | - go report: 21 | 22 | [![Go Report Card](https://goreportcard.com/badge/github.com/src-d/go-git)](https://goreportcard.com/report/github.com/src-d/go-git) 23 | 24 | - stability of the project 25 | 26 | ![stable](https://svg-badge.appspot.com/badge/stability/stable?a) 27 | ``` 28 | 29 | # Project Name 30 | 31 | ``` 32 | Short description of the project. 33 | 34 | Should mention the kind of project this is (library, demo, tool, etc.) and 35 | the current [stability status](https://www.npmjs.com/package/stability-badges). 36 | 37 | Consider adding screencasts or screenshots when they help understand the project. 38 | GIFs can give a very good in-place representation of the tool in action. 39 | See [sqle/gitquet](https://github.com/sqle/gitquery) for an example. 40 | ``` 41 | 42 | # Installation 43 | 44 | ``` 45 | Short installation guide or link to longer installation instructions. 46 | This should include a pre-requisites subsection if needed. 47 | 48 | Are there Docker images, packages managers (brew, apt, etc), installations scripts? 49 | ``` 50 | 51 | # Example of utilization 52 | 53 | ``` 54 | Basic example or link to an `examples` directory with its own `README.md`. 55 | For libraries it might be some code. 56 | For tools it might be a quickstart. 57 | For demos it should explain how to run the demo. 58 | 59 | For libraries, the examples should be as close as possible to the code 60 | the user will eventually write. 61 | For instance, when writing Go examples, you should write the code so the 62 | import path appears in the code and any identifier used is qualified 63 | with the package name. 64 | ``` 65 | 66 | # Contribute 67 | 68 | [Contributions](https://github.com/src-d/{project}/issues) are more than welcome, if you are interested please take a look to 69 | our [Contributing Guidelines](docs/CONTRIBUTING.md). 70 | 71 | # Code of Conduct 72 | 73 | All activities under source{d} projects are governed by the [source{d} code of conduct](docs/CODE_OF_CONDUCT.md). 74 | 75 | # License 76 | 77 | ``` 78 | There's a choice between the following three licenses: 79 | - GPL v3.0, for core parts 80 | - Apache License 2.0, for libraries/tools that intended to be consumed by third-parties 81 | - Creative Commons BY-SA 4.0, for projects which are heavy on creative content 82 | 83 | You will find more info about what license to choose at: https://github.com/src-d/guide/blob/master/engineering/licensing.md 84 | ``` 85 | 86 | Apache License Version 2.0, see [LICENSE.md](LICENSE.md). 87 | 88 | ``` 89 | or 90 | ``` 91 | 92 | GPL v3.0 or later, see [LICENSE.md](LICENSE.md). 93 | 94 | ``` 95 | or 96 | ``` 97 | 98 | This work is licensed under a Creative Commons — Attribution-ShareAlike 4.0 International License. See [LICENSE.md](LICENSE.md). 99 | -------------------------------------------------------------------------------- /engineering/project-template/docs/CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | education, socio-economic status, nationality, personal appearance, race, 10 | religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at conduct@sourced.tech. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | -------------------------------------------------------------------------------- /engineering/project-template/docs/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | As all source{d} projects, this project follows the 4 | [source{d} Contributing Guidelines](https://github.com/src-d/guide/blob/master/engineering/documents/CONTRIBUTING.md). 5 | 6 | ``` 7 | 8 | ## Additional Contribution Guidelines 9 | 10 | Additional guidelines, if any. 11 | 12 | ``` 13 | 14 | -------------------------------------------------------------------------------- /engineering/releases.md: -------------------------------------------------------------------------------- 1 | 2 | # Releases FAQ 3 | 4 | ## How frequently/what prompts a release? 5 | 6 | At [maintainer](repositories.md)'s discretion. But in general, if a bug that is a critical regression from latest release is fixed, a new release should be done ASAP. If, after some time, there are pending changes that are well tested, a release should be performed too. 7 | 8 | ## What should be provided in terms of files? 9 | 10 | For applications, binaries for all supported platforms (at least Linux, our goal is to have Linux, macOS and Windows) posted to GitHub Releases page. Docker image pushed to Docker Hub, if applicable. 11 | 12 | ## What content should be in release notes? 13 | 14 | Release notes should contain something along these lines: 15 | 16 | - Optional brief description of a release. 17 | - _Breaking Changes_ section, describing anything that is not backwards compatible. 18 | - _Features_ section. 19 | - _Bug Fixes_ section. 20 | - _Known Issues_ section, with reference to issues that are new in a stable release, known that the time of release, but not fixed yet. 21 | 22 | Links to issues or PR should be used as much as possible, as well as acknowledgements to contributors (specially external contributors), preferably in the form of a GitHub user mention. 23 | -------------------------------------------------------------------------------- /engineering/repositories.md: -------------------------------------------------------------------------------- 1 | # Repository Guidelines 2 | 3 | ## Repository creation request 4 | 5 | In order to create a new repository, this should be requested through a [infrastructure issue](https://github.com/src-d/infrastructure), and will be handled by @mcuadros. 6 | 7 | The request should include: 8 | 9 | - Exact repository name. 10 | - Repository description. 11 | - The team who will own the repository. 12 | - Brief rationale on why it is needed. 13 | 14 | The name might need to be discussed with product if it will be user-facing. 15 | 16 | ## Repository privileges 17 | 18 | Each repository should belong to a team, and the full team has admin rights over this repository. If the repository is engineering-wide, the admin will be @smola and @mcuadros. 19 | 20 | ## Maintainer role 21 | 22 | * Every GitHub repository must have an assigned maintainer. 23 | * Maintainer is specified in a MAINTAINERS file in the top level directory as follows: `Full Name (@github_handle)` 24 | * Maintainers are in charge of: 25 | * [Release Management](releases.md): tagging, release notes, deciding on versioning, etc. 26 | * Code Review pull requests. 27 | * Ensure that issues get handled. 28 | * Ensure that good practices are followed and that there is consistency among the code base. 29 | 30 | ## Code Review 31 | 32 | * A maintainer should review every PR but can ask for additional reviewers as needed (e.g. someone else is more knowledgeable about a change or has a say as stakeholder) or completely delegate the review. 33 | * In order to request a code review, the maintainer can [add reviewers](https://help.github.com/articles/requesting-a-pull-request-review/) in GitHub UI 34 | * Non-maintainers at source{d} are not expected to do code review on PRs they are not asked to as a general practice. However, they are allowed to at their discretion if they think it's appropriate on a specific case. 35 | * Desirable deadline for each code review is 1 working day. 36 | * If there is a disagreement among the PR author and multiple reviewers and consensus cannot be reached or [it's not worth to reach](http://bikeshed.org/) the maintainer has the final word. 37 | * Maintainers can merge their own PRs without code review, but it is encouraged to ask for a review. Merging without review, if done, should be reserved to fixing typos or minor maintenance tasks. 38 | * If a maintainer is missing, a lead of the team that the project is owned by, or a backup maintainer designated by the lead will act as maintainer. 39 | 40 | ## Commit messages 41 | 42 | Commit and Pull Request descriptions should be clear and detailed. Keep in mind that commit messages will be read by (eventually) a lot of people: 43 | 44 | - Code reviewers will read them to have context on what they are reviewing, to understand why the change was needed and why it was done in a certain way. 45 | - Any developer might eventually get there when investigating (e.g. git bisect) a regression. They might get there long after the change is introduced and the context forgotten. 46 | - Maintainers might go back to it when writing release notes. 47 | - Any user might read it later to understand a change that affects them. 48 | 49 | Take some time to explain what and why you did something. It will save a lot of time to everyone, including yourself. 50 | 51 | ## Issues 52 | 53 | * Maintainers should review GitHub issues and answer them in less than a working day. An answer might be just a "Thank you, we'll look into it" as minimum. 54 | * If an issue cannot be fixed immediately, it should be added to the backlog so that it gets planned in next sprint. 55 | -------------------------------------------------------------------------------- /engineering/teams/methodology-infrastructure.md: -------------------------------------------------------------------------------- 1 | # Infra team methodology 2 | 3 | ## The main repository 4 | 5 | Infra main repository is https://github.com/src-d/infrastructure. Since branches are to be shared, never rebase a branch from the main repository, only rebase your own fork's branches. 6 | 7 | ## The kanban 8 | 9 | [Infra team kanban](https://github.com/orgs/src-d/projects/2) is the main tool to work in the team. Its main components and the method to pick issues are described in the [company methodology](https://github.com/src-d/guide/blob/master/engineering/methodology.md#kanban). 10 | 11 | * Never forget to assign to yourself the issue you're working in 12 | * Never forget to use the **BLOCKED** label if something is waiting for someone or something 13 | 14 | A few notes particular to the infra team follow: 15 | 16 | ### TODO 17 | 18 | Elements aim to be ordered, so they should be picked from top to bottom. This is the only place where items are ordered as this list is curated by the team lead following the needs of the projects. 19 | 20 | ### Development 21 | 22 | Nothing particular here 23 | 24 | 25 | ### PR 26 | 27 | An issue sent to PR must contain code and instructions to deploy. Instructions to deploy should be written in the issue, not in the pull request as multiple pull requests can be part of the same issue. A reviewer must take into account both code and deploy instructions. 28 | 29 | An issue moved to PR must have been tested prior of that. The amount of testing will be different in each case, but it is expected a deployment working either in the staging or development environments. If that is not possible, the amount of testing done must be explicitly stated in the issue. 30 | 31 | Once reviewed, if no further review is needed, the issue will be moved to the deployment column **without being merged**. If further review is needed, then the issue should remain in PR. In order to speed up things, if the reviewer knows the person that should review the issue, mentions should be used. If the reviewer finds that changes should be made to either the code or deployment instructions, the issue will be placed back to Development and reassigned to the original developer (unless long vacations make that impossible). 32 | 33 | As a gesture to the reviewer, use separate commits to address different comments and never push force in a branch coming from the main repository. 34 | 35 | ### Deployment 36 | 37 | Unless the deployment hasn't been tested, is especially complicated or the reviewer doesn't feel comfortable at all doing it, the reviewers can deploy the issue themselves. 38 | 39 | An updated master must always be merged in the branches with code to deploy. Never rebase a branch that comes from the main repository. Once successfully deployed, branch commits should be squashed in the minimum amount of commits that are helpful. We will consider in the future to do squash merges. 40 | 41 | ### Done 42 | 43 | Nothing particular here 44 | 45 | ## Infra meetings 46 | 47 | To be held every Tuesday. We will review the week's issues. 48 | 49 | ## Creating issues 50 | 51 | Infra work is quite prone to [yak shaving](https://seths.blog/2005/03/dont_shave_that/). At some point we have to compromise to have things done instead of having them done perfectly. Please create issues with things that you have identified and assign them to the project. The lead will eventually place them in Backlog or even in TODO if they're important enough. 52 | 53 | Please write proper and detailed issues descriptions that are helpful to whoever will be working in that issue at a later time, but in case of hurry, it is always better to create the issue and fill it at a later time than waiting to have the time to do all that and finally forget about the issue. 54 | -------------------------------------------------------------------------------- /engineering/teams/methodology-language-analysis.md: -------------------------------------------------------------------------------- 1 | # Methodology for Language Analysis team 2 | 3 | Language Analysis (LA) team follows the [common methodology](https://github.com/src-d/guide/blob/master/engineering/methodology.md) shared by 4 | the rest of the teams. 5 | Apart from that, it also uses [Github's project boards](https://help.github.com/articles/about-project-boards/) 6 | to organize the tasks and prioritize them. 7 | 8 | Since LA team is responsible for repos in two different organizations 9 | ([bblfsh](https://github.com/bblfsh) and [src-d](https://github.com/src-d/)), 10 | it has two different project boards, 11 | a [bblfsh project board](https://github.com/orgs/bblfsh/projects/1) 12 | and a [src-d](https://github.com/orgs/src-d/projects/3) project board. 13 | 14 | ## Adding issues to the project board 15 | 16 | New issues for LA maintained projects can be created in different ways, 17 | which determines how issues should be added to the project board: 18 | 19 | * An issue is created during planning, or it's in the backlog. 20 | The issue should be added to the project during planning. 21 | It may also be added either to the *To Do* column if the issue 22 | should be solved during the current sprint or to the *Pending* column if not. 23 | * An issue is created outside planning (by team members, external users, etc.). 24 | The repo maintainer is responsible of adding the issue to the project, 25 | and to do the proper bug triage. 26 | The issue could be added to any relevant column, 27 | which may be *Pending* if it's not expected to be solved during the sprint. 28 | * A pull request is created. 29 | The repo maintainer is responsible of adding the issue to the project. 30 | It should also be added to the *PR* column. 31 | 32 | ## Moving issues in the project board 33 | 34 | The issue status should be kept updated using the different board columns: 35 | 36 | * *Pending*. This issue is not expected to be solved in the current sprint. 37 | * *To Do*. This issue should be solved in current sprint, 38 | but work has not started yet. 39 | Issues in this column can be prioritized. 40 | * *In Progress*. This issue is in progress. It should be assigned at this point. 41 | * *Blocked*. This issue depends on some other issue or some design decision 42 | that has not been solved yet. 43 | * *PR*. This is either a pull request, or an issue which is solved by some pull request. 44 | * *Done*. The issue is solved / pull request is merged. 45 | * *Invalid*. The issue / pull request is considered invalid and it's not going to be solved. 46 | * *Old Done*. Invalid or done issues are moved to this column after the sprint review. 47 | 48 | *Done* and *Invalid* columns are added for visibility and further discussion 49 | during next sprint planning, if needed. 50 | Once reviewed during planning, they should be moved to *Old Done*. 51 | -------------------------------------------------------------------------------- /engineering/teams/methodology-ml.md: -------------------------------------------------------------------------------- 1 | Machine Learning (ML) team follows the [common methodology](https://github.com/src-d/guide/blob/master/engineering/methodology.md) shared by 2 | the rest of the teams, with the following additions: 3 | 4 | - We meet twice a week, on Tuesday and on Thursday, to sync and discuss the status. 5 | - We meet once per month to do middle-term planning of the [OKRs](https://github.com/src-d/okrs) fulfillment. We fuse that meeting with a retrospective. 6 | - We minute every meeting, whether it is with people from academia or internal. The up-to-date order of scribes is in [ml-backlog](https://github.com/src-d/ml-backlog#minutes-scribe-order), they are chosen round robin. 7 | - We post our [OSD](../../talent/open_source_days.md) plans to 🔑`#osd` channel on Slack in the morning. 8 | - We mention the URLs of the issues/PRs we work on in our daily Geekbot standups. 9 | - We passionately, thoughtfully follow the [Python style guide](../conventions/python.md). 10 | - We do **not** use Anaconda. 11 | - All the team is running on Ubuntu. You can use other OS if you like adventures and want to spend time on solving unavoidable compatibility problems. 12 | - We ping the Lead or the maintainer every few hours in DM if there is a review-pending PR which is blocking. 13 | - We do Research Days, see the corresponding section below for details. 14 | - We write our papers in [Overleaf](https://overleaf.com) and post them to 🔑[src-d/papers](https://github.com/src-d/papers) once written. 15 | - We put all the code related to the paper (plot generation, stats computation, etc) into 🔑[src-d/papers](https://github.com/src-d/papers), too. 16 | - We describe our bright ideas in 🔑[src-d/feature-idea](https://github.com/src-d/feature-idea). 17 | - We do not forget to ask the Lead for extra days off if we had to work on the weekends. Reference: [holiday-policy](../../talent/flexible_holidays_working_schedule_remote_work.md#holiday-policy). 18 | 19 | ## Interviews 20 | 21 | This part is classified, unfortunately. It should describe our ML interview process. Refer to 🔑[src-d/company](https://github.com/src-d/company/tree/master/interviews/engineering). 22 | 23 | ## Research Day 24 | 25 | Once per two weeks, on Fridays, the same day as the [paper reading club](https://github.com/src-d/reading-club), 26 | we run Research Days (RD). The purpose of RDs is to stay aware of the latest research and encourage experiments with MLonCode. 27 | The research topic needs to be relevant to the company, though it may of course miss an immediate application opportunity or usefulness guarantees. 28 | Here is the list of things which may be done on a RD: 29 | 30 | - Read papers. The papers **must** be announced on the previous day in `#machine-learning` community Slack channel. The paper summaries **must** be posted to [shortscience](https://www.shortscience.org/). 31 | - Write papers, blog posts. 32 | - Reproduce papers, the topic must be either MLonCode or generic ML. 33 | - Research coding experiments. That is, working on regular software is discouraged, there are OSDs for that. 34 | -------------------------------------------------------------------------------- /general/available_hardware.md: -------------------------------------------------------------------------------- 1 | # Laptops 2 | 3 | ## Apple 13-inch MacBook Pro - Space Gray 4 | - 2.3GHz dual-core Intel Core i5 processor, Turbo Boost up to 3.6GHz 5 | - 16GB 2133MHz LPDDR3 memory 6 | - 256GB PCIe-based SSD 7 | - Intel Iris Graphics 640 8 | - Two Thunderbolt 3 ports 9 | - Force Touch trackpad 10 | - Accessory Kit 11 | - Backlit Keyboard (English) & User's Guide 12 | 13 | ## Dell New XPS 13" (9380) 14 | - 8th Generation Intel(R) Core(TM) i7-8565U Processor 15 | - Ubuntu Linux 18.04 16 | - 16GB Memory LPDDR3 2133MHz 17 | - 512GB PCIe NVMe Solid State Drive 18 | - 13.3'' FHD (1920x1080) InfinityEdge 19 | 20 | ## Lenovo x270 12" 21 | - Intel Core i7-7500U 22 | - 12,5 FHD IPS (1920 x 1080) 23 | - 16 GB DDR4-2133 MHz SODIMM 24 | - 512 GB, PCIe-NVMe OPAL2.0 25 | - Intel HD Graphics 620 26 | - 3-cell integrated battery (23Wh) 27 | - 3-cell battery (23Wh) 28 | 29 | # Keyboards 30 | - Fnatic Gear Rush _Silent_ - [Cherry MX Silent Red](https://www.amazon.es/profesional-videojuegos-Fnatic-Rush-Silent/dp/B06VT1VL81/ref=sr_1_2?ie=UTF8&qid=1528471122&sr=8-2&keywords=Fnatic%2BGear%2BSilent&th=1) 31 | - Rantopad MXX - 🗣[Cherry MX Blue](https://www.amazon.es/Rantopad-MXX-Mechanical-Gaming-Keyboard/dp/B01JIPTFL2/ref=sr_1_cc_1?s=aps&ie=UTF8&qid=1483029977&sr=1-1-catcorr&keywords=rantopad&th=1) 32 | - Fnatic Gear Rush - 🗣[Cherry MX Blue](https://www.amazon.es/Fnatic-Gear-Mechanical-Keyboard-Switches/dp/B01DKZGQWW/ref=sr_1_22?s=electronics&ie=UTF8&qid=1497544576&sr=1-22) | 🗣🗣[Cherry MX Brown](https://www.amazon.es/Fnatic-Gear-Mechanical-Keyboard-Switches/dp/B01EI1ZXPI/ref=sr_1_6?s=electronics&ie=UTF8&qid=1488285204&sr=1-6) 33 | 34 | # Mouse 35 | - [Logitech 910](https://www.amazon.es/gp/product/B00DY50D00/ref=oh_aui_search_detailpage?ie=UTF8&psc=1) 36 | - [Logitech M705](https://www.amazon.es/Logitech-M705-Rat%C3%B3n-l%C3%A1ser-inal%C3%A1mbrico/dp/B003STDR1E/ref=sr_1_4?ie=UTF8&qid=1486984610&sr=8-4&keywords=raton+logitech) 37 | - [CSL - 3200dpi Ratón óptico / Forma vertical](https://www.amazon.es/gp/product/B01H6QEMFY) 38 | 39 | # Monitor 40 | - [LG 24UD58-B 24" 4k](https://www.amazon.es/LG-24UD58-B-Monitor-pulgadas-resoluci%C3%B3n/dp/B01M64QNU2/ref=sr_1_1?s=computers&ie=UTF8&qid=1488365331&sr=1-1&keywords=monitor+3840) 41 | - [Samsung U28E590D 28" 4k](https://www.amazon.es/Samsung-U28E590D-Monitor-Pixeles-Ultra/dp/B00WUACE4S/ref=sr_1_1?ie=UTF8&qid=1487786963&sr=8-1&keywords=monitor+4k) 42 | 43 | # Misc 44 | - [Desktop USB HUB](https://www.amazon.es/Puertos-Aluminio-Velocidad-Ordenador-Port%C3%A1til/dp/B00KNL6IP2/ref=sr_1_2?s=electronics&ie=UTF8&qid=1486986302&sr=1-2-spons&keywords=hub+usb&psc=1) 45 | - [Desktop Powerbase](https://www.amazon.es/Allocacoc-PowerCube-ReWirable-P%C3%BArpura-m%C3%BAltiple/dp/B010XEHG8Q/ref=sr_1_1?s=electronics&ie=UTF8&qid=1493896780&sr=1-1&keywords=PowerCube+usb+viaje) 46 | - [Laptop Stand](https://www.amazon.es/gp/product/B01CCMCGWI/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1) 47 | - [Monitor Stand](https://www.amazon.es/gp/product/B00HAMQY2E/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1) 48 | - [Apple USB-C to HDMI and USB adapter](https://www.apple.com/es/shop/product/MJ1K2ZM/A/usb-c-digital-av-multiport-adapter?fnode=6967a5d4ed7e9d5e7e1bd97c97e2a93e88fc296172c1f92ec7ec717ffcf59064a1ba864c898896b78871b6e3bcb0c00c97e9550c5edcb59eec3453789d8377b9f002ae0cc4ed0c2a87257a5e4013219b52ce1174fe5a7dec43147c739bc9ee71) 49 | 50 | # Other 51 | 52 | This list is open to suggestions via pull requests. If you think anything is missing that can make your life better, suggest it, you need the LGTM from @mcuadros for it be merged and then @estherrgarcia can help with ordering and keeping track of the hardware. 53 | 54 | - [Discussion on why hardware is standardized](https://github.com/src-d/guide/issues/25) 55 | -------------------------------------------------------------------------------- /general/company_wide_meeting.md: -------------------------------------------------------------------------------- 1 | ### Company Wide Meeting 2 | 3 | Every two weeks we hold a CWM (Company Wide Meeting) where the management team presents: 4 | * major updates from each team 5 | * strategic thinking 6 | * hiring plan updates 7 | * company wide relevant announcements 8 | * high level financials (e.g. cash in bank, net burn rate) 9 | * answers to questions (can be anonoymous by asking through the TypeForm: https://sourced.typeform.com/to/dJFJhb) 10 | 11 | The CWM are recorded for source{d} team members who are remote or unable to attend the meeting (see discussion here: https://github.com/src-d/company/issues/66) 12 | 13 | Recordings are available here to [members of source{d}](https://drive.google.com/drive/folders/1wEtwO8NtbukPGN5hF284ZMNYrKBvk-RL). 14 | 15 | The CWM will only take place if at least one person from the management team can lead it, or if they send us a video beforehand with the content to be covered. 16 | -------------------------------------------------------------------------------- /general/culture.md: -------------------------------------------------------------------------------- 1 | # Culture 2 | 3 | At source{d} we don't believe that being transparent, diverse, honest, etc can be called company culture. For us, that's just a general consensus of what a good company is like. 4 | 5 | We believe that for a company culture to be effective and attract the right people it needs to be unique and it needs to create as many detractors as lovers. Those who dislike your company culture should join a different company, that’s perfectly fine. However, those who love it will stay through the hardest of times and truly know that this company is their own and that it stands for the things they believe in. 6 | 7 | For this reason, we decided to aim for a unique company culture that many people will dislike, but one that we deeply believe in. 8 | 9 | It's built around three pillars: 10 | 11 | ### For Developers 12 | 13 | We want always to remain a company that does everything with the individual developer in mind. Not the developer as an employee of a company, but the developer as an individual in the developer community. 14 | 15 | For this reason, we always put the developers’ interest first, not those of our clients, neither those of source{d}. 16 | 17 | This is easier said than done. When we decided to stop the cold email outreach to developers, we knowingly lost a lot of revenue, but it was the right thing to do. 18 | 19 | Now every time we have to make a decision or start to work on something we ask ourselves if what we’re doing is the best thing we could possibly do for developers. The answer needs to be a clear “Yes!”. 20 | 21 | This is also the reason why we open source our work and why we will never charge individual developers or open source projects for the usage of our products. 22 | 23 | A lot of people would rather build an organization purely focused on making money, but that’s not our goal. We want to empower developers, building a profitable and sustainable business is a consequence of this. 24 | 25 | ### By Developers 26 | 27 | To always do what is best for developers we need to put ourselves in their situation, but that is very hard to do if you’ve never been a developer yourself. 28 | 29 | For this reason, we only hire computer scientists, developers or people who have a strong developer mindset and are willing to become one. This applies to all positions, from Sales to Talent. 30 | 31 | Those who are not computer scientists or developers need to learn about computer science as well as coding. This is a compulsory condition. We have now open sourced our “Developer Training” for everyone to be able to suggest improvements or to use it at their own companies (it’s a work in progress and we hope to get your feedback in the form of issues and pull requests). 32 | 33 | Many people we interview don’t want to work at a company where everyone is either a CS, a developer or is becoming one. That’s great, it’s what makes our culture unique and what makes those who join us love being here. 34 | 35 | ### Opinionatedly Free Spoken 36 | 37 | We’re huge believers in free speech. You can learn something from every single person in the world, no matter what their opinion on any topic is. We also believe that this is a big part of open source, being able to learn and collaborate with people from all over the world who have a wide variety of different opinions on how to do things. 38 | 39 | No matter if you’re a socialist, totalitarian, libertarian, conservative or don’t want to be defined, we don’t believe in silencing those who don’t think like the general consensus since we believe that’s a lost opportunity to learn. As long as people remain respectful to those who think differently, no matter how differently. You can criticize ideas, but you can’t criticize people. Political view is just one example, on a day to day basis we see this in discussions about technologies, solutions to problems, and allowing people to openly voice without judgement and with respect who they are and what they stand for. For this reason, we only hire people who are authentic and we give them the opportunity and encouragement to give their opinion, no matter what it is. 40 | 41 | Everybody has the right to have an opinion (that doesn’t harm or disrespects someone else), and that is something that reflects how the company works. By people feeling free to say whatever they think without being judged, they also feel free to contribute crazy ideas to the company, which creates a very dynamic environment. 42 | 43 | Not everyone will like our culture, but that’s the point of it ;) 44 | 45 | # 46 | You can read the original blogpost [here](https://medium.com/source-d/your-companys-culture-shouldn-t-please-everyone-77c85e3b5d66). 47 | -------------------------------------------------------------------------------- /general/expenses_travel.md: -------------------------------------------------------------------------------- 1 | # Expenses & Travel 2 | 3 | We don't like to put strict rules in terms of what you can expense and what not, because we believe that you will treat the company's money in a responsible way. An easy way to achieve this is by following these principles:
4 | * Spend source{d}'s money as if it was your own. 5 | * Research all available alternatives to make sure you're getting the best value for money. 6 | * Always ask your manager first before making a purchase since there might be a better option available. 7 | * Once the decision has been made please request Esther to make the purchase, so that she can keep track of inventory as well as keep the receipt. 8 | * If you need any hardware for work, make sure to check our [Hardware list](https://github.com/src-d/guide/blob/master/general/available_hardware.md) and ask Esther to buy anything you need. 9 | * If you see yourself in the situation of needing to pay something out of your own pocket please make sure that you keep all the receipts and hand them over to Esther for her to do the reimbursement. You should fill in the [expenses sheet](https://docs.google.com/a/sourced.tech/spreadsheets/d/1efa5uU1b95FzxhqRPcUOF1UOiAa1j0i08ae15y22J6c/edit?usp=sharing) with the amount in EUR to be sure that the reimbursment is done properly. If it's a physical item, make sure to give it to her when you receive it for her to update the inventory. 10 | 11 | ## What expenses will source{d} reimburse? 12 | * Mileage will be paid when driving your own car to a work meeting outside of the office. The rate will be 0,17€/km as established by Spanish law. 13 | * Public transportation or Cabify/Uber/Lyft/Taxis taken to work related meetings/events. 14 | * Meals that are work related. Meals with other sourcerers are not included here. 15 | * Books, online courses, conferences or anything else related to education. 16 | 17 | ## What expenses are covered when travelling? 18 | * Lodging, which will be organized by Esther. If you decide to stay with family or friends we will pay you 50% of what your lodging would've cost! 19 | * Plane/Train/Bus tickets, which will be purchased by Esther. Please let her know with as much time in advance as possible so that she can find the best deals. 20 | * Meals will be reimbursed. Here again, try to follow the principle of spending the money as if it was your own. 21 | * Public transportation, Ubers, Lyfts or Taxis will be paid only when going to a work meeting/event or when going back to the lodging from one of these as stated above. 22 | * If you want to take some holidays and stay any extra days in a concrete location it's totally fine, but source{d} will only cover the costs of the days you stayed there for work. Any increase in the price of the plane ticket will also need to be covered by you. 23 | 24 | ## Are conferences covered? 25 | * It depends on if they are compulsory or not. In the case of you having to go to a conference without being given the option not to, it will be considered a work trip and hence the above expenses will be covered. 26 | * If you go to a voluntary conference but submit a paper to give a talk and it gets accepted, it will also count as a work trip and all the above expenses will be covered. 27 | * If you go to a voluntary conference as an attendee only the plane, hotel and conference tickets will be covered. The reasoning behind this is that it's not an obligation, but a perk already. 28 | -------------------------------------------------------------------------------- /general/investors_board_advisors.md: -------------------------------------------------------------------------------- 1 | # Investors, Board of Directors and Advisors 2 | At source{d} we're very lucky to count with the backing of an incredible group of investors, board members and advisors and we're happy to brag about them whenever possible. In this document, you will find who our shareholders are, who is on our BoD and who advises us on a regular basis.
3 | ### Shareholders 4 | Shareholder | Percentage 5 | ------------|------------ 6 | [Sunstone Capital](http://sunstone.eu/) | 22,14% 7 | [Otium Venture](http://www.otiumcapital.com/) | 21,68% 8 | [Jorge Schnura](https://linkedin.com/in/jorgeschnura) | 21,04% 9 | [Eiso Kant](https://linkedin.com/in/eisokant) | 15,98% 10 | [Xavier Niel](https://en.wikipedia.org/wiki/Xavier_Niel) | 7,46% 11 | [Impulse](http://www.impulse.com.kw/portfolio/) | 5,90% 12 | [Philip von Have](https://linkedin.com/in/philip-von-have-29b46a20) | 3,39% 13 | [Marcel Zegger](https://linkedin.com/in/marcel-zegger-65751b5) | 1,07% 14 | [Fabien Potencier](https://linkedin.com/in/fabienpotencier) | 0,37% 15 | [Eduardo Ronzano](https://linkedin.com/in/eduardoronzano) | 0,32% 16 | [Ian Quest](https://linkedin.com/in/ian-quest-918422b) | 0,32% 17 | [Zubin Chagpar](https://linkedin.com/in/zubinchagpar) | 0,23% 18 | [Bruno Raillard](https://linkedin.com/in/brunoraillard) | 0,05% 19 | [Pierre Entremont](https://linkedin.com/in/pierreentremont) | 0,03% 20 | 21 | ### Board of Directors 22 | Board Member | Seat 23 | -------------|------------- 24 | [Eiso Kant](https://linkedin.com/in/eisokant) | Chairman of the Board 25 | [Jorge Schnura](https://linkedin.com/in/jorgeschnura) | Secretary of the Board 26 | [Jimmy Fussing](https://linkedin.com/in/jinielsen) | Board Member 27 | [Bruno Raillard](https://linkedin.com/in/brunoraillard) | Board Member 28 | [Jean de la Rochebrochard](https://linkedin.com/in/jeandlr) | Board Member 29 | [Izzat Abou-Amarah](https://linkedin.com/in/izzat-abou-amarah-7a79691) | Board Member 30 | 31 | ### Advisors 32 | * [Julien Barbier](https://linkedin.com/in/julienbarbier), [@jbarbier](https://github.com/jbarbier) 33 | * [Patrick Chanezon](https://www.linkedin.com/in/chanezon/), [@chanezon](https://github.com/chanezon) 34 | * [Joseph Jacks](https://www.linkedin.com/in/josephjacks/), [@josephjacks](https://github.com/josephjacks) 35 | * [Jessie Frazelle](https://www.linkedin.com/in/jessie-frazelle), [@jessfraz](https://twitter.com/jessfraz) 36 | 37 | ### Prospective Investors 38 | If you're an investor and are interested in investing in source{d} feel free to do a pull request here! 39 | -------------------------------------------------------------------------------- /general/organizational_legal_structure.md: -------------------------------------------------------------------------------- 1 | # Organizational Chart 2 | 3 | ![Organizational Chart](https://i.imgur.com/X1PslbS.png) 4 | 5 | # Leadership 6 | 7 | Our leadership consists of the CEO, COO, Head of Product, CTO, VP of Engineering, VP of Marketing, Head of Sales. 8 | 9 | # Legal Structure 10 | 11 | source{d}'s legal name is Sourced Technologies S.L., which is a Spanish Limited Liability Company.
12 | VAT: ES-B86776838
13 | Address: Calle de Claudio Coello 16, 2 Izquierda, 28001, Madrid, Spain
14 |
15 | The company has legal subsidiaries and branches in each country it has team members. 16 | -------------------------------------------------------------------------------- /general/product.md: -------------------------------------------------------------------------------- 1 | ### source{d} product 2 | 3 | source{d}'s product is a technology stack for ML on source code/software development. To see more, look at our technology deck which outlines each of our projects: [link](https://docs.google.com/presentation/d/e/2PACX-1vQpGOxoE094t-cU21Auij0GT3pybvY5yHlp1txFjarMYjx1Siyuryw4sfKN3pOj3Z9hHu2s_TARkviY/pub?start=false&loop=false&delayms=3000) 4 | -------------------------------------------------------------------------------- /general/roadmap.md: -------------------------------------------------------------------------------- 1 | # Roadmap 2 | 3 | source{d} is building the technology stack for machine learning on source code (MLonCode). 4 | We allow code to become a first-class analyzable asset across tens of millions of repositories as well as a single one through our powerful source{d} Engine and machine learning tools. 5 | 6 | With access to every open source and public git repository online today, developers and organizations can understand their code as part of the complex set of dependencies it really is. We envision every organization running a data pipeline over their software development life cycle, where source code becomes a unique, actionable dataset that can be analyzed and used in machine learning models. 7 | 8 | These are the building blocks for the next generation of new and impactful developer tools & systems that will change the way we learn programming as well as how we write & review code. 9 | 10 | * For original source and further information, Click Here 11 | -------------------------------------------------------------------------------- /general/tools.md: -------------------------------------------------------------------------------- 1 | # Tools 2 | 3 | At source{d} we try to use tools that are as simple as possible. If you can think of any tools that are simpler, better or cheaper please let us know! Here we will give instructions on how to make the best use of the tools we currently use. 4 | 5 | You can also check our [communication guide](../communication/README.md) for more details on our communication tools. 6 | 7 | ## General 8 | 9 | These are the tools that every sourcerer uses: 10 | * [Github](https://github.com) 11 | * [Slack](https://slack.com) 12 | * [Gmail](https://gmail.com) (internal email usage is minimal at source{d}, most communication happens on Slack or GitHub) 13 | * [KinHR](https://kinhr.com), to manage your days off, payslips, copies of your contract, social security and such. 14 | * [Google Calendar](http://calendar.google.com) 15 | * [Google Docs](http://docs.google.com) 16 | * [Donut](https://src-d.slack.com/apps/A11MJ51SR-donut?page=1) Slack app that will randomly match you up with another mate to have an informal conversation from time to time to know each other better ([see more](https://github.com/src-d/guide/blob/master/communication/donut.md)). 17 | 18 | ## Video conferencing 19 | 20 | * [Zoom](http://zoom.us/), for regular team and company meetings. Some events are also publicly broadcasted with zoom. 21 | * [Google Hangouts](http://hangouts.google.com), backup for zoom. 22 | * [appear.in](https://appear.in), when zoom is not available, and not recording is needed. 23 | 24 | ## Hiring 25 | 26 | * [Linkedin](https://linkedin.com) 27 | * [Lever](https://www.lever.co/), to manage the recruiting process. 28 | * [Calendly](https://calendly.com) 29 | * [Docusign](https://www.docusign.com) 30 | * [Camscanner](https://www.camscanner.com) 31 | -------------------------------------------------------------------------------- /general/wifi.md: -------------------------------------------------------------------------------- 1 | There are two networks: source{d} and source{d}-guest. The former is for employees, the latter is for visitors. 2 | 3 | source{d}-guest password: guest{d} 4 | -------------------------------------------------------------------------------- /img/brave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/img/brave.png -------------------------------------------------------------------------------- /office/README.md: -------------------------------------------------------------------------------- 1 | ### Communication 2 | 3 | **Maintainer:** [@estherrgarcia](https://github.com/estherrgarcia) 4 | 5 | * [Facilities & Seating Chart](madrid_office_seating_chart.md) 6 | * [Company Events](company_events.md) 7 | * [Books](books_list.md) 8 | * [source{d} Open Source Beer Brewery](https://github.com/src-d/homebrew) 9 | -------------------------------------------------------------------------------- /office/books_list.md: -------------------------------------------------------------------------------- 1 | To be able to have each source{d} book available, we use an Excel sheet to keep track of who has the physical copy. You don't have to request a book if you want to take it to read at home. We just want to make sure to not unnecessarily order the same book twice. "Don't destroy nature unnecessarily!" 2 | 3 | *source{d} bookshelf take-out* (https://docs.google.com/spreadsheets/d/19o9dWwgtluEazZjQQPouLS-C7xubYfYgFgB7qb3QDd4/edit?usp=sharing) 4 | 5 | 1. Critical Mass - How one thing leads to another -- Philip Ball 6 | 1. Data Science from Scratch: First Principles with Python -- Joel Grus 7 | 1. DataBase System Concepts -- Abraham Silberschatz 8 | 1. Deep Learning (Adaptive Computation and Machine Learning) -- Goodfellow, Ian 9 | 1. Designing for Growth: A Design Thinking Tool Kit for Managers (Columbia Business School Publishing) -- Liedtka, Jeanne 10 | 1. DevOps for dummies -- Sanjeev Sharma & Bernie Coyne 11 | 1. Effective Python: 59 specific ways to write better Python (Effective software development series) -- Slatkin, Brett 12 | 1. Elasticsearch. THe definitive Guide -- Clinton Gormley & Zachary Tong 13 | 1. Elon Musk (Ecco) -- Vance, Ashlee 14 | 1. Harvard Business Review on Entrepreneurship 15 | 1. Hooked. How To Buid Habit -- Eyal, Nir 16 | 1. Information Dashboard Design: Displaying Data for At-A-Glance Monitoring -- Few, Stephen 17 | 1. Introduction to Information Retrieval Hardback -- Manning 18 | 1. Lean Analytics: Use Data to Build a Better Startup Faster (Lean Series) -- Alistair Croll 19 | 1. Learning IPython for Interactive Computing and Data Visualization - Second Edition -- Rossant, Cyrille 20 | 1. Learning Python -- Mark Lutz 21 | 1. Letters to a Law Student: A Guide to Studying Law at University -- Mcbride, Nicholas J. 22 | 1. Linux System Programming: Talking Directly to the Kernel and C Library -- Robert Love 23 | 1. Mastering Web Application Development with Angular JS -- Pawel Kozlowski & Peter Bacon Darwin. 24 | 1. Mining of Massive Datasets Second Edition -- Leskovec, Jure 25 | 1. Natural Language Processing with Python -- Steven Bird, Ewan Klein & Edward Loper 26 | 1. Nginx HTTP Server - Second Edition -- Clement Nedelcu 27 | 1. Once You’re lucky, twice you’re good -- Sarah Lacy 28 | 1. OpenShift for Developers -- Grant Shipley & Graham Dumpleton 29 | 1. Patrones de diseño -- Erich Gamma 30 | 1. Practical Statistics for Data Scientists: 50 Essential Concepts -- Bruce, Peter 31 | 1. Principles of Marketing -- Philip Kotler & Gary Armstrong 32 | 1. Pro Git -- Chacon, Scott 33 | 1. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython -- Wes McKinney 34 | 1. Python Machine Learning -- Sebastian Raschka 35 | 1. Python Tricks: A Buffet of Awesome Python Features -- Bader, Dan 36 | 1. Research Design - Second Edition -- John W. Creswell 37 | 1. Sarah’s Key -- Tatiana de Rosnay 38 | 1. Scala for the Impatient -- Horstmann, Cay 39 | 1. Service Virtualization for dummies -- Marcia Kaufman & Judith Hurwitz 40 | 1. Source Code Seeking on the Web: A survey of Empirical Studies and Tools -- Rosalva E. Gallardo-Valencia & Susan Elliot Sim 41 | 1. Take charge product management -- Greg Geracie 42 | 1. Team Geek: A Software Developer's Guide to Working Well with Others -- Brian W. Fitzpatrick 43 | 1. The Definitive ANTLR 4 Reference -- Terence Parr 44 | 1. The Definitive Business Plan -- Richard Stutely 45 | 1. The Lean Startup: How Today's Entrepreneurs Use Continuous Innovation to Create Radically Successful Businesses -- Ries, Eric 46 | 1. The Pocket Universal Principles of Design: 150 Essential Tools for Architects, Artists, Designers, Developers, Engineers, Inventors, and Makers -- Lidwell, William 47 | 1. The Sciences of the Artificial -- Simon, Herbert A. 48 | 1. The starfish and the spider -- Ori Brafman & Rod A. Beckstorm 49 | 1. What we believe but cannot prove -- John Brockman 50 | 1. Who: The A Method for Hiring -- Smart, Geoff 51 | 1. Wikinomics - How mass collaboration changes everything -- Don Tapscott & Anthony D. Williams 52 | 1. Writing An Interpreter In Go -- Ball, Thorsten 53 | 1. Writing Idiomatic Python 3.3 -- Jeff Knupp 54 | 1. Your Code as a Crime Scene: Use Forensic Techniques to Arrest Defects, Bottlenecks, and Bad Design in Your Programs (The Pragmatic Programmers) -- Adam Tornhill 55 | -------------------------------------------------------------------------------- /office/company_events.md: -------------------------------------------------------------------------------- 1 | # source{d} Events 2 | 3 | ## Get togethers 4 | Once a month we organise a get together where we either all go to a bar where free drinks will be served from 19:00-24:00 or we go for some group activities like salsa classes, karting or other fun stuff. That means, every Get together can be different and always depends on the activity. 5 | Some activities let us be more flexible (beers) while others have to follow a specific schedule (classes). We can generalize: 6 | - The event is on the calendar from now to forever, it is the third Thursday of the month. 7 | - The starting time usually is around 7 pm and the duration is around 2-3 hours. If the activity is only 1 hour (like a Yoga class) we will add some beers after that. 8 | - The goal of this event is to increase the knowledge within the team. The minimun amount of people is 35% - 40% of the employees. If we see there are not a lot of people joining because of the date (not because of the activity) we will try to change it to be able to put together more people. 9 | - We will tell you if the activity is only for sourcerers or your +1s are also invited to join. If the plan is beers, your +1s are included by default. 10 | - We try to do something nice and cool without being overpriced but we don’t have a specific budget since each get together is different. 11 | - Check out our [history of past get togethers](get_together_history.md) 12 | - Feel free to suggest ideas (reasonable ones) in Slack channel, #get-together, we will check if it is viable for us. 13 | 14 | 15 | ## Friday Lunchs 16 | Once a month we organise a Friday lunch at the office. It is the fourth Friday of the month. Every sourcerer is invited to join. We order food (different every month) for everybody and we share good moments together. 17 | 18 | ## Birthday cakes 19 | Shared calendar `KinHR` includes birthdays of all sourcerers. Every time there is an event in that calendar - if a person is present at Madrid's offce, a cake is going to be shared at the kitchen on that day, around 17:00. If the birthday is on weekend, the cake will happen on Monday. 20 | 21 | Although this is a tradition at Madrid's office, everyone in the company including people who work remote is very welcome to join either at the kitchen or at https://appear.in/sourced-birthday 22 | 23 | ## Summer Party 24 | The source{d} summer party is hosted once a year in the months of June, July or September (depending on travel schedules). 25 | 26 | The reason for this party to exist is just celebrating how awesome summer is and because it's a good excuse to have some fun together. Everyone in the company and their +1s are invited to join. 27 | 28 | We usually book a place where snacks will be served as well as free drinks. Sometimes we organize some group activities before the party starts, so the starting time varies. 29 | 30 | The party lasts until the last person standing can't take it anymore and leaves. After such a tough night if you feel up for it, we'd love to see you working on Friday, if you don't, no worries, come in later or stay at home. 31 | 32 | ## Christmas Party 33 | The source{d} Christmas party is hosted once a year in December. It's basically the winter version of the summer party where we gather to celebrate the end of another awesome year. Everyone in the company and their +1s are invited to join. 34 | 35 | We usually book a place where snacks will be served as well as free drinks. Sometimes we organize some group activities before the party starts, so the starting time varies. A few weeks before the party we start a Secret Santa and the give out the presents during the party. 36 | 37 | The party lasts until the last person standing can't take it anymore and leaves. After such a tough night if you feel up for it, we'd love to see you working on Friday, if you don't, no worries, come in later or stay at home. 38 | 39 | ## Off-sites 40 | Once a year we organize an off-site where we take the whole company for a two-day trip to a rural house near Madrid. There we organize tech talks with people from outside of source{d} as well as hackathons. 41 | 42 | Thanks to a nice pool, BBQ and a lot of beer and drinks it's a great mix of fun + learning experience. 43 | -------------------------------------------------------------------------------- /office/get_together_history.md: -------------------------------------------------------------------------------- 1 | **October 18:** Cachopo time! 2 | - Place: El Rincón Asturiano 2 3 | - Time: From 20.00 4 | - Guests: sourcerers 5 | 6 | **August 18:** TapRoom -- Beers 7 | - Place: Guzman el Bueno, 52 8 | - Time: From 19.00 9 | - Guests: sourcerers & +1s 10 | 11 | **June 18:** Cheese tasting 12 | - Place: Calle Conde Duque, 15 13 | - Time: From 19.00 14 | - Guests: sourcerers 15 | 16 | **May 18:** TapRoom -- Beers 17 | - Place: Guzman el Bueno, 52 18 | - Time: From 19.00 19 | - Guests: sourcerers & +1s 20 | 21 | **April 18:** Cachopo time: 22 | - Place: Sidrería Gordu 23 | - Time: From 19.00 24 | - Guests: sourcerers 25 | 26 | **March 18:** Treasure hunt: 27 | - 3 teams have to walk around the center of Madrid searching for different clues. 28 | - Place: Plaza Mayor - Austrias Neighborhood 29 | - Time: 19:30 - 21:30 approx. 30 | - Guests: only sourcerers 31 | 32 | **February 18:** TapRoom -- Beers 33 | - Place: Guzman el Bueno, 52 34 | - Time: From 19.00 35 | - Guests: sourcerers & +1s 36 | 37 | **January 18:** TapRoom -- Beers 38 | - Place: Guzman el Bueno, 52 39 | - Time: From 19.00 40 | - Guests: sourcerers & +1s 41 | 42 | **November 17:** Escape Room 43 | - Place: Enigma Madrid Game 44 | - Time: 18.00 45 | - Guests: Only sourcerers 46 | 47 | **October 17:** TapRoom -- Beers 48 | - Place: Guzman el Bueno, 52 49 | - Time: From 19.00 50 | - Guests: sourcerers & +1s 51 | 52 | **August 17:** TapRoom -- Beers 53 | - Place: Guzman el Bueno, 52 54 | - Time: From 19.00 55 | - Guests: sourcerers & +1s 56 | 57 | **June 17:** Friday lunch + games (Pshycho Killer -- best day at the office ever!!) 58 | - Place: office 59 | - Time: All day 60 | - Guests: sourcerers 61 | 62 | **May 17:** Yoga at the office + pizza 63 | - Place: Office 64 | - Time: 19.00 the class 65 | - Guests: sourcerers & +1s 66 | 67 | **March 17:** Beers & Food 68 | - Place: Pinchos El Cano 69 | - Time: From 19.00 70 | - Guests: sourcerers & +1s 71 | 72 | **February 17:** Beers & Food 73 | - Place: Pinchos El Cano 74 | - Time: From 19.00 75 | - Guests: sourcerers & +1s 76 | 77 | **January 17:** Beers & Food 78 | - Place: Pinchos El Cano 79 | - Time: From 19.00 80 | - Guests: sourcerers & +1s 81 | -------------------------------------------------------------------------------- /office/madrid_office_seating_chart.md: -------------------------------------------------------------------------------- 1 | # source{d} Office 2 | The source{d} office is designed to fit our culture of "For Developers, By Developers". You'll find many historic characters who have been important contributors to computer science painted on the wall or giving names to meeting rooms. We also have our own green zone with a full wall in the kitchen and in the relax area being covered with natural moss.
3 | Among others we have the following amenities: 4 | * Soft drinks, beer and coffee 5 | * Fruit and ice creams (we love ice cream) 6 | * Xbox One S and Nintendo 64 with a nice catalogue of games 7 | * [Arcade Machine](https://tienda.arcademadrid.com/37-arcade-slim) 8 | * Kitchen with fridge and microwaves 9 | * Relax area 10 | 11 | ## Madrid Office Seating Chart 12 | 13 | ``` 14 | +------+ +----+----+ +----+----+ +----+----+ | | +----+----+ +----+----+ 15 | | A1 | | | | | | | | | | | | | | | | | | 16 | +------+ | B1 | B2 | | C1 | C2 | | D1 | D2 | | | | E1 | E2 | | F1 | F2 | 17 | | A2 | | | | | | | | | | | | | | | | | | 18 | +------+ +---------+ +---------+ +---------+ +--+ +---------+ +---------+ 19 | | | | | | | | | | | | | | | | 20 | | B3 | B4 | | C3 | C4 | | D3 | D4 | | E3 | E4 | | F3 | F4 | 21 | | | | | | | | | | | | | | | | 22 | +---------+ +---------+ +---------+ +--+ +---------+ +---------+ 23 | | | | | | | | | | | | | | | | | | 24 | | B5 | B6 | | C5 | C6 | | D5 | D6 | | | | E5 | E6 | | F5 | F6 | 25 | | | | | | | | | | | | | | | | | | 26 | +----+----+ +----+----+ +----+----+ | | +----+----+ +----+----+ 27 | 28 | ``` 29 | 30 | 31 | | Location | Name | 32 | |----|--------------------| 33 | | A1 | [Jorge Schnura](linkedin.com/in/jorgeschnura) | 34 | | A2 | [Eiso Kant](linkedin.com/in/eisokant) (primarily remote but maintaining his desk) | 35 | | B2 | [Vadim Markovtsev](https://github.com/vmarkovtsev) | 36 | | B6 | [Waren Long](https://github.com/warenlg) | 37 | | C2 | [Alex Córcoles](https://github.com/alexpdp7/) | 38 | | C3 | [Miguel Molina](https://github.com/erizocosmico) | 39 | | C4 | [Javier Fontán](https://github.com/jfontan) | 40 | | C5 | [Romain Keramitas](https://github.com/r0mainK) | 41 | | C6 | [Rafa Porres](https://github.com/rporres) | 42 | | D1 | [Santiago Mola](https://github.com/smola) | 43 | | D2 | [Máximo Cuadros](https://github.com/mcuadros) | 44 | | D3 | [David Riosalido](https://github.com/driosalido) | 45 | | D4 | [Marcelo Novaes](linkedin.com/in/mnovaes) | 46 | | D6 | [Robbie Blue](https://github.com/bluer73) | 47 | | E1 | [Carlos Martín](https://github.com/carlosms) | (remote in Las Palmas but coming sometimes) 48 | | E3 | [Nacho Cordón](https://github.com/NCordon) | 49 | | E5 | [Alexander Bezzubov](https://github.com/bzz) | 50 | | E6 | [David Pordomingo](https://github.com/dpordomingo) | 51 | | F3 | [Maxim Sukharev](https://github.com/smacker) | 52 | | F4/F6| [Esther García](linkedin.com/in/estherrgarcia) | 53 | | F5 | [Fernanda Gomes](linkedin.com/in/fernandaagomes) | 54 | | B1/B3/B4/B5/C1/E2/E4/F1/F2 | Rotating Desks for remote sourcerers visiting the office | 55 | -------------------------------------------------------------------------------- /office/ubuntu_wireless_scan.md: -------------------------------------------------------------------------------- 1 | How to scan over-the-air in Ubuntu using our MFP 2 | ================================================ 3 | 4 | We've got Samsung C480FW. Given the recent acquisition of Samsung Printers division by HP, 5 | everybody expects HP to gradually drop support of Samsung printers. Thus they are likely to stop working 6 | properly in future macOS and Linux versions. It sucks, and there are already problems with scanning on Mojave. 7 | Anyway, here are the instructions how to scan on Ubuntu 18.04. 8 | 9 | ``` 10 | wget http://www.bchemnet.com/suldr/pool/debian/extra/su/suldr-keyring_2_all.deb 11 | sudo dpkg -i suldr-keyring_2_all.deb 12 | rm suldr-keyring_2_all.deb 13 | echo "deb http://www.bchemnet.com/suldr/ debian extra" | sudo tee -a /etc/apt/sources.list.d/bchemnet.list 14 | sudo apt update 15 | sudo apt install suld-driver-4.01.17 # or any newer 16 | cd # empty args mean ~ 17 | sudo /opt/Samsung/mfp/bin/netdiscovery --all --scanner 18 | # should output: 19 | # ip: 192.168.1.51 slp: 0,0,0,0 snmp: 1,1,0 vendor: Samsung dsc: "C48x Series" 20 | sudo usermod -G lp -a $(whoami) 21 | ``` 22 | 23 | Log out or restart to kill all your processes and make the `usermod` group change active. 24 | 25 | That's it! Open "Simple Scan" and it should detect our office scanner. 26 | -------------------------------------------------------------------------------- /product/design-documents.md: -------------------------------------------------------------------------------- 1 | # Design Documents 2 | 3 | At source{d} we use [design documents](../engineering/workflow.md#design-document-1st-iteration) to guide the product/engineering process. 4 | 5 | Important to note is that the term "Design Documents" does not necessarily have to do with graphic design. It is the term we use at source{d} for product documents that outline both design, business and engineering related information for a product / significant component of our technology stack. 6 | 7 | - [Design Document Template](https://docs.google.com/document/d/1NtbOeUt9mAm3vnseCuEwBvuOI4emSzv0QopvaMYKWU4/) 8 | 9 | A full list of design documents can be found in our [Design Documents Google Drive folder](https://drive.google.com/open?id=1FSumcyC59ENAcq67S4etz5M1f3jJdLcX). 10 | -------------------------------------------------------------------------------- /product/graphic-design-guide.md: -------------------------------------------------------------------------------- 1 | # source{d} Graphic Design Guide 2 | 3 | ### Vision 4 | 5 | To capacitate and empower source{d} team members and our community. 6 | 7 | ![Brave](../img/brave.png) 8 | from Disney's Brave movie. 9 | 10 | ### Strategy 11 | 12 | To continually create and foster a design culture of shared ownership. 13 | 14 | ### Principles 15 | 16 | #### Particularity 17 | 18 | Acknowledging who’s listening and reasoning what to say is our design cornerstone. Our community is very particular in its ways and traits, and so are we. We welcome the work there is to be done to win our people over, time and time again. 19 | 20 | People change, and the community serving them at the same time. Even though it’s important to be reactive to change, it’s even more important to change proactively. Our community shapes us as we help to shape the community. 21 | 22 | #### Empowerment 23 | 24 | Our quest is not driven by one-off design achievements. We strive to build collective momentum, gathering input from the community with all its particularities to help set standards for collaborative accomplishment. Our way of doing things spawns consistent decisions and empowers others to do the same. 25 | 26 | Any given day to us is an opportunity to embed design literacy among the team at every level of the business and spread it further among our community and establish it as an ongoing and long-term endeavour. Although we work in sprints, in reality we know they are small segments of a longer marathon. 27 | 28 | #### Openness 29 | 30 | We deeply believe in co-creation. The same way we foster openness by producing open source software and opening up our culture (see our [guide](../README.md)), we must do so by bringing our community in. Our pathway towards innovation is not to share our evolution, but rather to evolve together with the community one step at a time. 31 | 32 | This is only possible however if we are open to our surroundings, to our community's particularities and empower people inside and outside to collaborate. We have honest attention to the group, along with extreme care on the individual. Like as in good typography, we care about our community not as a group of important people, but an important group of people, by choice. 33 | 34 | #### Honesty 35 | 36 | Honest digital evolution is what we choose to learn and do. Honesty is only truly viable when the previous principles of particularity, empowerment, and openness are accomplished. 37 | 38 | ### Values 39 | 40 | #### Design is genuine 41 | 42 | Genuine design happens when we acknowledge that design without rationale is a mere aesthetic exercise. Moreover, the urge for better experiences is hinged on better people, not on better design. Bringing it all together, we genuinely praise people above all. 43 | 44 | #### Design is sustainable 45 | 46 | Design is sustainable with the emphasis of ethics over aesthetics, grounding the expression of a creative practice where design systems are crafted for the needs of the present without compromising the future. 47 | 48 | We advocate that there’s quite a stunning and often disregarded parallel between the digital landscape and the physical one. What we have done with our physical one overtime must be a strong lesson to us all building its digital counterpart. We think twice about the life-cycle of the digital artifacts we give birth to the same way. 49 | 50 | #### Design is a team sport 51 | 52 | Design is a team sport when there is such knowledge management, its transfer, and openness within a team that it raises the standards of the critical environment. Design must capacitate everyone involved with the power to surface the value of collective truth, driving it from the birth design’s written word all the way through its visual translation and towards the experience. 53 | -------------------------------------------------------------------------------- /remote/images/remote_screenshot_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/remote/images/remote_screenshot_1.png -------------------------------------------------------------------------------- /remote/images/remote_screenshot_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/remote/images/remote_screenshot_2.png -------------------------------------------------------------------------------- /remote/remote_guidelines.md: -------------------------------------------------------------------------------- 1 | # Company Wide Remote Guidelines 2 | 3 | source{d} is fully remote friendly, what this means is that you can choose to be full-time remote from the Faroe Islands or work from the Madrid or San Francisco office but spend mornings/afternoons/several days remote. 4 | 5 | A few practices that we have: 6 | 7 | ### Slack 8 | 9 | When you are working remote please update your Slack status (using the house icon or a foreign flag based on the country you're in): 10 | 11 | **When at home:** 12 | 13 | 14 | 15 | **When travelling:** 16 | 17 | 18 | 19 | 20 | If you are abroad, update your Time Zone in `Profile & account > Edit Profile > Time Zone` so other people know which is your current time. Alternatively, you can just click on your name on any of your messages and click on _Edit your profile_. 21 | 22 | ### Calendar 23 | 24 | If you're working from one of the offices but decide to be part-time remote, the team appreciates it if you update the Remote & OSD calendar. 25 | -------------------------------------------------------------------------------- /remote/video-conferencing.md: -------------------------------------------------------------------------------- 1 | # Zoom Video Conferenceing 2 | 3 | At source{d} we use Zoom for video conferencing. We don't love it but it's the best tool we've found so far. Our requirements are the following: 4 | 5 | - It needs to be stable and reliable 6 | - It needs to support two screens 7 | - Why? We like to see the faces of the participants on one screen and the screenshared material on the other. Body language is important and this way you can screenshare and still see the people 8 | - It needs have native applications for Mac, Linux, Android & iOS 9 | 10 | To understand how to join/start meetings please find it in our private company repo **[here](https://github.com/src-d/company/tree/master/communication).** 11 | -------------------------------------------------------------------------------- /talent/README.md: -------------------------------------------------------------------------------- 1 | ### Communication 2 | 3 | **Maintainer:** [@bluer73](https://github.com/bluer73) 4 | 5 | * Hiring 6 | * [Hiring Process](hiring_process.md) 7 | * [Application Process](application-process.md) 8 | * [Job Descriptions](job-descriptions/) 9 | * [Engineering Teams Description](engineering-teams-description.md) 10 | * [Relocation Support](relocation_expenses.md) 11 | * [Flexible Holidays, Working Schedule and Remote Work](flexible_holidays_working_schedule_remote_work.md) 12 | * [Stock Option Plan](esop.md) 13 | * [Wage Policy](wage_policy.md) 14 | 15 | * Procedural 16 | * [Onboarding](onboarding/) 17 | * [Contract](contract.md) 18 | * [Offboarding](offboarding.md) 19 | 20 | * General 21 | * [One-On-One Meetings Guide](one_on_one_guide.md) 22 | * [Open Source Days](open_source_days.md) 23 | * ["By Developers" Training](by-developers-training/README.md) 24 | * [sourcerers](sourcerers/) 25 | * [Career Development](career_development.md) 26 | 27 | -------------------------------------------------------------------------------- /talent/contract.md: -------------------------------------------------------------------------------- 1 | # Work contract 2 | This is the place where you will find all the information regarding your work contract.
3 | 4 | You can find here the [English](https://drive.google.com/file/d/1LMKOmpTeLQZlEEKK7CkiJW8iC7HC-I0O/view?usp=sharing) and [Spanish](https://drive.google.com/file/d/1bDNPwht2GVnz8p3AfRDDp_mOxLFgetXr/view?usp=sharing) version of our contract. 5 | 6 | ### Main clauses 7 | 1. Description of your position and where you will work. Even though it says you'll work from our Madrid office, we have a remote working policy that allows you to work from home as well. You can take a look at [our remote work policy](flexible_holidays_working_schedule_remote_work.md#working-remotely). 8 | 2. n/a 9 | 3. In Spain, the weekly working hours need to be established for full-time contracts at 40h/week. We have this clause to comply with the law, but actually you can take a look at [our working schedule policy](flexible_holidays_working_schedule_remote_work.md#working-schedule) where you decide how many hours to work. As long as stuff gets done, we don't care if it takes 1h or 40h. 10 | 4. The contract has an indefinite duration and the Spanish standard of 6 trial months. This means that it arranges without establishing time limits in the provision of the services, regarding the duration of the contract. 11 | 5. This clause details how much your gross salary will be. 12 | 6. At source{d}, we offer 23 days of holidays a year. We have a holiday policy by which you can work on bank holidays or weekends though and exchange it for more days. Also, any unused holidays will be carried over to the next year. Also, we have an additional clause including more details. You can take a look at [our holiday policy](flexible_holidays_working_schedule_remote_work.md#holiday-policy) 13 | 7. The legislation of the statute of workers approved by the Royal Legislative Decree 1/1995 of 24th March and the collective agreement of Empresas de Consultoría y Estudios Opinión Pública will be applied to this contract. 14 | 8. n/a 15 | 9. n/a 16 | 10. Just stating that the public authorities will be notified of this work contract in the next 10 days. 17 | 18 | 19 | ### Additional clauses: 20 | 1. All IP developed during work at source{d} will be owned by source{d} entirely. 21 | 2. The confidentiality clause forbids anyone from sharing confidential information unless it has been otherwise instructed by source{d} or unless it is in the benefit of source{d}. Regardless of this we're very open about everything we do as you can see in our engineering blog, open-source projects, source{d} guide or company blog. 22 | 3. This clause is about how source{d} will handle your data according to Spanish Data Protection Law. 23 | 4. Prorated Extraordinary Payments: this means we make 12 payments per year. 24 | 5. [Remote work policy](flexible_holidays_working_schedule_remote_work.md) 25 | 6. [Holiday policy](flexible_holidays_working_schedule_remote_work.md#holiday-policy) 26 | -------------------------------------------------------------------------------- /talent/engineering-teams-description.md: -------------------------------------------------------------------------------- 1 | This document describes the engineering teams at source{d} and how they interact with each other. 2 | 3 | ### Machine Learning Team 4 | 5 | - The Machine Learning team is focused on providing intelligent insights into nearly all the world's Open Source code. This includes typical Big Data analysis as well as solving sophisticated Machine Learning problems. The former is conducted on Apache Spark clusters, the latter leverages extensive GPGPU acceleration on custom hardware using Deep Learning techniques. Often ML problems we face are unsupervised and require novel research in the domain of ML on source code (MLonCode). 6 | 7 | ### Applications Team 8 | 9 | - The Applications team applies the whole stack and expertise to solve real word problems such as automated code review, bug detection & prediction, test cases generation, security vulnerabilities and more. This is done by implementing CLI/Web applications on top of the MLonCode research as well as the other teams' main tools, like BabelFish and Engine. Simple and intuitive applications are written mainly in Go and Scala. 10 | 11 | ### Data Retrieval Team 12 | 13 | - The Data Retrieval Team builds tools to discover, fetch, store and access large collections of git repositories. Both for source{d} products, as well as in our internal cluster that aims to keep a full mirror of all public Git repositories. 14 | 15 | ### Data Processing Team 16 | 17 | - The Data Processing Team develops tools to analyze data with user-friendly APIs, mainly in SQL, but also Scala and Python. 18 | - Most of the code is written in Go and Scala. The later being used for our clustering layer based on Apache Spark. 19 | 20 | ### Language Analysis Team 21 | 22 | - The Language Analysis team is developing source{d} tools and libraries for generating and processing universal abstract syntax trees for programming languages. These components are integrated into the Babelfish Open Source project, written in Go, C++, Scala, and any other language that we're parsing. 23 | 24 | - Babelfish powers the cutting-edge research that our Machine Learning team does on their ambitious mission to provide Machine Learning on Source Code. Our tools also are being used by a community of developers, researchers, and companies across the world in order to do vanguard research and build the next generation of developer tools. 25 | 26 | ### Infrastructure Team 27 | 28 | - The Infrastructure team focuses on managing and growing our bare metal computation cluster. This cluster allows us to run large scale computational algorithms and store the required information for those computations. 29 | 30 | - Besides that, the infrastructure team is also in charge of several other important services, such as databases, queues, CI, monitorization, logging, etc. 31 | 32 | ### Communication 33 | 34 | **NOTE: This section is not completely up to date with current team structure.** 35 | 36 | - The ```Applications``` team is responsible for building scalable developer tools on top of the research of the ```Machine Learning``` team and code analysis of the ```Language Analysis``` team. The ```Data Retrieval``` team retrieves and processes public source code in order to build the data pipelines for the Machine Learning team’s models with the support of ```Language Analysis```. Also, BabelFish from ```Language Analysis``` team is used in order to generate the datasets as Universal Abstract Syntax trees to be analyzed directly or given as input data to train the ML models. All the necessary services and computational clusters for every team, are supported by the ```Infrastructure team```. 37 | 38 | - This communication flow within the teams can be shown in the below diagram: 39 | 40 | ![alt text](images/teams_comm.png) 41 | 42 | - Below are shown these interaction layers in an abstract way: 43 | 44 | 45 | ![alt text](images/teams.png) 46 | -------------------------------------------------------------------------------- /talent/flexible_holidays_working_schedule_remote_work.md: -------------------------------------------------------------------------------- 1 | # Flexible Holidays, Working Schedule and Remote Work 2 | 3 | At source{d} we believe in freedom and treating everyone as adults. If you're committed to what we can achieve together and love your job you don't need anyone forcing you to work in one certain way or another. 4 | 5 | ### Working Remotely 6 | 7 | source{d} is fully remote friendly. What this means is that you can choose to be full-time remote from the Faroe Islands or work from the Madrid or San Francisco office but spend mornings/afternoons/several days remote. We believe people should work from where they feel most comfortable. 8 | 9 | If you want to know more about remote work practices at source{d}, check our [Company Wide Remote Guidelines](https://github.com/src-d/guide/blob/master/remote/remote_guidelines.md). 10 | 11 | ### Holiday Policy 12 | 13 | Since we are a remote company, we want everyone to have the same amount of holidays, regardless of where they are working from. For this reason, you will have 23 days of holidays to use however you wish. Regarding bank holidays, you can structure how you use them as you like. At the beginning of every year we will let you know how many bank holidays there will be on Spain in that year and you will be able to use them however you wish. This means that you can make them coincide with bank holidays in your country of residence, or work on those national bank holidays and use them otherwise. If you live in a country with more bank holidays than Spain, you will have to notify our Office Manager so she can add those to your balance. 14 | 15 | National festive days of the year will be established by the government, regional festivities will be established by the community of Madrid, and local festive days established by the City of Madrid. The calendar will be shared with you before the start of the year. 16 | 17 | For organizational purposes, you should let your manager know whenever you will take a day off, regardless of it being a bank holiday in your country or state of residence or not. 18 | 19 | Unlike in some other companies we don't count the weekends of bank holidays that fall inside of your holidays. This means that if you take two weeks off it will count as 10 holidays (2x Monday-Friday). This is the norm in most countries but some companies in some countries also count the weekend in between as part of your holidays. 20 | 21 | You can also work during weekends and exchange those days for additional holidays. You just have to let your team know that you are going to do so. Again, try to do it ahead of time so that everyone can plan accordingly.The company will include an extra day of vacations in the annual total amount. 22 | 23 | If by the company’s necessities you have to work during a festive day or a weekend, you will receive an extra day of vacations to the day of work resulting in the addition of two vacation days added to the total annual amount of holidays. 24 | 25 | Finally, if you don't use all your days in one year, any unused days will carry over to the next. 26 | 27 | ### Working Schedule 28 | 29 | This is very simple, there is none. You can come and go as you please as long as you get your work done and don't miss any of your meetings. Once you're here you'll see that some people come in very early and others very late, some leave early and others leave late. Everyone needs to be responsible enough to manage their own time and schedule. 30 | -------------------------------------------------------------------------------- /talent/images/teams.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/talent/images/teams.png -------------------------------------------------------------------------------- /talent/images/teams_comm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/src-d/guide/7bb18c0577b779a1d80c3f6cd6e3a825200e7dad/talent/images/teams_comm.png -------------------------------------------------------------------------------- /talent/job-descriptions/company-section.md: -------------------------------------------------------------------------------- 1 | ## Company 2 | 3 | source{d}, the only open core company to turn code into actionable data and business intelligence, is building the tech stack that enables large-scale code analysis and machine learning on code. Used by top engineers at world leading companies, source{d} develops projects transparently, collaborating with the broader community of Machine Learning on Code researchers. source{d} is a distributed and remote first company with team members across 12 countries and offices in San Francisco, Seattle & Madrid. source{d} has raised >$10 million from Otium, Sunstone Capital and others. To learn more, visit [sourced.tech](https://sourced.tech/) 4 | -------------------------------------------------------------------------------- /talent/job-descriptions/culture-section.md: -------------------------------------------------------------------------------- 1 | ## Culture 2 | 3 | - source{d} is a company for developers by developers. We firmly believe in always doing what's best for the individual developer in the community. Our team consists of members who are passionate about programming. To understand our culture better, read more about it [here](https://github.com/src-d/guide/blob/master/general/culture.md#for-developers). 4 | 5 | - At the moment, we are 25+ people from 10 different countries working as a distributed organization. Some of our team members are based in the Madrid or San Francisco office, others work remotely from around the world (Portugal, Estonia, Russia, and others). 6 | 7 | - For those wanting to work from one of our offices, we fully support the visa and moving process for you and your family. 8 | 9 | - At source{d}, we have a transparent salary policy which we feel strongly about it. Your seniority level will be determined during the last round of on-site interviews. 10 | 11 | - At source{d} all of the projects we work on are public on GitHub and the vast majority are open-source under licenses such as Apache 2.0 or GPL3. 12 | 13 | - We don't just believe in open-source, we also believe in radical transparency as an organization, there we publish everything about the company at [github.com/src-d/guide](https://github.com/src-d/guide). -------------------------------------------------------------------------------- /talent/job-descriptions/engineering-section.md: -------------------------------------------------------------------------------- 1 | ## Engineering at source{d} 2 | 3 | Engineering consists of five different teams that represent the architecture of our product: 4 | 5 | - Applications (Scala, Go, Python, and Frontend tools): Builds CLI/Web applications combining ML research with our stack. 6 | - Machine Learning (C++ and Python): Performs R&D for Machine Learning on Source Code. 7 | - Data Retrieval (Go): Builds the technology that finds, fetches and stores over +60M Git repositories. 8 | - Data Processing (Scala and Go): Builds projects that enable data analysis for repositories and other data sources, mainly with SQL. 9 | - Language Analysis (Go and another +15): Focused on Babelfish, the universal code parsing server. 10 | - Infrastructure (Go and Python): Manages a cluser of on-prem bare metal servers with Kubernetes and CoreOS, and GCP for user facing applications. 11 | 12 | We care about Open Source. Everything we develop is available for anyone to read, modify, and contribute (under Apache 2.0 or GPL3 license). Some examples of our projects are: 13 | 14 | - [bblfsh/bblfshd](https://github.com/bblfsh/bblfshd): Babelfish server, turning code into Universal Abstract Syntax Trees (UASTs). 15 | - [src-d/go-git](https://github.com/src-d/go-git): a highly extensible Git implementation in pure Go. 16 | - [src-d/go-mysql-server](https://github.com/src-d/go-mysql-server): a SQL engine written in Go, with a MySQL(ish) interface. 17 | - [src-d/ml](https://github.com/src-d/ml/tree/develop): a library to build and apply Machine Learning models on top of Universal Abstract Syntax Trees. 18 | 19 | If you are interested in understanding how we do code reviews, please take a look at the PRs on any of these projects. You can also learn more about our engineering methodology [here](https://github.com/src-d/guide/tree/master/engineering). 20 | -------------------------------------------------------------------------------- /talent/job-descriptions/location-seniority-section.md: -------------------------------------------------------------------------------- 1 | **Location:** Madrid / Fully remote 2 | **Seniority:** We are open to all levels of seniority, and adjust compensation accordingly (read more about how we set wages [here](https://github.com/src-d/guide/blob/master/talent/wage_policy.md)) 3 | -------------------------------------------------------------------------------- /talent/job-descriptions/madrid-location-seniority-section.md: -------------------------------------------------------------------------------- 1 | **Location:** Madrid 2 | **Seniority:** Intern -------------------------------------------------------------------------------- /talent/job-descriptions/ml-engineering-section.md: -------------------------------------------------------------------------------- 1 | ### Engineering at source{d} 2 | 3 | The Machine Learning team is focused on providing intelligent insights into nearly all the world's Open Source code. This includes typical Big Data analysis as well as solving sophisticated Machine Learning problems. The former is conducted on Apache Spark clusters, the latter leverages extensive GPGPU acceleration on custom hardware using deep learning techniques. Often ML problems we face are unsupervised and require novel research in the domain of ML on source code (MLonCode). 4 | 5 | - Tools and work is always open-sourced to benefit the community 6 | - Publishing papers and blog posts is encouraged and part of our workflow 7 | - We enjoy releasing datasets 8 | - We regularly speak at conferences but it's not required 9 | 10 | ### source{d}'s ML engineers have released: 11 | 12 | - [src-d/awesome-machine-learning-on-source-code](https://github.com/src-d/awesome-machine-learning-on-source-code): everything that we know about MLonCode. 13 | 14 | - [ml](https://github.com/src-d/ml): MLonCode framework. 15 | 16 | - [apollo](https://github.com/src-d/apollo): modular source code de-duplication research project. 17 | 18 | - [kmcuda](https://github.com/src-d/kmcuda): lightning fast K-means and K-nearest neighbours on NVIDIA GPUs. It allows us to cluster 3 million samples, each 256 dimensions, into 1000 clusters in less than 20 minutes with the outstanding precision using two NVIDIA Titan X cards. 19 | 20 | - [minhashcuda](https://github.com/src-d/minhashcuda): lightning fast Weighted MinHash on NVIDIA GPUs. This tool allowed us to scan all +17M git repositories in 30 minutes and find [1.5M](http://1.5m/) duplicates. The results were published on [data.world](https://data.world/vmarkovtsev/github-duplicate-repositories). 21 | 22 | - [lapjv](https://github.com/src-d/lapjv): Jonker-Volgenant algorithm to solve linear sum assignment problems, accelerated with Intel AVX2 instruction set. It is capable of transforming 4096 t-SNE dots into 64x64 images in 2 minutes. 23 | 24 | - [wmd-relax](https://github.com/src-d/wmd-relax): optimized Word Mover's Distance 25 | 26 | - [hercules](https://github.com/src-d/hercules): Git repositories line burn down analysis command line tool built on top of source{d}'s [go-git](https://github.com/src-d/go-git), a Git client and server implementation in pure Go language. 27 | 28 | - [sparkpickle](https://github.com/src-d/sparkpickle): the tool to read PySpar RDD files without having to install Spark. 29 | 30 | ### The following notable technical posts, papers and talks exist: 31 | 32 | - [Source Code Identifier Embeddings](https://blog.sourced.tech/post/id2vec/) 33 | 34 | - [Open Source Stack for Machine Learning on Source Code](http://vmarkovtsev.github.io/gdg-2017-berlin/) 35 | 36 | - [Analyzing GitHub, How Developers Change Programming Languages Over Time](https://blog.sourced.tech/post/language_migrations/) 37 | 38 | - [GitHub Contributions Graph: Analyzing Pagerank & Proving the 6 Handshakes Theory](https://blog.sourced.tech/post/handshakes_pagerank/) 39 | 40 | - [Similarity of GitHub Repositories by Source Code Identifiers](http://vmarkovtsev.github.io/techtalks-2017-moscow/) 41 | 42 | - [397 Languages, 18,000,000 GitHub repositories, 1.2 billion files, 20 terabytes of code: Spaces or Tabs](https://blog.sourced.tech/post/tab_vs_spaces/) 43 | 44 | - [Topic modeling of public repositories at scale using names in source code](https://arxiv.org/abs/1704.00135) - paper 45 | 46 | - [Hands on with the most starred GitHub repositories](https://blog.sourced.tech/post/github_stars/) 47 | 48 | - [Source code abstracts classification using CNN](http://vmarkovtsev.github.io/slush-2016/) 49 | 50 | ### The following datasets published: 51 | 52 | - [Names in source code extracted from 13 000 000 GitHub repositories. Not people! 30GB](https://data.world/vmarkovtsev/github-source-code-names) 53 | 54 | - [October 2016 GitHub repositories not marked as forks but very similar to each other](https://data.world/vmarkovtsev/github-duplicate-repositories) 55 | 56 | - [Readme files found in all GitHub repositories (16M, October 2016](https://data.world/vmarkovtsev/github-readme-files) 57 | 58 | - [≈ 452,000,000 commits' metadata taken from 16,000,000 repositories on GitHub (Oct 2016)](https://data.world/vmarkovtsev/452-m-commits-on-github) 59 | -------------------------------------------------------------------------------- /talent/job-descriptions/offers/applications.md: -------------------------------------------------------------------------------- 1 | Senior Software Engineer in the Applications team 2 | ------------------------------------------ 3 | 4 | ### [Location & Seniority](../location-seniority-section.md) 5 | 6 | **Compensation:** 49-53,000 Euros + 0.095% [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) for senior engineers 7 | 8 | ### [Company](../company-section.md) 9 | 10 | ### [Engineering at source{d}](../engineering-section.md) 11 | 12 | ### Role 13 | 14 | This position is for a Senior Engineer in the Applications team. 15 | 16 | - As an Applications team engineer you will have a two-fold role: on one hand it's a Data Engineering, building production-level pipelines to collect and extract data from all the git repositories in the world. On the other hand, building web applications to productionize Machine Learning research on both, backend and frontend sides. 17 | 18 | - You will be expected to have strong backend coding skills in at least two languages, and very good algorithmic problem-solving skills. Programming in Go, JavaScript, and Scala, and knowledge about single-page applications, are not required but will be highly appreciated. For Go in particular we strongly believe it can be learned by any skilled developer, and we care much more about our team's mindset and prior experience than specific language skills. 19 | 20 | - Building tools for day to day use by software engineers requires good understanding of modern development processes and approaches: Unit/Integration testing, scrum, code reviews, CI/CD, Containers, etc. 21 | 22 | - As you will be working closely with the Machine Learning team - strong communication skills and interest in Machine Learning, data process, and visualization are more than welcome. 23 | 24 | Some of the projects the Application Team maintains are: 25 | 26 | - [engine](https://github.com/src-d/engine/): a simple interface to our Code as Data stack based on Docker. 27 | - [lookout](https://github.com/src-d/lookout/): a platform for Assisted Code Review. 28 | - [gemini](https://github.com/src-d/gemini/): duplicated code detection at scale. 29 | - [gitbase-web](https://github.com/src-d/gitbase-web) and [bblfsh/web](https://github.com/bblfsh/web): web interfaces for some of our projects. 30 | 31 | ### [Culture](../culture-section.md) 32 | 33 | ### [Perks](../perks-section.md) 34 | 35 | ### [Other](../other-section.md) 36 | 37 | -------------------------------------------------------------------------------- /talent/job-descriptions/offers/data-processing.md: -------------------------------------------------------------------------------- 1 | Software Engineer in the Data Processing team 2 | ------------------------------------------ 3 | 4 | ### [Location & Seniority](../location-seniority-section.md) 5 | 6 | **Compensation:** 49-53,000 Euros + 0.095% [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) for senior engineers 7 | 8 | ### [Company](../company-section.md) 9 | 10 | ### [Engineering at source{d}](../engineering-section.md) 11 | 12 | ### Role 13 | 14 | The Data Processing team is developing source{d}'s high-level code analysis applications for running scalable processing pipelines for source code analysis. Written mostly in Go, with some Scala components, it aims to be robust, friendly, flexible and capable of running on large-scale distributed clusters over petabytes of data. 15 | 16 | The team projects are: 17 | 18 | * [go-mysql-server](https://github.com/src-d/go-mysql-server/): a SQL engine with a MySQL interface, written in Go. 19 | * [gitbase](https://github.com/src-d/gitbase): a SQL interface to Git repositories, written in Go. 20 | * [gitbase-spark-connector](https://github.com/src-d/gitbase-spark-connector) gitbase connector for Apache Spark, written in Scala. 21 | 22 | You will be expected to have strong backend coding skills in at least two languages, and very good algorithmic problem-solving skills. Skill at programming in Scala and Go, and knowledge about Apache Spark, are not required but will be highly appreciated. For Go in particular we strongly believe it can be learned by any skilled developer, and we care much more about our team's mindset and prior experience than specific language skills. 23 | 24 | Good knowledge of distributed systems and parallel processing is important. Previous experience with SQL engines or similar systems is a plus. 25 | 26 | ### [Culture](../culture-section.md) 27 | 28 | ### [Perks](../perks-section.md) 29 | 30 | ### [Other](../other-section.md) -------------------------------------------------------------------------------- /talent/job-descriptions/offers/data-retrieval.md: -------------------------------------------------------------------------------- 1 | Software Engineer in the Data Retrieval team 2 | ------------------------------------------ 3 | 4 | ### [Location & Seniority](../location-seniority-section.md) 5 | 6 | **Compensation:** 49-53,000 Euros + 0.095% [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) for senior engineers 7 | 8 | ### [Company](../company-section.md) 9 | 10 | ### [Engineering at source{d}](../engineering-section.md) 11 | 12 | ### Role 13 | 14 | The Data Retrieval team is developing source{d}'s data retrieval pipelines that synchronize and provide access to any number of code repositories. Written mostly in Go, it aims to be robust, friendly, flexible and capable of running on large-scale distributed clusters over petabytes of data. 15 | 16 | We at source{d} seek to be at the heart of any project related to source code. Thus, this core tool is used both in-house for building source{d}'s unique global scale open dataset of +60M code repositories for cutting-edge Machine Learning research, as well as used by our customers to ingest git repositories to their source code processing clusters. 17 | 18 | Good knowledge of Linux, storage, networking and distributed computing is important. 19 | 20 | You will be expected to have strong backend coding skills in at least two languages, and very good algorithmic problem-solving skills. Skill at programming in Go is not required but will be highly appreciated. We strongly believe it can be learned by any skilled developer, and we care much more about our team's mindset and prior experience than specific language skills. 21 | 22 | ### [Culture](../culture-section.md) 23 | 24 | ### [Perks](../perks-section.md) 25 | 26 | ### [Other](../other-section.md) -------------------------------------------------------------------------------- /talent/job-descriptions/offers/devrel-sf.md: -------------------------------------------------------------------------------- 1 | Developer Advocate / Tech Writer 2 | ------------------------------------------ 3 | 4 | ### [Location & Seniority](../location-seniority-section.md) 5 | 6 | **Compensation:** ? [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) for ? 7 | 8 | ### [Company](../company-section.md) 9 | 10 | ### [Engineering at source{d}](../engineering-section.md) 11 | 12 | ### Role 13 | 14 | This position is for a Developer Advocate / Tech Writer as part 15 | of the source{d} Developer Relations team. This is a pretty young 16 | team based entirely in San Francisco and it is responsible for 17 | traditional Developer Relations tasks plus often some marketing, 18 | event organization, and even sales. Be prepared to wear many hats. 19 | 20 | - You will be expected to have previous experience in Developer Relations: technical writing (blog posts, white papers, etc), documentation, technical presentations on stage, and participation in forums (such as StackOverflow). 21 | - A significant amount of time you will be trying out source{d} products and writing about them in both blog posts and technical documentation. You’ll need to find defects or possible improvements and report them to the engineering team. 22 | - In addition to communication skills, you are also a good coder, with experience on both backend and frontend programming, as well as basic data retrieval (SQL) and visualization (JavaScript + graph tooling). 23 | - It's essential to manage communication within the developer community as well as with customers. 24 | - You will also be participating on technical events, helping to organize them and speaking on stage. 25 | 26 | ### [Culture](../culture-section.md) 27 | 28 | ### [Perks](../perks-section.md) 29 | 30 | ### [Other](../other-section.md) 31 | -------------------------------------------------------------------------------- /talent/job-descriptions/offers/language-analysis.md: -------------------------------------------------------------------------------- 1 | Software Engineer in the Language Analysis team 2 | ------------------------------------------ 3 | 4 | ### [Location & Seniority](../location-seniority-section.md) 5 | 6 | **Compensation:** 49-53,000 Euros + 0.095% stock options for senior engineers 7 | 8 | ### [Company](../company-section.md) 9 | 10 | ### [Engineering at source{d}](../engineering-section.md) 11 | 12 | ### Role 13 | 14 | The Language Analysis team is developing source{d} tools and libraries for generating and processing universal abstract syntax trees for programming languages. These components are integrated into the [Babelfish](https://github.com/bblfsh) Open Source project, written in Go, C++, Scala, and any other language that we're parsing. 15 | 16 | Babelfish powers the cutting-edge research that our Machine Learning team does on their ambitious mission to provide Machine Learning on Source Code. Our tools also are being used by a community of developers, researchers, and companies across the world in order to do vanguard research and build the next generation of developer tools. 17 | 18 | - Being passionate about programming languages is important as well as an interest in the lexing/parsing/semantic analysis of programming language's interpreters and compilers. 19 | 20 | - You'll be expected be experienced programming in at least two 21 | languages and have strong good algorithmic skills. Our main language is Go, but prior experience is not a requirement; we strongly believe that it can be learned easily by any skilled developer and care a lot more about our team's mindset and prior experience than any specific languages. 22 | 23 | - Modern C++ knowledge and experience would be considered a plus. 24 | 25 | ### [Culture](../culture-section.md) 26 | 27 | ### [Perks](../perks-section.md) 28 | 29 | ### [Other](../other-section.md) 30 | -------------------------------------------------------------------------------- /talent/job-descriptions/offers/lead-applications.md: -------------------------------------------------------------------------------- 1 | Lead Software Engineer in the Applications team 2 | ------------------------------------------ 3 | 4 | ### Location & Seniority 5 | 6 | **Location:** Madrid / Fully remote 7 | **Seniority:** Lead 8 | 9 | **Compensation:** 58,000 Euros + 0.195% [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) for lead engineers 10 | 11 | ### [Company](../company-section.md) 12 | 13 | ### [Engineering at source{d}](../engineering-section.md) 14 | 15 | ### Role 16 | 17 | This position is for a Lead Engineer in the Applications team. 18 | 19 | - As a Lead Engineer, you will be expected to plan current and future work, provide mentorship and oversee the progress of the team. In general, being able to make day-to-day work smooth for everyone in the team is essential. 20 | 21 | - In terms of coding, you will have a two-fold role: on one hand it's a Data Engineering, building production-level pipelines to collect and extract data from git repositories. On the other hand, building web applications to productionize Machine Learning research on both, backend and frontend sides. 22 | 23 | - You will be expected to have strong backend coding skills in at least two languages, and very good algorithmic problem-solving skills. Programming in Go, JavaScript, and Scala, and knowledge about single-page applications, are not required but will be highly appreciated. For Go in particular we strongly believe it can be learned by any skilled developer, and we care much more about our team's mindset and prior experience than specific language skills. 24 | 25 | - A good understanding of modern development processes and technologies is required, in order to build efficient developer tools for day to day use by software engineers. 26 | 27 | - As you will be working closely with the Machine Learning team - strong communication skills and interest in Machine Learning, data process, and visualization are more than welcome. 28 | 29 | - You will have a major role in the hiring proces, including screening candidates, initial calls, coding challenge reviews etc. 30 | 31 | Some of the projects the Application Team maintains are: 32 | 33 | - [engine](https://github.com/src-d/engine/): a simple interface to our Code as Data stack based on Docker. 34 | - [lookout](https://github.com/src-d/lookout/): a platform for Assisted Code Review. 35 | - [gemini](https://github.com/src-d/gemini/): duplicated code detection at scale. 36 | - [gitbase-web](https://github.com/src-d/gitbase-web) and [bblfsh/web](https://github.com/bblfsh/web): web interfaces for some of our projects. 37 | 38 | 39 | ### [Culture](../culture-section.md) 40 | 41 | ### [Perks](../perks-section.md) 42 | 43 | ### [Other](../other-section.md) 44 | -------------------------------------------------------------------------------- /talent/job-descriptions/offers/lead-infrastructure.md: -------------------------------------------------------------------------------- 1 | Software Engineer in the Infrastructure team 2 | ------------------------------------------ 3 | 4 | ### [Location & Seniority](../location-seniority-section.md) 5 | 6 | **Compensation:** 58,000 Euros + 0.195% [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) for senior engineers 7 | 8 | ### [Company](../company-section.md) 9 | 10 | ### [Engineering at source{d}](../engineering-section.md) 11 | 12 | ### Role 13 | 14 | This position is for a Lead Engineer in the Infrastructure team. The team has currently 3 members. 15 | 16 | The Infrastructure team manages multiple clusters: 17 | 18 | - Pipeline clusters, built on bare metal servers at a hosting provider. It has more than 1000 threads, more than 6TB of RAM and 500TB of storage, and it is backed by CoreOS and Kubernetes. It has two main goals: on the one hand, it stores all the available public code in a distributed filesystem and on the other hand, it runs intensive computation jobs over the stored data on top of Apache Spark. 19 | 20 | - Machine Learning research cluster, built on bare metal servers at our Madrid office. It is backed by CoreOS and Kubernetes too and it has GPUs available on every server to run deep learning algorithms. 21 | 22 | - Multiple Google Kubernetes Engine clusters for public-facing services. 23 | 24 | All clusters are managed with Terraform, Kubernetes and Helm. 25 | 26 | The team also maintains several services such as databases, queues, continuous integration, monitoring, logging, etc. 27 | 28 | At source{d}, we care about Open Source, which is why we as the infrastructure team we contribute to projects such as Terraform & CoreOS and create our own. We maintain the official Terraform provider for Helm ([terraform-provider-helm](https://github.com/terraform-providers/terraform-provider-helm)). 29 | 30 | We are looking for someone with background on Linux, networking and containers, passion for automation and experience working at scale. Finally, knowledge of at least one backend/scripting language who cares about best development practices. 31 | 32 | ### [Culture](../culture-section.md) 33 | 34 | ### [Perks](../perks-section.md) 35 | 36 | ### [Other](../other-section.md) 37 | -------------------------------------------------------------------------------- /talent/job-descriptions/offers/ml-intern.md: -------------------------------------------------------------------------------- 1 | Intern Software Engineer in the Machine Learning team 2 | ------------------------------------------ 3 | 4 | ### [Location & Seniority](../madrid-location-seniority-section.md) 5 | 6 | **Starting date:** 1st of July 2018 7 | 8 | **Duration:** Discussed on an individual basis 9 | 10 | **Compensation:** 1,200 Euros/month + accommodation 11 | 12 | ### [Company](../company-section.md) 13 | 14 | ### [Engineering at source{d}](../engineering-section.md) 15 | 16 | ### Role 17 | 18 | This internship targets students and junior engineers who are interested in the field of Machine Learning on Source Code. 19 | 20 | - Strong computer science and Machine Learning background is essential for Machine Learning team members. 21 | 22 | - You will be expected to be a passionate, skilful engineer who is able to produce amazing results quickly and reliably. 23 | 24 | - Coding skills are important; we are using Python 3 in our research and production prototyping. Besides, we occasionally code in Go, C++ and CUDA but prior knowledge of these languages is not required for the internship. 25 | 26 | - Machine learning on source code shares common ideas with Natural Language Processing, so NLP knowledge is considered a plus. 27 | 28 | - Any deep learning experience is highly appreciated. 29 | 30 | ### [Culture](../culture-section.md) 31 | 32 | ### [Perks](../perks-section.md) 33 | 34 | ### [Other](../other-section.md) 35 | -------------------------------------------------------------------------------- /talent/job-descriptions/offers/ml-senior.md: -------------------------------------------------------------------------------- 1 | Software Engineer in the Machine Learning team 2 | ------------------------------------------ 3 | 4 | ### [Company](../company-section.md) 5 | 6 | ### [Location & Seniority](../location-seniority-section.md) 7 | 8 | **Compensation:** 60-70,000 Euros + 0.1% [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) for senior engineers 9 | 10 | ### [Engineering at source{d}](../ml-engineering-section.md) 11 | 12 | ### Role 13 | 14 | - Strong Computer Science and Machine Learning background is required. 15 | 16 | - You will be expected to be a passionate, skillful engineer who is able to produce reliable research and results. 17 | 18 | - Strong programming skills are required; we use Python 3 and Go in our R&D prototyping. 19 | 20 | - Background in C++ and CUDA is considered a plus. 21 | 22 | - Machine Learning on Source Code shares common ideas with Natural Language Processing, NLP knowledge is required. 23 | 24 | - Deep Learning experience is highly appreciated. 25 | 26 | ### [Culture](../culture-section.md) 27 | 28 | ### [Perks](../perks-section.md) 29 | 30 | ### [Other](../other-section.md) 31 | -------------------------------------------------------------------------------- /talent/job-descriptions/offers/senior-pm-sf.md: -------------------------------------------------------------------------------- 1 | Senior Product Manager 2 | ------------------------------------------ 3 | 4 | ### [Location & Seniority](../sf-location-seniority-section.md) 5 | 6 | **Compensation:** competitive market salary + 0.1% [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) 7 | 8 | ### [Company](../company-section.md) 9 | 10 | ### [Engineering at source{d}](../engineering-section.md) 11 | 12 | ### Role 13 | 14 | This position is for a Senior Product Manager at source{d}. 15 | 16 | - You will be expected to have previous experience in defining and delivering products with impact for a large number of developers. 17 | 18 | - A significant amount of time you will be prototyping and exploring the future of developer tooling by discovering new applications that could be meaningful to the developer community. 19 | 20 | - You will deal with models built using modern ML stacks written in Python and C++ such as Tensorflow, Tensorboard, CUDA, so familiarity with any of those tools is a plus. 21 | 22 | - It's essential to manage communication within the developer community as well as with customers. 23 | 24 | - It's important to combine your product management skills with your coding skills in order to demonstrate the developer tools we build to the developer community. 25 | 26 | - You will be working closely with the Developer Relations team in order to explore and identify product ideas. You will have the opportunity to write blog posts and make videos about our technology, even though it's not the main responsibility of the role. 27 | 28 | ### [Culture](../culture-section.md) 29 | 30 | ### [Perks](../perks-section.md) -------------------------------------------------------------------------------- /talent/job-descriptions/offers/solutions.md: -------------------------------------------------------------------------------- 1 | Senior Solutions Engineer 2 | ------------------------- 3 | 4 | ### [Location & Seniority](../location-seniority-section.md) 5 | 6 | **Compensation:** 49-53,000 Euros + 0.095% [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) for senior engineers 7 | 8 | ### [Company](../company-section.md) 9 | 10 | ### [Engineering at source{d}](../engineering-section.md) 11 | 12 | ### Role 13 | 14 | This position is for a Senior Solutions Engineer in the new Solutions Team at source{d}. 15 | 16 | - As a Solutions Engineer you will design and build solutions based on source{d} products: source{d} Engine for large-scale source code analysis and source{d} Lookout for automated code review. 17 | 18 | - You will code primarily in Python, SQL and Go. Previous experience with Python and SQL is required. Previous experience with Go is not a strict requirement; we strongly believe that it can be learned easily by any skilled developer. Experience with other languages is a plus. 19 | 20 | - You will be involved in the definition, planning and delivery of solutions for our customers. 21 | 22 | - You will work closely with the rest of the engineering team, who will enable you to deliver demos and projects, both by means of internal support as well as development of new features. 23 | 24 | - You will participate in the development of demos and solutions that can be reused across different customers. 25 | 26 | ### [Culture](../culture-section.md) 27 | 28 | ### [Perks](../perks-section.md) 29 | 30 | ### [Other](../other-section.md) 31 | 32 | -------------------------------------------------------------------------------- /talent/job-descriptions/offers/test-senior.md: -------------------------------------------------------------------------------- 1 | Senior Test Engineer 2 | ------------------ 3 | 4 | ### [Location & Seniority](../location-seniority-section.md) 5 | 6 | **Compensation:** 49-53,000 Euros + 0.095% [stock options](https://github.com/src-d/guide/blob/master/talent/esop.md) for senior engineers 7 | 8 | ### [Company](../company-section.md) 9 | 10 | ### [Engineering at source{d}](../engineering-section.md) 11 | 12 | ### Role 13 | 14 | source{d} is building a new QA team to work across the whole software stack. This involves testing command line tools, web applications and distributed systems. Systems under test are written mainly in Go, Python, Scala and JavaScript. 15 | 16 | - Strong software engineering skills are required for this position. In particular, we expect testing code to attain the same quality level required for code under testing. 17 | 18 | - Strong programming experience in, at least, one language is required. The candidate should be willing to learn new languages such as Go and Python. 19 | 20 | - Notions of distributed systems are desirable. Kubernetes and Apache Spark are used intensively. 21 | 22 | - The role will involve improving continuous integration at source{d}, currently relying mainly on Travis CI and Appveyor. Experience with Jenkins is desirable but not required. 23 | 24 | - The role will involve assisting to improve the QA and release process. 25 | 26 | ### [Culture](../culture-section.md) 27 | 28 | ### [Perks](../perks-section.md) 29 | 30 | ### [Other](../other-section.md) -------------------------------------------------------------------------------- /talent/job-descriptions/other-section.md: -------------------------------------------------------------------------------- 1 | ## Other 2 | 3 | - We offer visa and relocation support for those wanting to work in the Madrid or San Francisco office. 4 | 5 | - The local timezone of developers who want to work remotely should be between San Francisco and Moscow. 6 | -------------------------------------------------------------------------------- /talent/job-descriptions/perks-section.md: -------------------------------------------------------------------------------- 1 | ## Perks 2 | 3 | - We go to conferences and other developer events! 4 | - Open Source Days, every second Monday, you are encouraged to work on any OSS project you choose. 5 | - Flexible hours, set your own schedule that fits you. 6 | - Free books. We will buy any books that help you learn & grow. 7 | - If you choose to work from one of our offices, you will enjoy a comfortable and spacious environment. 8 | - Annual summer and winter Christmas parties and a hackathon retreat are held in Madrid and all team members are flown over for it. 9 | - We also have our own, [Open Source craft beers](https://github.com/src-d/homebrew). -------------------------------------------------------------------------------- /talent/job-descriptions/sf-location-seniority-section.md: -------------------------------------------------------------------------------- 1 | **Location:** San Francisco / Fully remote 2 | **Seniority:** Senior/Expert -------------------------------------------------------------------------------- /talent/offboarding.md: -------------------------------------------------------------------------------- 1 | This document describes the off-boarding process at source{d}. 2 | 3 | We believe that the off-boarding process should be smooth and clear in order to cause minimal disruption for each person. 4 | 5 | The relationship with the company can finish in two different ways: 6 | 7 | #### The employee leaves voluntarily 8 | 9 | _This process describes employees working for the Spanish entity. For the USA this is not yet documented._ 10 | 11 | - The employee has to inform the company, usually 15 days in advance. 12 | - The employee has to sign a resignation letter with their information and the end date, as shown in the [example](https://drive.google.com/file/d/1pjKqEeha7_vPIsMB1ykDPWtbTUHgutdo/view?usp=sharing). 13 | - The company has to give the accountant the following information to prepare the settlement: 14 | - End date. 15 | - Type of leaving: voluntary severance. 16 | - Days of vacations left: the Office Manager has to check in Kin HR. 17 | 18 | - The accountant is going to send us the following documents: 19 | - Payslip for the current month. 20 | - Finiquito / settlement: in this case only includes days of vacations. 21 | - Certificado de empresa: proves the last 180 days working in the company. 22 | - Parte de baja: the communication to the Social security office which proves that the employee is not working anymore in the company. 23 | 24 | When every document is signed, on the last day, the Office Manager has to: 25 | - Upload the documents to the employee’s profile in KinHR. 26 | - Change the employment status to “resigned” and add the end date. 27 | - Close Slack account and suspend the Gmail account. The person's manager has to close other accounts which the employee used. 28 | - Check the hardware which the employee was working with. The employee has to return all the equipment. 29 | - Transfer the amount for the payslip. 30 | - Delete their fingerprint from the Madrid office door. 31 | 32 | #### The employee leaves involuntarily 33 | 34 | There are three types of dismissal: 35 | 1. Objective: it’s based on economic or strategic reasons. The compensation will be 20 days per year worked. 36 | 2. Disciplinary: it’s based on disciplinary reason or without reason. The compensation will be 33 days per year worked. It does not require prior notice, but an employer must notify the worker through a corresponding letter of dismissal, which states the facts prompting the dismissal and the effective date of the dismissal. 37 | 3. Collective. 38 | 39 | The challenge of the dismissals: fair dismissal, unfair dismissal or invalid dismissal. The courts have to decide, not the company. 40 | 41 | For all the types, there are the following steps: 42 | - The team leader has to inform the Office Manager of the decision beforehand, in order to be able to prepare all the documents on time. 43 | 44 | - The company has to give the accountant the following information to prepare the settlement: 45 | - End date. 46 | - Type of dismissal. 47 | - Days of vacations left: the Office Manager has to check in Kin HR. 48 | 49 | - The accountant is going to send us the following documents: 50 | - Dismissal letter (2 copies) 51 | - Payslip for the current month (2 copies) 52 | - Finiquito / settlement: in this case only includes the days of vacations left (2 copies) 53 | - Certificado de empresa: proves the last 180 days working in the company. 54 | - Parte de baja: the communication to the Social security office which proves that the employee is not working anymore in the company. 55 | 56 | The team leader should inform the employee about the decision together with another team member in the room, when possible the Office Manager, so, they are able to explain to the employee all the documents and answer their questions. 57 | 58 | The employee has to sign the dismissal letter. If the employee doesn’t agree, he should sign and add “no conforme or N.C.”. 59 | 60 | When every document is signed, on the last day, the Office Manager has to: 61 | - Upload the documents to the employee’s profile in Kin HR. 62 | - Change the employment status to “resigned” and add the end date. 63 | - Close Slack account and suspend the Gmail account. The person's manager has to close other accounts which the employee used. 64 | - Check the hardware which the employee was working with. The employee has to return all the equipment. 65 | - Transfer the amount for the payslip. 66 | - Delete their fingerprint from the Madrid office door. 67 | 68 | If the employee doesn’t agree with the dismissal, they can request the impropriety of the dismissal in the court. To do that, the employee has to go to the SMAC (Servicio de Mediación, Arbitraje y Conciliación) with this [form](https://drive.google.com/file/d/0B6AGEF9RyVDxdEFULWx1dzNSd0E/view?usp=sharing). SMAC is going to generate an appointment to discuss about the compensation. The accountant will go to the appointment as a legal representant. If the company agrees, the same day, the Office Manager will compensate the employee. This would be the last step. 69 | 70 | Compensation for dismissal in Spain depends on three fundamental factors: 71 | 72 | 1. The salary of the employee: gross annual salary. 73 | 2. The seniority of the employee within the company: when it comes to counting the seniority of the worker for compensation. 74 | 3. Type of dismissal: currently, compensation is only for objective and unfair dismissals. A fair dismissal does not give the right to compensation, unless there is a settlement. 75 | -------------------------------------------------------------------------------- /talent/onboarding/spanish_residents.md: -------------------------------------------------------------------------------- 1 | # Spanish residents 2 | This is the fastest process. Our Office Manager will first need the following information from you: 3 | 4 | * Full name 5 | * National Identification Number (DNI or NIE) 6 | * Date of birth 7 | * Social Security Number 8 | * Address 9 | * Nationality 10 | * Studies 11 | 12 | We also need all the information regarding the job offer, which can be checked in Lever or by asking the Hiring Manager: 13 | * Position 14 | * Salary 15 | * Start date 16 | 17 | Once this information has been received, we put it together and send it to our payroll firm. 18 | They will then send four documents back: 19 | * Employment contract 20 | * Parte de alta -- A document certifying that we have told the Social Security that you have started working with us. 21 | * IDC -- Informative document that gives you relevant information about the fiscality of your employment status. 22 | * Huella de contrato -- A document certifying that we have told the government that you have started working with us. 23 | 24 | 25 | Jorge has to sign two copies of the contract, one for source{d} and one for you. All of these will be saved and available on KinHR. 26 | 27 | Every new team member will be set up on the following accounts: 28 | * [Gmail](https://gmail.com) → name@sourced.tech or name.surname@sourced.tech (in case the first one is taken) 29 | * [Google Calendar](https://calendar.google.com)’s Meeting Rooms 30 | * [Slack](https://slack.com) 31 | * [KinHR](https://kinhr.com) 32 | * Other tools based on each team 33 | -------------------------------------------------------------------------------- /talent/one_on_one_guide.md: -------------------------------------------------------------------------------- 1 | # source{d} One-On-One’s Guide 2 | 3 | Below is the guide we use at source{d} for one-on-one meetings between you and your manager. They are guiding questions and it's okay if someone choses to adapt them. 4 | 5 | ## Schedule: 6 | 7 | * One-on-one's are to be held at a minimum every 3 months 8 | 9 | ## General: 10 | 11 | * Refer back to your private notes & report of the previous month before meeting the person 12 | 13 | * Make sure any "company news" has been understood by the team and any doubts addressed  14 | 15 | * Communication inside the teams and inside the company can always be improved 16 | 17 | ## Cardinal rules: 18 | 19 | * No matter in what part below, if something comes up you believe should stay private between you and your team member or has the expectation of privacy, keep it private! 20 | 21 | * Take notes 22 | 23 | * No phone (full attention) 24 | 25 | * Be on time! 26 | 27 | * Body language is important (no arms crossed, no sitting in opposite sides of table) 28 | 29 | * Don't look at the time (set an alarm after 1h if needed) 30 | 31 | * They need to be in the conference room or in a quiet environment (not a bar) 32 | 33 | * Set the one-on-one’s in everyone’s calendar
 34 | 35 | 36 | ## Suggested Template: 37 | 38 | Starting the meeting please let the person know that anything they consider private will be kept private between the two of you. But, general feedback on the company, performance related, improvement suggestions and career development may be discussed with members of the management team or other leads. 39 | 40 | ### Part I. Company feedback 41 | 42 | * Start with gathering feedback on the company: 43 | 44 | * What do you believe is source{d}’s strategy right now? 45 | 46 | * Where do you have doubts about the company? 47 | 48 | * How do you feel our culture is evolving? 49 | 50 | * Take note of information that seems unknown to people that needs to be communicated better 51 | 52 | ### Part II. Self-assessment 53 | 54 | * Please let me know what you believe you’ve done well at source{d} in the last month? 55 | 56 | * Please let me know where you believe you can still improve? (it is important this becomes part of the action plan on how to improve) 57 | 58 | * Could you rate your happiness from 1-10? If not 10, why not and what can we do to improve it  59 | 60 | ### Part III. Team improvement 61 | 62 | * What do you believe we can do better as a team?  63 | 64 | ### Part IV. Feedback on performance 65 | 66 | * Praise first: what was well done and why you think so. It is important to give concrete examples here of deliverables/projects etc. you believe went well 67 | 68 | * Downsides: always mention the negative followed by actions to improve it. Before your meeting be sure you have prepared an action plan (set of bullet points on how you will together improve things) to tackle the downsides and **follow up** on it until the following one-on-one.  69 | 70 | ### Part V. Career Development 71 | 72 | This part is about finding out the career goals of your team member so that you can evaluate future career opportunities within source{d}, support we might be able to offer, and to know when someone is on a path that has a limited lifetime within source{d}. 73 | 74 | * What would you like to be doing in 5 years? 75 | 76 | * What is your dream job? 77 | 78 | If you have a hard time getting to someone’s career goals (or they don’t know them yet themselves), ask the following questions: 79 | 80 | * What do you think you are best at? 81 | 82 | * What do you think you're worse at? 83 | 84 | * What do you like the most about your job? The least? 85 | 86 | * Complete the sentence: "It was a good day at source{d} when ....."  87 | 88 | ### Part VI. Personal **(completely private)** 89 | 90 | * The purpose here is to see how you can help your team member, if there is something source{d} can do to help and also to have an understanding of any situations that are going on in someone’s personal life 91 | 92 | * Ask about your team members' personal lives 93 | 94 | * Any problems they are having inside the company between people (this is about helping them solve it and it is important you stay unbiased) 95 | 96 | ### Part VII. Feedback on yourself 97 | 98 | * Ask for feedback on yourself: be open and push them to be honest. It is really important here people know that you won’t take it personally, often starting with an example of something you know you’ve been doing wrong helps. 99 | -------------------------------------------------------------------------------- /talent/open_source_days.md: -------------------------------------------------------------------------------- 1 | 2 | # Open Source Days 3 | 4 | Developers at source{d} dedicate 10% of their development time to Open Source projects of their choice. 5 | This is accomplished with Open Source Days (OSD) every two weeks, on Mondays. 6 | 7 | ## The Rules 8 | 9 | ### Open Source Everything 10 | 11 | The result of OSD MUST be Open Source, whether it is code, prose, a dataset or a [beer recipe](https://github.com/src-d/homebrew). We generally use public GitHub repositories for this. They can be either in a personal account, a dedicated organization or the [src-d organization](https://github.com/src-d). 12 | 13 | ### DON'T do your job 14 | 15 | OK. Actually, OSD is part of every source{d} developer's job. But the decision on what to do 16 | on OSD should be driven exclusively by your interests. While you can work on a source{d} project such as 17 | [go-git](https://github.com/src-d/go-git), we also encourage you to work on something not related 18 | to your daily job. 19 | 20 | ## How To 21 | 22 | 1. **Share your plan.** You should briefly explain what you are going to do and what do you expect to accomplish by the end of the day. Explanations about the project you're going to contribute are done in the `#osd` slack channel, in the beginning of the day. 23 | 2. **Do it.** Execute your plan for the day and push it! 24 | 3. **Presentation.** At the end of the day, everyone presents their work in the `#osd` slack channel with the corresponding source code and description. 25 | -------------------------------------------------------------------------------- /talent/relocation_expenses.md: -------------------------------------------------------------------------------- 1 | ## Relocation support 2 | 3 | - source{d} is a fully-remote company where every member is allowed to work from the location of their choice. Nonetheless, we are always happy to have members joining us in our offices. 4 | 5 | - For that, we are willing to help our team members relocate from another country, and offer support throughout the entire process to them and their family. 6 | 7 | source{d} provides: 8 | 9 | - Flights to relocate to Madrid, including for family members, are paid by source{d} 10 | - Hotel/Airbnb for the first 2 weeks of your stay in Madrid 11 | - Reimbursement/direct payment of invoices for up to 2,000 Euros* for relocation-related expenses, such as: 12 | - Moving companies/shipping for furniture and boxes 13 | - Car rental or taxis 14 | 15 | \* We would like to offer a higher amount in the future but for now we're still a startup and we hope this covers at least part of our new team members’ expenses. 16 | 17 | ### Other 18 | 19 | - For the SF office, the amount will be on a case by case basis for inter-state relocations, until we fully determine it. 20 | -------------------------------------------------------------------------------- /talent/sourcerers/README.md: -------------------------------------------------------------------------------- 1 | ## Questions to learn sourcerers better 2 | 3 | According to research, it becomes harder to establish a personal relationship with other team members when working remotely. 4 | 5 | In order to know you better, as a new member we would like you to reply a few personal questions, as well as share with us your social media accounts you are comfortable with. By doing so we can establish more personal relationships outside of work activities. 6 | 7 | We have created a list of the questions and below are the instructions on how to successfully respond to the questions and make other members read them. If there are any questions you don't feel comfortable to answer, feel free to skip them. 8 | 9 | - Copy the content of the [questions](questions.md) 10 | - Create a new file (your_GitHub_username.md) in a new branch with your responses on the template you copied and create a Pull Request 11 | - Your file should be placed in this folder 12 | - You can merge your commit(s) after your answers have been approved and/or suggestions have been done, ideally in a few days so everyone will have the chance to read them, as the open PR provides more visibility. 13 | 14 | For people concerned about their privacy, they can instead create the Pull Request with their answers in the [company](https://github.com/src-d/company/tree/master/sourcerers) repository. 15 | -------------------------------------------------------------------------------- /talent/sourcerers/dpordomingo.md: -------------------------------------------------------------------------------- 1 | # David Pordomingo 2 | 3 | 4 | ## General 5 | 6 | - What's your name? How do your friends call you? 7 | - David 8 | - When were you born? 9 | - February 27th, 1982 10 | - Where are you from? Where have you lived? 11 | - Madrid/Spain, I lived my 10 first years in Torrejón de Ardoz (a town near Madrid) 12 | - What languages (natural and programming ones) do you know? 13 | - Spanish, Spanglish, ~~German~~ 14 | - Go, JavaScript, PHP, HTML, CSS; I almost forgot Java (for Android too) 15 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 16 | - [dpordomingo](https://github.com/dpordomingo) @ github 17 | - [RizomeEs](https://twitter.com/RizomeEs) @ twitter 18 | - [dpordomingo](https://www.linkedin.com/in/dpordomingo) @ linkedin 19 | 20 | ## Work 21 | 22 | - What are you going to be doing at source{d}? 23 |  - I've been working at source{d} since Aug.2016; I entered in Tools team, then it was renamed 24 | to Platform, then it was renamed to Applications. I do front and back stuff :D 25 | - Why did you join source{d}? 26 | - Before joining the company I already worked for almost 2 years with ex-sourcerers; I did not 27 | lose the contact with them so they could tell me the awesome things they were doing, and how they 28 | were working... when it was time to evolve in my career, I wanted to join the team in which they 29 | were working: source{d} 30 | - Where will you work from? 31 | - Madrid office 32 | - If you could only save one programming language, which one would it be? 33 | - Go, why not? 34 | - If you wanted to do an investment, what company would you choose? 35 | - TOFTS; 36 | - _`tl;dr`_ no idea... if you'd give me some thousand of $$$ I'd spend some time thinking on it, and I'm pretty sure I'd find a company where I'd like to invest... ;) 37 | 38 | 39 | ## Other 40 | 41 | - What are your hobbies and what do you like about them? 42 | - I'm pretty sure I'll forget some of them... but I'll try to list the most important: 43 | - sports: 44 | - Biking, I do it for commuting, 45 | - Hiking, I love the nature, 46 |      - Climbing ([bouldering](https://en.wikipedia.org/wiki/Bouldering#Indoor_bouldering)), I learned on Aug.2017 and I'm loving it every weekend, 47 | - I started liking Yoga, but I'm not sure if I'll find time for doing it, 48 | - thinking: 49 | - Photography, but I have not enough time to develop the huge amount of photos I take, 50 | - Art in general, Architecture in particular, 51 | - Philosophy, and discussions in general, 52 | - others: 53 | - Eating, and traveling to different places/cultures to eat different things; I'm a foodie, 54 | - Cheese and bread; yes, they're also food: but I like especially both, 55 | - Baking bread... yes... yes... I know... 56 | - What was the last lie you told? 57 | - _I don't remember_ ← that one 58 | - What was your first thought when you woke up this morning? 59 | - _I need to be on time to the office for a new sourcerer welcome breakfast_
I failed, but it 60 | turns out it was not today but next Thursday. Karma offered me a second chance. 61 | - What question do you hate to answer? 62 | - _«What was the last lie you told?»_ ;) 63 | - What’s your favorite knock-knock joke? 64 | - I have no memory for jokes, sorry 65 | - If you could have a coffee with any person in the world, who would it be? 66 |  - A coffee?? any politician or philosopher to discuss whatever topic... 67 | - But I'd rather prefer to spend one day/week/month working with a nature/war photographer like [Jayaprakash Bojan](http://photography.nationalgeographic.com/nature-photographer-of-the-year-2017/gallery/winners-all/1/) or [Javier Manzano](http://framework.latimes.com/2013/04/15/2013-pulitzer-prize-winners/#/0), 68 | or an architect like [Gehry](https://www.thomasmayerarchive.de/categories.php?cat_id=313&sessionid=2013a9944085d8f25d85084eff87dafa&l=english#&gid=1&pid=98) or [Libeskind](https://www.jmberlin.de/en/libeskind-building). 69 | - Would you like to share with us a story about yourself? 70 | - I studied architecture. I "almost" finished it but I swiped to computers world because it is almost the same thing, 71 | but it offers more job opportunities. 72 | - Since I love architecture and brico... I (almost) built my own home. 73 | - What food do you like and dislike? 74 | - like: Bread and Cheese; meet and fish; pizza; traditional food... 75 | - dislike: almost nothing... 76 | - What is your favorite quote? 77 | - _«No corras, a donde has de llegar es a ti mismo.»_ (adapted from 78 | [a poem](https://books.google.es/books?id=aMu1zzDK9g8C&pg=PA88&dq=%C2%A1No+corras.+Ve+despacio,+que+adonde+tienes+que+ir+es+a+ti+solo!+juan+ramon+jimenez&hl=es&sa=X&ei=l4brU5T9CeSR7AaB_oGQAQ#v=onepage&q=%C2%A1No%20corras.%20Ve%20despacio%2C%20que%20adonde%20tienes%20que%20ir%20es%20a%20ti%20solo!%20juan%20ramon%20jimenez) 79 | wrote by [Juan Ramón Jimenez](https://en.wikipedia.org/wiki/Juan_Ramón_Jiménez))
80 | (do not run, your destiny should be yourself) 81 | -------------------------------------------------------------------------------- /talent/sourcerers/eiso.md: -------------------------------------------------------------------------------- 1 | # Eiso Kant 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - Eiso (sorry, no funny nicknames) 6 | - When were you born? 7 | - 1990 8 | - Where are you from? Where have you lived? 9 | - I am Dutch. I grew up in The Netherlands, moved to Spain, lived for shorter periods in China, Indonesia & USA, and recently moved to Lisbon where I plan to stay for the foreseeable future. 10 | - What languages (natural and programming ones) do you know? 11 | - English & Dutch as a native, I can handle myself well in Spanish, a decent amount of German and now trying to learn Portuguese. 12 | - Over the years I've programmed for longer periods of time in Haskell, Go, Python, Ruby & PHP. I've played around with a lot more languages. These days I am mainly coding in Go and doing HackerRank style problems in Haskell. 13 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 14 | - I am only on Twitter ([@eisokant](twitter.com/eisokant)), I am not a big fan of social media (I like digital privacy). 15 | 16 | **Work** 17 | - What are you going to be doing at source{d}? 18 | - Keep on building a great team, help set direction and always try to be clear and open in communications. 19 | - Why did you join source{d}? 20 | - I co-founded it. Today I would join source{d} because of the people and the immense passion for programming that is shared by the team. 21 | - Where will you work from? 22 | - Either remote from Lisbon or from our San Francisco office, once in a while you'll see me drop by in Madrid for our get-togethers. 23 | - If you could only save one programming language, which one would it be? 24 | - Haskell because I feel that the learning would never stop. 25 | - If you wanted to do an investment, what company would you choose? 26 | - I am all in on source{d} but if I had to invest in something else, it would probably be related to innovation in agriculture or education (the fundamentals of progress). 27 | 28 | **Other** 29 | - What are your hobbies and what do you like about them? 30 | - I have never been a person who had a lot of hobbies. I am happiest when I have a combination of spending time with family and a few close friends, being able to work on things I love with interesting and kind-hearted people, and finding time to be healthy and exercise. 31 | - What you could call hobbies is that since a month I surf, started boxing again and do a lot of yoga. 32 | - When I am rested I enjoy reading, when I am tired I love watching TV shows and movies. 33 | - What was the last lie you told? 34 | - Honestly, can't remember 35 | - What was your first thought when you woke up this morning? 36 | - Is it sunny outside? 37 | - What question do you hate to answer? 38 | - For those of you who know me, I am a pretty open book about myself (I can't think of any question I wouldn't answer) but I take the privacy of family and friends very serious. 39 | - What’s your favorite knock-knock joke? 40 | - I am terrible at remembering jokes but I love good humor. 41 | - If you could have a coffee with any person in the world, who would it be? 42 | - My younger self, I'd love to dispense some advice, all though I am not sure if younger-Eiso would listen ;). 43 | - Would you like to share with us a story about yourself? 44 | - I like to get out of my comfort zone, sometimes that means reading a lot about a topic I knew nothing about, in the past that has also meant, bungee jumping into a pool at 1am in the middle of a club while set on fire (there is a place in Bali, Indonesia where they allow this) or skydiving. 45 | - What food do you like and dislike? 46 | - I am incredibly passionate about food, actually, that should have been listed under "hobbies". Exploring new countries/cultures through food is one of my favourite past times (I've had the privilege to patron 100s of restaurants) and so is cooking (lately I've been experimenting with barbeque). 47 | - What is your favorite quote? 48 | - "Take nothing for granted" 49 | -------------------------------------------------------------------------------- /talent/sourcerers/erizocosmico.md: -------------------------------------------------------------------------------- 1 | # Miguel Molina 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - Miguel 6 | - When were you born? 7 | - 1993 8 | - Where are you from? Where have you lived? 9 | - Jaén -> Es Castell (Menorca) -> Maó (Menorca) -> Seville -> Jaén -> Madrid 10 | - What languages (natural and programming ones) do you know? 11 | - Natural: Spanish, Catalan, English and I used to know a bit of German back in high school. 12 | - Programming: Go, JavaScript, Java, Scala, Python, Ruby, Elm, ReasonML/OCaml, Clojure, a bit of Swift, a bit of Rust, C, PHP, and probably some other that I'm either not very proficient in or I can't remember. 13 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 14 | - @erizocosmico everywhere 15 | 16 | **Work** 17 | - What are you going to be doing at source{d}? 18 | - Well, I've been here for almost 3 years so pretty much a little bit of everything. Started doing frontend, then a lot of backend, then some frontend again at tools/platform team, then full backend at data retrieval team. 19 | - Why did you join source{d}? 20 | - Project sounded cool, Open Source Fridays sounded cool and people in the team seemed cool and smart. 21 | - Where will you work from? 22 | - Madrid, either from the office or from home 23 | - If you could only save one programming language, which one would it be? 24 | - Rust. But I'd switch jobs to something that does not involve programming because programming in Rust makes me angry and swear like a sailor. 25 | - If you wanted to do an investment, what company would you choose? 26 | - Not into investments/business, so idk. If I *really really* had to invest in a company because someone was pointing at me with a gun I guess I'd just roll a dice and hope for the best. 27 | 28 | **Other** 29 | - What are your hobbies and what do you like about them? 30 | - Reading novels (mostly fantasy/sci-fi/crime stuff). 31 | - Playing TTRPGs (mostly D&D but open to anything). 32 | - Watching TV shows (but I'm gonna keep private the kind of tv shows I watch). 33 | - Reading comic books. 34 | - Videogames, though I rarely play, mostly because I'm a little picky with games (and suck at them). 35 | - What was the last lie you told? 36 | - "Just 30 more minutes of Zelda". 37 | - What was your first thought when you woke up this morning? 38 | - "I wish I had churros for breakfast". 39 | - What question do you hate to answer? 40 | - Anything about me (oh, the irony). 41 | - What’s your favorite knock-knock joke? 42 | - Can't remember one right now. 43 | - If you could have a coffee with any person in the world, who would it be? 44 | - It would have to be something else because I don't like coffee, but I'd say Grant Morrison or Matthew Mercer. 45 | - Would you like to share with us a story about yourself? 46 | - I used to have blue hair just a few months before joining source{d}. 47 | - What food do you like and dislike? 48 | - Like: meat, reduced set of vegetables, pasta, japaneese, etc 49 | - Dislike: fish, sushi, mushrooms and spicy food 50 | - What is your favorite quote? 51 | - No idea. 52 | -------------------------------------------------------------------------------- /talent/sourcerers/gomesfernanda.md: -------------------------------------------------------------------------------- 1 | # Fernanda Gomes 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - Fernanda. My friends call me "Fê" or "Fer". 6 | - When were you born? 7 | - June 1984. 8 | - Where are you from? Where have you lived? 9 | - I'm naturally from Santos/BR. I lived in Santos, Campinas and São Paulo (Brazil, the three of them). 10 | - What languages (natural and programming ones) do you know? 11 | - Portuguese, English, Spanish. 12 | - Python, Go; learnt Pascal and C++ in college but forgot. 13 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 14 | - [LinkedIn](https://www.linkedin.com/in/g0mesfernanda/) | [Twitter](http://twitter.com/gofernanda_) | [Instagram](http://www.instagram.com/ohhrosie) | [Last.fm](https://www.last.fm/pt/user/fergomes) 15 | 16 | **Work** 17 | - What are you going to be doing at source{d}? 18 | - Data Intelligence, under Product Team. I work turning the internal and external reality into actionable insights for decision-making in a variety of levels and teams; this could take the form of spreadsheets, data pipelines, software, dashboards, reports, presentations, recommendations… a.k.a. data science when closer to business than to research. 19 | - Why did you join source{d}? 20 | - Super great opportunity! I was living in Brazil and studying Machine Learning when I heard source{d} needed a Data Intelligence analyst. A great job in a great company that's located in a great city. 21 | - Where will you work from? 22 | - Mostly Madrid office; sometimes remote from my house, sometimes remote from Brazil. 23 | - If you could only save one programming language, which one would it be? 24 | - Python. 25 | - If you wanted to do an investment, what company would you choose? 26 | - No idea. 27 | 28 | **Other** 29 | - What are your hobbies and what do you like about them? 30 | - Anything related to music; attending concerts, listening to vinyls while having food and wine with friends, going to vinyl fairs. I love the power that music has to turn feelings into melodies, make you dance, make you cry, make you feel invincible etc. 31 | - Beer with friends: I'm an introvert (really, I swear), so I have few true friends. And I love bonding with them, having a laugh over stupid things or deep conversations in bars while drawing on napkins. 32 | - Cooking (and eating afterwards of course): I love cooking, I believe it has a strong relation to our roots, our hearts, our feelings. 33 | - Reading, going to museums, watching movies: activities that take my mind off my comfort zone and makes me think "WOW". 34 | - Lately, exercising: it's been a couple of years that I really enjoy exercising (especially running), weirdly. To feel the rush of blood, the energy, my mind becoming clearer... it's awesome. 35 | - Deep, philosophical, crazy conversations. 36 | - What was the last lie you told? 37 | - "I have read and accept the terms and conditions" 38 | - What was your first thought when you woke up this morning? 39 | - "Please, cat, get out of my face" (literally) 40 | - What question do you hate to answer? 41 | - Any shallow question made by someone who's not really interested in an answer. 42 | - What’s your favorite knock-knock joke? 43 | - Most of my favorite jokes are stupid puns in Portuguese. My favorite one is (I adapted to Spanish): 44 | > - "Quién eres tu?" 45 | 46 | > - "Soy el Paraguayo y vine aquí para matarte!" 47 | 48 | > - "Para que?" 49 | 50 | > - "Paraguayo!" 51 | - If you could have a coffee with any person in the world, who would it be? 52 | - My father (he passed away when I was 9, he was a brilliant and beloved man). 53 | - Would you like to share with us a story about yourself? 54 | - I love science since I was a kid. My dad was a chemical engineer and chemistry teacher, so my house was filled with beakers, Erlenmeyer flasks, science books etc. Besides dolls, I usually got small "chemistry lab kits for kids" as Christmas gifts and I didn't care about instructions, so I ended up mixing all the substances together, making a big mess. 55 | - What food do you like and dislike? 56 | - Love: PIZZA. PIZZA. [PIZZA!](https://image.ibb.co/hcqAbc/tumblr_mtszx4_P9eq1qa7judo1_500.gif) I mean, I like many dishes, but if I had to pick something to eat after spending 2 months in a space station, it would be pizza. Unless it had ginger, I hate anything with ginger. 57 | - What is your favorite quote? 58 | - “A smooth sea never made a skilled sailor.” 59 | -------------------------------------------------------------------------------- /talent/sourcerers/jorgeschnura.md: -------------------------------------------------------------------------------- 1 | # Jorge Schnura 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - My name's Jorge andm y friends call me Jorge, Schnurious or Chuchu (don't ask, please) 6 | - When were you born? 7 | - 15.11.1990 8 | - Where are you from? Where have you lived? 9 | - I was born in Madrid. I'm half-Spanish, half-German (fro my father's side). I've always lived in Madrid, except for a brief period in NY and Dnepropetrovsk, Ukraine. 10 | - What languages (natural and programming ones) do you know? 11 | - Spanish, German, English. I used to know Java, C++ and Python, but have forgotten it :( 12 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 13 | - Twitter: https://twitter.com/jorgeschnura 14 | - Medium: https://medium.com/@jorgeschnura 15 | - Linkedin: linkedin.com/in/jorgeschnura 16 | 17 | **Work** 18 | - What are you going to be doing at source{d}? 19 | - Eiso and me work closely together, but I take care of internal operations stuff like internal policies, commercialization, legal, etc. This changes every few months though as we evolve as a startup. 20 | - Why did you join source{d}? 21 | - I had no other option when I co-founded it 22 | - Where will you work from? 23 | - Mostly from the Madrid office, although I usually work from home on Wednesdays. 24 | - If you could only save one programming language, which one would it be? 25 | - From the three that I've learnt it would probably be Python. 26 | - If you wanted to do an investment, what company would you choose? 27 | - I guess source{d} doesn't count, so it would be Nvidia. 28 | 29 | **Other** 30 | - What are your hobbies and what do you like about them? 31 | - Videogames: I like to be transported to different worlds and get lost there. I prefer single-player games with deep stories and RPG elements. But I also like to play League of Legends with friends 32 | - Skiing: I love the sense of speed and skiing is for me the ultimate way to feel it 33 | - Eating: When I travel, I enjoy the food as much as the sights 34 | - What was the last lie you told? 35 | - Can't remember tbh 36 | - What was your first thought when you woke up this morning? 37 | - I woke up very early, so my first thought was not to make noise so that I wouldn't wake my wife up. 38 | - What question do you hate to answer? 39 | - I generally dislike questions that are asked for the sake of asking when the person would take less time in figuring out the answer than in asking and listening to the reply. 40 | - What’s your favorite knock-knock joke? 41 | - I'm never able to remind any jokes. Luckily, all my friends are quite good at it. 42 | - If you could have a coffee with any person in the world, who would it be? 43 | - Colin Moriarty 44 | - Would you like to share with us a story about yourself? 45 | - There's many, but one you probably don't know is that my oldest brother is the direct descendant of Quevedo (direct meaning only looking at the elder sibling in the genealogical line), one of the most important peots in Spanish history. But don't expect much poetry from me, those genes got lost somewhere on the way. 46 | - What food do you like and dislike? 47 | - I like everything. I think it is important to learn to appreciate food in general, no matter what it is, for obvious reasons. 48 | - What is your favorite quote? 49 | - Soy dueño de mis silencios y prisionero de mis palabras. I am the owner of my silences and the prisoner of my words 50 | -------------------------------------------------------------------------------- /talent/sourcerers/mcuadros.md: -------------------------------------------------------------------------------- 1 | # Máximo Cuadros Ortiz 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - Máximo 6 | - When were you born? 7 | - June, 1981 8 | - Where are you from? Where have you lived? 9 | - Madrid, Spain 10 | - What languages (natural and programming ones) do you know? 11 | - Spanish, English (Spanish version) 12 | - Nowadays mainly Go, in the past PHP, Python, JavaScript, in ancient times VisualBasic, ASP, Tcl 13 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 14 | - [@mcuadros_](https://twitter.com/mcuadros_) at Twitter 15 | 16 | **Work** 17 | - What are you going to be doing at source{d}? 18 | - CTO 19 | - Why did you join source{d}? 20 | - Well I was there when it was created. :D 21 | - Where will you work from? 22 | - Madrid Office 23 | - If you could only save one programming language, which one would it be? 24 | - Since now I am mainly coding in Go, Go. And if you asking if could delete one, Python! 25 | - If you wanted to do an investment, what company would you choose? 26 | - Hard to tell. 27 | 28 | **Other** 29 | - What are your hobbies and what do you like about them? 30 | - Coding, Coding, 3D Printing, Coding and Beer. 31 | - What was the last lie you told? 32 | - I don't remember it. 33 | - What was your first thought when you woke up this morning? 34 | - Had a shower and thought about the company. 35 | - What question do you hate to answer? 36 | - Well.... these ones, and about the gender of angels. 37 | - What’s your favorite knock-knock joke? 38 | - Not very common in Spain, we have here jokes about [Jaimito](https://en.wikipedia.org/wiki/Little_Johnny) 39 | - If you could have a coffee with any person in the world, who would it be? 40 | - I don't drink coffee, and usually, I don't admire people, I admire the acts. 41 | - Would you like to share with us a story about yourself? 42 | - Pay me a beer and I will tell you a lot. 43 | - What food do you like and dislike? 44 | - I am the most picky person with the food you've evr met, I barely like anything. 45 | - What is your favorite quote? 46 | - Las excusas son como el culo, todo el mundo tiene uno. 47 | -------------------------------------------------------------------------------- /talent/sourcerers/meyskens.md: -------------------------------------------------------------------------------- 1 | # Maartje Eyskens 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - Maartje, but I also listen to all different variations since it is hard to pronounce. 6 | - When were you born? 7 | - 1997 8 | - Where are you from? Where have you lived? 9 | - A small town in Belgium. 10 | - What languages (natural and programming ones) do you know? 11 | - Dutch, English, a bit of French, Go, JavaScript and some more. 12 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 13 | - [@MaartjeME](https://twitter.com/MaartjeME) 14 | 15 | **Work** 16 | - What are you going to be doing at source{d}? 17 | - Infrastructure 18 | - Why did you join source{d}? 19 | - Open Source 20 | - Remote Friendly 21 | - Awesome projects 22 | - Friendly people! 23 | - Where will you work from? 24 | - My desk in my appartment, only 2 meters away from a coffee machine 25 | - If you could only save one programming language, which one would it be? 26 | - Go. There are probably more important ones but I'd miss the Gophers 27 | - If you wanted to do an investment, what company would you choose? 28 | - Any charity, it may not return anything to me but the world would be a little better 29 | 30 | **Other** 31 | - What are your hobbies and what do you like about them? 32 | - Trainspotting, because trains 33 | - Nail art, because coding with pretty nails is always more fun 34 | - What was the last lie you told? 35 | - "I do not know who your killer is" at the psycho killer game of the retreat. 36 | - What was your first thought when you woke up this morning? 37 | - "Yay my 2nd day in the office!" 38 | - What question do you hate to answer? 39 | - "What's for dinner?" (I can never decide) 40 | - What’s your favorite knock-knock joke? 41 | - None actually 42 | - If you could have a coffee with any person in the world, who would it be? 43 | - Jess Frazelle (Jess if you read this email me) 44 | - Would you like to share with us a story about yourself? 45 | - Can't think of any, so no. 46 | - What food do you like and dislike? 47 | - It depends in which country I am in 48 | - What is your favorite quote? 49 | - [Not a quote but I hope it counts](https://twitter.com/mattiasgeniar/status/1039892272643489792) 50 | -------------------------------------------------------------------------------- /talent/sourcerers/questions.md: -------------------------------------------------------------------------------- 1 | # {Name and Surname} 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - {answer} 6 | - When were you born? 7 | - {answer} 8 | - Where are you from? Where have you lived? 9 | - {answer} 10 | - What languages (natural and programming ones) do you know? 11 | - {answer} 12 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 13 | - {answer} 14 | 15 | **Work** 16 | - What are you going to be doing at source{d}? 17 | - {answer} 18 | - Why did you join source{d}? 19 | - {answer} 20 | - Where will you work from? 21 | - {answer} 22 | - If you could only save one programming language, which one would it be? 23 | - {answer} 24 | - If you wanted to do an investment, what company would you choose? 25 | - {answer} 26 | 27 | **Other** 28 | - What are your hobbies and what do you like about them? 29 | - {answer} 30 | - What was the last lie you told? 31 | - {answer} 32 | - What was your first thought when you woke up this morning? 33 | - {answer} 34 | - What question do you hate to answer? 35 | - {answer} 36 | - What’s your favorite knock-knock joke? 37 | - {answer} 38 | - If you could have a coffee with any person in the world, who would it be? 39 | - {answer} 40 | - Would you like to share with us a story about yourself? 41 | - {answer} 42 | - What food do you like and dislike? 43 | - {answer} 44 | - What is your favorite quote? 45 | - {answer} 46 | -------------------------------------------------------------------------------- /talent/sourcerers/rkeramitas.md: -------------------------------------------------------------------------------- 1 | # Romain Keramitas 2 | 3 | ## General 4 | 5 | What's your name? How do your friends call you? 6 | Romain, my friends usually call me Rom or Kera (the latter sounds better in french :p) 7 | When were you born? 8 | 22 / 12 / 1994 9 | Where are you from? Where have you lived? 10 | I'm from Paris, I lived their almost all my life a part from the last three years, during which I lived in Metz, Montreal and now Madrid. 11 | What languages (natural and programming ones) do you know? 12 | - I speak french and english fluently, and have got basics in german and japanese, as well as spanish now. 13 | - Python, SQL, Bash, HTML (kinda), also studied Java, C and Matlab, but never got any good. 14 | Would like to share your Twitter, Instagram or Medium or any other social media account? 15 | I'm on none of those xD I use Facebook somewhat, mostly to keep track of people, but I'm not big on social media. 16 | 17 | ## Work 18 | 19 | What are you going to be doing at source{d}? 20 | Intern in the ML team 21 | Why did you join source{d}? 22 | In order to complete the second 6 month internship of my gap year, and learn as much as possible on the cutting edge ML done here, to put it briefly. 23 | Where will you work from? 24 | Mostly the Madrid office, although I'll sometimes work remotely from France when travelling there. 25 | If you could only save one programming language, which one would it be? 26 | Python for the win :p 27 | If you wanted to do an investment, what company would you choose? 28 | (Facebook ofc lol)[https://gizmodo.com/this-time-facebook-really-might-be-fucked-1823885655] 29 | 30 | ## Other 31 | 32 | What are your hobbies and what do you like about them? 33 | I like playing handball, because it's a sport Ive done for a long time and have gotten pretty good at it (also, its really fun). I also enjoy playing chess quite a lot, started pretty young and Ive always got a kick out of it. 34 | What was the last lie you told? 35 | That I hadn't smoke a cigarette :p 36 | What was your first thought when you woke up this morning? 37 | Coffeeeeeeeeee 38 | What question do you hate to answer? 39 | "How was work today ?" 40 | What’s your favorite knock-knock joke? 41 | Knock Knock. 42 | If you could have a coffee with any person in the world, who would it be? 43 | George Carlin if he was still among us 44 | Would you like to share with us a story about yourself? 45 | So a couple years back i was doing interail with a group friends, and we all dared ourselves at the beginning of the trip to all get green mohawks and travel Europe with them. Needless to say, it was a pretty amusing trip. At the end of it, me and my best friend were taking a BlaBla car from the french border to Paris, after a 20h long train trip from Zagreb. We were not sure how the green hair would go :p While waiting for it, some guy doing rollerblades passed by, and my friend being pretty good at it asked him if he could roll for a bit. 10 mins later his blood was on my T Shirt and his arm was broken, and thats the moment our BlaBla car decided to arrive. The drive was not fun, but the initial reaction was memorable xDD 46 | What food do you like and dislike? 47 | I dislike mangos, and that's about it aha. Don't have a favorite meal, but off the top of my head, I could eat a "Blanquette de Veau" right now 48 | What is your favorite quote? 49 | The line separating good and evil passes not through states, nor between classes, nor between political parties either -- but right through every human heart. 50 | -------------------------------------------------------------------------------- /talent/sourcerers/rporres.md: -------------------------------------------------------------------------------- 1 | # Rafael Porres Molina 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - My name is Rafael but everyone calls me Rafa (except for my mother when she's angry, she calls me Rafael then) 6 | - When were you born? 7 | - 1976 8 | - Where are you from? Where have you lived? 9 | - I'm from Madrid. I've also lived in Toulouse, Newbury (UK) and Dublin 10 | - What languages (natural and programming ones) do you know? 11 | - Spanish is my mother tongue. I'm fluent in English and I used to be it to in french. 12 | - I write decent code in Perl and Ruby and I'm getting better in Python and Go. 13 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 14 | - My twitter handle is @walter_burns 15 | 16 | **Work** 17 | - What are you going to be doing at source{d}? 18 | - Infrastructure 19 | - Why did you join source{d}? 20 | - I wanted to build things from scratch, work with kubernetes, work with @mcuadros 21 | - Where will you work from? 22 | - Madrid 23 | - If you could only save one programming language, which one would it be? 24 | - I still love Perl. 25 | - If you wanted to do an investment, what company would you choose? 26 | - I'm not very much into investment, honestly. 27 | 28 | **Other** 29 | - What are your hobbies and what do you like about them? 30 | - I play bass and double bass and sing in choirs. I love being part of a musical ensemble, it is one of the most powerful experiences I can imagine. 31 | - Apart from that I love drinking craft beer, hiking, organizing parties... 32 | - What was the last lie you told? 33 | - That I don't remember any :-P 34 | - What was your first thought when you woke up this morning? 35 | - I'm hungry! 36 | - What question do you hate to answer? 37 | - I would love to explain my job to people, but finally I hate it as it is quite impossible and people get easily discouraged. 38 | - What’s your favorite knock-knock joke? 39 | - I can't translate them to english :-D 40 | - If you could have a coffee with any person in the world, who would it be? 41 | - I'm getting old to be a fanboy anymore... I had the pleasure to meet Javier Sampedro and Antonio Orejudo not long ago, and I had a blast. They are two of my late adolescence heroes so I think I'm fine for now. 42 | - Would you like to share with us a story about yourself? 43 | - Best stories are told in bars with a beer. Happy to share then 44 | - What food do you like and dislike? 45 | - My favourite food changes a lot. I'm lately crazy about Rabo de Toro. 46 | - What is your favorite quote? 47 | - The road to hell is paved with good intentions 48 | -------------------------------------------------------------------------------- /talent/sourcerers/se7entyse7en.md: -------------------------------------------------------------------------------- 1 | # Lou Marvin Caraig 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - Lou Marvin Caraig - my friends just call me Marvin 6 | - When were you born? 7 | - June 10, 1990 8 | - Where are you from? Where have you lived? 9 | - I'm from Scandicci, Italy which is just ~10km from the centre of Florence. I relocated 4 years ago when my daughter was 1. Before that I was living nearer to the city centre of Florence. Anyway as you may notice I'm not the classical Italian guy, but I'm clearly Asian :). That's because my parents are from the Philipinnes and they came here in Florence in 1987. 10 | - What languages (natural and programming ones) do you know? 11 | - natural: Italian, English (not as good as I'd like to be), Tagalog 12 | - programming: mainly Python, Scala, Javascript, then some experience with Java and R. 13 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 14 | - twitter (not very active actually): https://twitter.com/LMCaraig 15 | - medium: https://medium.com/@lmcaraig 16 | - stackoverflow: https://stackoverflow.com/users/3276106/se7entyse7en 17 | 18 | **Work** 19 | - What are you going to be doing at source{d}? 20 | - I'll be part of the Applications Team 21 | - Why did you join source{d}? 22 | - for different reasons: 23 | 1. remote-friendly: which means higher flexibility, diversity due to international team, better life-work balance 24 | 2. open-source core + open source days: :heart: 25 | 3. coworkers: amazing people both professionaly, and now I can also say personally 26 | - Where will you work from? 27 | - I'll work remotely from home 28 | - If you could only save one programming language, which one would it be? 29 | - Python: easy to read, easy to learn, full-optional standard library, amazing 3rd party libraries (yeah I know some of them are actually built on top of C...) 30 | - If you wanted to do an investment, what company would you choose? 31 | - This is a tough question... On the spot I think that I'd look for startups in the healthcare industry, in particular those that are trying to apply computer vision for diagnostic purposes, and also for startups in the transportation industry, as reducing the travelling time from different part of the world could be revolutionary. 32 | 33 | **Other** 34 | - What are your hobbies and what do you like about them? 35 | - I used to play a lot of basketball and I like it because some plays can be really spectacular, it requires team play, it can be highly phisical, it can be played on the streets. I also used to play go. I think that it's fascinating because the rules are very simple, but it's a very strategic board game. Nowdays I'm more boring and usually do machine learning related side-projects. 36 | - What was the last lie you told? 37 | - Most probably the last one was telling to my daughter to behave, as otherwise Santa will not come. 38 | - What was your first thought when you woke up this morning? 39 | - Oh s**t! I just slept few hours and I'm so sleepy right now! And I even have the flight to go back home! 40 | - What question do you hate to answer? 41 | - This could be a candidate :joy: 42 | - What’s your favorite knock-knock joke? 43 | - I'm not very good in knock-knock jokes, but here's one: "A man enters in a coffee... SPLASH!" 44 | - If you could have a coffee with any person in the world, who would it be? 45 | - That's another tough question, I actually never thought about this scenario. I need to think about it much more in order to don't waste this opportunity :) 46 | - Would you like to share with us a story about yourself? 47 | - There's nothing in particular that I can think about now. 48 | - What food do you like and dislike? 49 | - I like almost any Italian food and sushi. I don't love vegetables, and I'm usually too lazy to peel most of the fruits (luckily bananas exist). 50 | - What is your favorite quote? 51 | - "Good, better, best. Never let it rest, until good is better, and better is best." 52 | -------------------------------------------------------------------------------- /talent/sourcerers/smola.md: -------------------------------------------------------------------------------- 1 | # Santiago Mola 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - Santiago Moisés, Santi 6 | - When were you born? 7 | - 1987 8 | - Where are you from? Where have you lived? 9 | - [Alicante](https://en.wikipedia.org/wiki/Alicante) → [Valencia](https://en.wikipedia.org/wiki/Valencia) → [Madrid](https://en.wikipedia.org/wiki/Madrid) ([Spain](https://en.wikipedia.org/wiki/Spain)) 10 | - What languages (natural and programming ones) do you know? 11 | - Spanish, English, Catalan, Go, Java, Scala, Python and a few others I am not proficient with or I would prefer to forget. 12 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 13 | - [@mola\_io](https://twitter.com/mola_io) 14 | 15 | **Work** 16 | - What are you going to be doing at source{d}? 17 | - [Architecting](http://devopsreactions.tumblr.com/post/46582414073/the-senior-architect-is-at-the-whiteboard). 18 | - Why did you join source{d}? 19 | - [Awesome team](https://giphy.com/gifs/bear-power-team-l3q2Wl7Wpz09Z5hfi) working on [crazy things](https://www.youtube.com/watch?v=hKoB0MHVBvM). 20 | - Where will you work from? 21 | - Madrid, office and remote. 22 | - If you could only save one programming language, which one would it be? 23 | - I would save C++, so implementations for most other languages would still exist. Then I would code in something other than C++. 24 | - If you wanted to do an investment, what company would you choose? 25 | - You cannot invest in a State Planning Agency. 26 | 27 | **Other** 28 | - What are your hobbies and what do you like about them? 29 | - Most computer-related stuff. 30 | - What was the last lie you told? 31 | - Something in this questionnaire. 32 | - What was your first thought when you woke up this morning? 33 | - $@!# what happened to the alarm? 34 | - What question do you hate to answer? 35 | - *Tell me three of your virtues and three defects.* 36 | - What’s your favorite knock-knock joke? 37 | - Not a common thing in Spain as far as I know. 38 | - If you could have a coffee with any person in the world, who would it be? 39 | - Do I have a time machine? 40 | - What food do you like and dislike? 41 | - I like most food. I am also kind of into *extreme* food (be it [callos](https://en.wikipedia.org/wiki/Callos), [century eggs](https://en.wikipedia.org/wiki/Century_egg) or [insects](http://www.insectescomestibles.fr/en/)). 42 | -------------------------------------------------------------------------------- /talent/sourcerers/tsolakoua.md: -------------------------------------------------------------------------------- 1 | # Anna Tsolakou 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - Anna Tsolakou. My friends call me ```Tsol``` and ```Annula```. 6 | - When were you born? 7 | - February 1991. 8 | - Where are you from? Where have you lived? 9 | - I am from Greece. I've lived in Athens, [Kalamata](http://i0.wp.com/urbanlife.gr/wp-content/uploads/2017/07/32-panorama-of-the-city-of-kalamata-peloponnese-3088-1.jpg) and the last two years in Madrid. 10 | - What languages (natural and programming ones) do you know? 11 | - Greek, English and a bit of Spanish. 12 | - The language I am the most familiar with is Java, but I've done projects with C/C++, PHP and Go. Now I am learning Python. 13 | 14 | **Work** 15 | - What are you going to be doing at source{d}? 16 | - Currently I am contributing to anything related to hiring, onboarding, growing our GitHub guide and more to come :) 17 | - Why did you join source{d}? 18 | - source{d} is such a great place to work, that I joined twice :) 19 | - Where will you work from? 20 | - Madrid 21 | - If you could only save one programming language, which one would it be? 22 | - None, as any of them could be redeveloped. 23 | - If you wanted to do an investment, what company would you choose? 24 | - Tinder 25 | 26 | **Other** 27 | - What are your hobbies and what do you like about them? 28 | - I love going to parks with [Oscar](https://scontent.fmad3-3.fna.fbcdn.net/v/t31.0-8/17991684_10207082549940561_7575983604869875980_o.jpg?_nc_cat=0&oh=dc262a860efa4475d69c6484c34b7c79&oe=5B2FD4E1) and taking him photos. 29 | - I love spring and summer picnics. 30 | - I write poems. 31 | - I enjoy reading national geographic. 32 | - Since this summer I am cooking a lot and learning new recipes actively. 33 | - Any type of outdoor activities; the more I grow, the more I try to find time for them. 34 | - Going to [bootcamp](http://www.bootcampretiro.com/en/) classes and lately to Yoga with @estherrgarcia. 35 | - What was the last lie you told? 36 | - I lied to Oscar yesterday; I told him we would go for a walk, just to make him look at the camera. 37 | - What was your first thought when you woke up this morning? 38 | - I don't remember. 39 | - What question do you hate to answer? 40 | - This question. 41 | - If you could have a coffee with any person in the world, who would it be? 42 | - A very close 10 years cyber-friend that we didn't have the chance to meet. 43 | - Would you like to share with us a story about yourself? 44 | - I love martial arts - I've done Karate for 8 years, Hapkido for 3 years and a half year of boxing - as they make me feel disciplined and energetic. I dropped my hapkido gym a few months ago so now I practice on my own at Retiro from time to time. I am more than happy to show techniques to anyone who is interested. 45 | - What food do you like and dislike? 46 | - I dislike peppers and offal. I love food and I always want to try the different type of cuisines and varieties. 47 | - What is your favorite quote? 48 | - "The only real voyage of discovery consists not in seeking new landscapes, but in having new eyes" - Marcel Proust. 49 | -------------------------------------------------------------------------------- /talent/sourcerers/vmarkovtsev.md: -------------------------------------------------------------------------------- 1 | # Vadim Markovtsev 2 | 3 | **General** 4 | - What's your name? How do your friends call you? 5 | - Vadim 6 | - How old are you? 7 | - 1989 8 | - Where are you from? Where have you lived? 9 | - Russia / [Sergiev Posad](https://www.google.com/maps/place/Sergiev+Posad,+Moscow+Oblast,+Russia/@56.3075296,38.1951011,18.7z/data=!4m5!3m4!1s0x46b4c4569e0e0089:0x7c774b9d4054fb61!8m2!3d56.3242317!4d38.1452115) 10 | - What languages (natural and programming ones) do you know? 11 | - Russian, English, Spanish (un poquito), Korean (아이스크림) 12 | - Python, Go, C++, C, CUDA, Bash, HTML+CSS (amateur), JS (spaghetti), C# (8 years ago) 13 | - Would like to share your Twitter, Instagram or Medium or any other social media account? 14 | - [@tmarkhor](https://twitter.com/tmarkhor) 15 | 16 | **Work** 17 | - What are you going to be doing at source{d}? 18 | - Crazy Machine Learning on Code research 19 | - Why did you join source{d}? 20 | - Crazy Machine Learning on Code research 21 | - Where will you work from? 22 | - Madrid 23 | - If you could only save one programming language, which one would it be? 24 | - Python 25 | - If you wanted to do an investment, what company would you choose? 26 | - Not [comma.ai](https://comma.ai) 27 | 28 | **Other** 29 | - What are your hobbies and what do you like about them? 30 | - I am boring and don't have many hobbies. Listen to music every working day; ride a bike, play video games, go jogging rarely. Order bizarre things on AliExpress. I used to contribute to OpenStreetMap **much**. 31 | - What was the last lie you told? 32 | - I had no idea what I was talking about one hour ago on my Spanish class. 33 | - What was your first thought when you woke up this morning? 34 | - Damn it is so cold I need to run and fire up the f@cking gas heater. 35 | - What question do you hate to answer? 36 | - Please tell me something funny. 37 | - What’s your favorite knock-knock joke? 38 | - Russians joke about other things... mostly obscene. 39 | - If you could have a coffee with any person in the world, who would it be? 40 | - [Korolev](https://en.wikipedia.org/wiki/Sergei_Korolev), would ask him how he felt while doing his ["Moon" decision](https://www.google.com/search?q="Посадку+лунного+корабля+следует+рассчитывать+на+достаточно+твердый+грунт+типа+пемзы") and launching Gagarin to space. 41 | - Steve Jobs. 42 | - Those two are pretty dead so the last one is Gabe Newell. Would ask him about HL3. 43 | - Would you like to share with us a story about yourself? 44 | - Nope 45 | - What food do you like and dislike? 46 | - I am confident in my disguise to callos. 47 | - What is your favorite quote? 48 | - [Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему.](https://en.wikiquote.org/wiki/Anna_Karenina) 49 | -------------------------------------------------------------------------------- /talent/wage_policy.md: -------------------------------------------------------------------------------- 1 | This document clarifies the wage policy at source{d}. 2 | 3 | - At source{d}, we have a set salary for each level of engineering. This means we don't individually negotiate contracts. We believe this policy is more fair to candidates and existing team members. 4 | 5 | - We also believe that you do not have to grow to a management role to earn more, therefore we also have salary levels for individual contributors that can go above managers/leads. 6 | 7 | - The only exception to salary levels is for roles in which we have only one member (for instance, Head of Architecture). In these cases, we propose a salary after taking into account the current salary of the member and the competitive market salary levels. 8 | 9 | - Even though we have a transparent salary policy, we are not able to publicize the salaries of team members, since it's not legal in Spain to do so. 10 | --------------------------------------------------------------------------------