15 ms·
Why Computing Students Should Contribute to Open Source Software Projects
- intricatedetail 5y agoSo the big corporations get free labour? Why universities engage in such brainwashing?
- tester34 5y agoI think it is very reasonable idea, but time's gonna show how it'll affect maintainers when majority of schools start doing it >The most common problems faced by the students over their assignment are the inability to build the project sounds like somebody tried to build llvm
- timkam 5y agoI think if the course instructors are more or less experienced contributors and put a focus on meta-aspects such as respectful communication (valuing maintainer time), this could work. Of course, this also means that at the moment, many schools do not have teachers with relevant expertise, I suppose...
- reedf1 5y agoThe ability to build any project is a strange thing you learn after a few years as a software engineer. As a jnr. dev I was completely awed at my co-workers ability to understand build/compiler errors. Well you basically get that for free banging your head against a wall long enough, and being paid for it!
- skocznymroczny 5y agoMany open source projects are hard to build, especially C/C++ ones because these languages don't have a standarized package manager and a proper package ecosystem. C/C++ projects often use Makefiles which rely on bash commands. If you're on Windows, good luck. Sometimes you get lucky and there's a CMake file which can create a Visual Studio solution for you. With languages like Rust, D or any webdev project it's much easier, because you can go "cargo build" and it will autodownload dependencies and build everything, no matter the OS.
- timClicks 5y agoI agree with this, although I would hate for someone's grades to suffer because they were hacking on open source. The next ACM article should be "Why Computing Professors Should Give Credit for Contributing to Open Source Software Projects".
- xf1cf 5y agoWhat ever happened to exploring computing through just building small, cool, things? Maybe I'm old now, but this trope has been parroted here and elsewhere as a panacea. Need a job? Contribute to open source for the CV experience. Need something to do? Contribute to open source. I could see this as maybe something for a small software engineering course to do. maybe. I think in those cases it might even be better to split the class into teams and have them develop a product idea, elect people to various roles, and execute the plan as a semester long project. Midterms, quizzes, etc become sprint reviews and plannings. It would be great if you could get some of the b-school kids to roll over for a combined class where they takeover PMing. Admittedly I am cynical. But the way I got into programming was many, many years before I started my CS degree. I just built cool things I needed. I got into reverse engineering because being a lazy high schooler I wanted to build trainers for video games so I could get a high level without actually working on it. Call it pathetic - sure. But playing video games is so boring. It's much more fun to get them to play for you :). What ever happened to just being interested? I hesitate to suggest this but could it because a lot of people are getting into computer science strictly for the job? So that they reach the terminal points in the program and are completely without direction? I dunno, just rambling I guess. This just strikes me as so odd.
- tester34 5y agoI do share this sentiment, the beauty of computers was that you could build "anything" you wanted and maybe even make living of it Nowadays it seems to be perceived as a yet another way to highly paid jobs
- zsmi 5y ago> What ever happened to exploring computing through just building small, cool, things? It totally exists, but back in our day you built the one computer you had and that was that. Now everyone has lots of computers. So maybe you don't make your own laptop but you can absolutely make a "computer" and hack all kinds of fun things. See: Arduino, Raspberry PI, STM32 et al., Teensy, BeagleBone, TinyFPGA, etc. etc. etc. Honestly, I am kinda jealous. You can buy more random electronics than I could've dreamed of as a kid with paper route money (do kids even still do that?). Test equipment too.
- chalst 5y agoThis has worked very well in mathematics at Imperial College, London, having undergraduates provide machine-verifiable proofs in the Xena project. They use a nonconstructive axiomatic framework (so not really "software", I suppose) in the Lean logical framework. https://xenaproject.wordpress.com/2018/10/07/what-is-the-xena-project/ https://xenaproject.wordpress.com/2018/10/07/what-is-the-xen...
- oytis 5y ago> in the 21st century programming proficiency on its own is neither representative of the skills that the marketplace requires from computing graduates, nor does it offer the strong vocational qualifications it once did. Universities are not vocational education facilities though. Time a student has in university is better spent on getting deeper understanding of things that are hard to pick up in the workplace, and that give you a better picture of the industry in the long run Conversely, Jira-fu, unit testing, peer reviewing etc. is something a junior engineer learns in their first year at work. And burdening open source maintainers with training students in these issues is hardly a good idea. In my (probably unpopular) opinion, it's better to start contributing to open source projects after having some experience with real projects at work, not the other way round. Just because at work one has a supervisor and optionally a buddy/mentor, which open source projects have no opportunity to provide.
- chalst 5y agoThe CACM Viewpoint proposal doesn't mean that students have to work on the kind of open source projects that businesses will assign developer labour to. The open source projects can be chosen to complement the educational aims of the course.
- tehbeard 5y agoThis just sounds like hacktoberfest blended with eternal September...
- DarkWiiPlayer 5y agoExcept hacktoberfest was for some merch; this puts peoples degrees on the line, so they will be much more motivated to find something to "fix".
- dgb23 5y agoAgreed! I found one recently that does some interesting stuff, a formal verification library for Rust: https://www.pm.inf.ethz.ch/research/prusti.html https://www.pm.inf.ethz.ch/research/prusti.html
- diptim 5y agoAny website to see open source project for contributions? I'm willing :)
- n4bz0r 5y agoNot exactly a site, but should suffice. Curated list of projects that are open for contributions from beginner… contributors: https://github.com/MunGell/awesome-for-beginners https://github.com/MunGell/awesome-for-beginners
- axelroze 5y agoGoogle Summer of Code archive is a good starting point. Also think of the free software tools you use. KDE/GNOME/LibreOffice for example.
- WJW 5y agoGithub has a lot of them.
- toastal 5y agoGNU help wanted: https://savannah.gnu.org/people/?type_id=1 https://savannah.gnu.org/people/?type_id=1 GNU high-priority enhancements: https://www.gnu.org/help/priority-projects.html https://www.gnu.org/help/priority-projects.html GNU looking for maintainer: https://www.gnu.org/server/takeaction.html#unmaint https://www.gnu.org/server/takeaction.html#unmaint
- teddyh 5y agoDebian bugs which are tagged “newcomer” and are also lacking an attached patch: https://bugs.debian.org/cgi-bin/pkgreport.cgi?exclude=tags%3Apatch;tag=newcomer https://bugs.debian.org/cgi-bin/pkgreport.cgi?exclude=tags%3...
- piokoch 5y agoI only hope it would not be some kind of common sentiment "you have to contribute to an open source project to earn better grade or get a job". It will end up as Huawei Linux kernel "contributions" - a lot of pointless commits that are only a pain for project maintainers and bring zero actual value.
- ElViajero 5y agoFrom the article, and up to your point. On the expected learnings there is: ... > Choosing realistic contribution goals. (Initially students tend to wildly overestimate their ability to contribute to a project.) This is a key activity in agile development sprints; ... also > Try to contribute a trivial fix as a warm-up exercise and as a way to test your ability to follow the project's workflows.
- yoz-y 5y ago> Try to contribute a trivial fix as a warm-up exercise and as a way to test your ability to follow the project's workflows. Finding trivial fixes is no trivial task though. Some projects do have a tag like `good_starter_bug` but most don't. Projects that actually have lingering trivial fixes tend to be rather huge too.
- JetAlone 5y agoWe're already creeping in that direction. Everyone wants some work for free, or at a discount rate and enough people are willing to offer that in hopes of rapid advancement, so we'll keep ratcheting the value of our skills to the bottom, starting with passion projects and moving to desperate make-work hustle. Not even mad about it, it's the way of things.
- matsemann 5y agoI think a better description would be how Hacktoberfest turned out, with lots of inexperienced people spamming simple PRs to lots of projects.
- arp242 5y ago
- vehiclesuggest 5y agoStudents approach the course and its assignment with trepidation and complete it with jubilation. Ensuring students can make meaningful contributions to an open source project requires balancing their inexperience with the fast-paced sophistication of modern, open source software development.
- CJefferson 5y agoI would not consider "inflicting" this on an open source project, unless I had discussed it with the maintainers in advance. Some of my colleagues do something similar to this, where the students work on an open source project which is maintained by academics. They do get some amazing patches which add significant new features, but there are also some students who need help. It's a valuable learning experience for the students (which it should be, they are at University!), and at the end they are much more ready to usefully contribute to open source projects. However, I wouldn't feel it was fair to impose that on another open source project, as almost all projects are "reviewer time poor".
- DarkWiiPlayer 5y agoSending out a horde of half-competent people with hammers in search of a nail with their degree on the line will lead to many screws being hammered in. I can see the appeal of this idea, but what it's ultimately doing is optimising for spam.
- asamant 5y agoOn similar lines I had a course on software architecture [0] during my Master's in which students had to choose a sufficiently complex open source project and analyze it from an architectural perspective, summarizing their findings in the form of chapters to be compiled in a book [1] inspired by [2]. We were also highly encouraged to raise PRs though it wasn't compulsory. Most student groups did end up raising PRs and getting them merged, albeit most were understandably minor ones given the short timeline (~2.5 months for the entire course). Personally I can say it was a really good experience and it certainly made me look at open source development (and programming in general) from a more nuanced perspective - and I suppose it would definitely be a good idea to introduce such courses when students are sufficiently prepared for them, in the more advanced stages of their study programmes. [0] - "IN4315 Software Architecture" (https://se.ewi.tudelft.nl/delftswa/ https://se.ewi.tudelft.nl/delftswa/) [1] - "DESOSA 2019" (https://se.ewi.tudelft.nl/desosa2019/ https://se.ewi.tudelft.nl/desosa2019/) [2] - "AOSA" (http://aosabook.org/en/index.html http://aosabook.org/en/index.html)
- schaefer 5y agoWow. The Architecture of Open Source Applications series of books has been a long time favorite of mine. So the premise of this course, that each student will produce a chapter for a similar book, is absolutely fascinating! Thank you for sharing, and I am really excited to dig into the 6 (and counting) books the students of this course have produced.
- mouzogu 5y agoHow can I leave this industry. I've been a web dev since graduating in 2007 and no longer have the desire to compete in an oversaturated, increasingly complex industry. If i have to work for someone else, I'd rather take the path of least resistance. Try to be on easy mode. That's just me. I lost my passion for all of it. We recently started hiring for a junior front end, and I had to review the test results. 95% of the applicants are unable to perform the most basic tasks. I blame this on all the bootcamps and learn to code courses. There is a flood of unqualified people in this field and it's just tiring for me to imagine the future. One where my experience has zero value and I have to keep proving myself over again. Who needs it.
- ramraj07 5y agoYou can't leave this industry because frankly no other industry will coddle it's overpaid, dunning Kruger workforce like software. Go to a law firm or a plumbing gig and complain that their task management is literally the hell and see what happens. Of course unqualified people apply a lot, it's because the secret is out that a bunch of lazy people can get paid obscene amounts in this field! There's a flood of unqualified people because you won't put a salary amount in the ad that will actually attract the right talent. There's tons of ways you can weed out the unqualified people but you won't because there won't be any applications left after that.
- IshKebab 5y agoWell said! This is the easiest most well paid job I've had by far. Also if you're bored of web dev just move to another programming area.
- deleted 5y ago[deleted]
- arp242 5y ago> I blame this on all the bootcamps and learn to code courses. There is a flood of unqualified people in this field and it's just tiring for me to imagine the future. One where my experience has zero value and I have to keep proving myself over again. Who needs it. It's been like this for as long as I remember, and was probably even worse 20 years ago before the dot-com crash where anyone who could sum up numbers in Excel was a programmer and anyone who knew how to defrag their C:\ drive was a sysadmin. I am exaggerating only very slightly with this. The essential problem is that the industry has been growing so fast and there are never enough senior programmers to train the junior ones. This is a field that has been doubling in size every 10 years or so for the last 40 years. You're bound to have problems with growth numbers like that :-/
- etripe 5y agoIt isn't the education system's job to produce model employees. Nearly all the "modern skills" mentioned in the article all squarely fall under the moniker "industry knowledge", which is... the industry's job. Those that don't fall under the umbrella of maturity, which only experience can teach. In my opinion, employers should start investing in their employees again, as they once did. It's neither morally laudable nor enlightened self interest to throw someone in the deep end and expect them to swim. And in our capitalist system, it's self-indulgent to say that you want something without paying for it. That is ultimately what the article is proposing: that open source contributors sacrifice their spare time to be the mentors companies should provide.
- teekert 5y agoI felt the same when I studied Biology, I proposed to the prof to let students write Wikipedia articles, instead of making them write so much text that ended up in a bin. It would mean a meaningful contribution to the world, + a prof was going to check it already anyway, so it would probably result in a good Wikipedia article. They never went for it.
- ramraj07 5y agoI finished my PhD and am still mostly at a loss for finding notable Wikipedia articles I can contribute to. I'd fear a day when undergrads are writing Wikipedia articles with perverse incentives.
- delinquenz 5y agoI think it‘d be similar to all these data science bootcamps requiring their students to write articles on medium.
- watwut 5y agoBecause then the students would have to spend additional time to navigate Wikipedia culture and maintainers. That is not the course goal at all. They would also ended up fighting among themselves if multiple students ended up picking similar topics.
- rbanffy 5y agoLovely. I hope university teachers help with reviewing the PRs too. Reviewing even a trivial PR, making sure it doesn’t introduce any regressions, costs time. Every added functionality needs to be maintained until it’s retired. I hope students who do that understand that contribution to an open source project is not a trivial thing.
- yoz-y 5y agoMaybe the only contributions that could be useful in this case is tests.
- rbanffy 5y agoNot even that is 100% sure. You still need to vet the tests. Documentation is also a good thing to add. The perspective of a fresh user is precious and only lasts so long. Documenting the onboarding process can point to documentation shortcomings that are great to fix.
- sumtechguy 5y agoI have seen a few big bang 'lets test everything' go horribly wrong. Where you were unsure if the tests or the code were broken. Test code is code. It needs to be reviewed too. It is also dead easy to go too far with it (I know I have fallen into that trap more than once).
- quanticle 5y agoI would argue that the more pernicious result is tests that are correct and do pass at the moment they were written but are brittle, test internal interfaces and data, and generally ossify the design of the project because making any change now involves making the change and fixing the dozen tests the change breaks. It's hard to say no to those tests, because, on the surface they appear very thorough, and look brilliant on objective metrics, like branch/function coverage tools. It's only later, when every change, no matter how trivial, requires at least five or six files to be touched, that you come to realize the tarpit that you've ensnared yourself in.
- einpoklum 5y ago> The marketplace requires Oh, the great and omnipotent marketplace! How we worship thee. Tell us, oh benevolent enabler of civilization, what you require of us, that we may provide it!
- streamofdigits 5y agoI'd go one further and have dedicated courses on open source, its history, evolution, business models, challenges etc. Open source computing will quite likely be the bulk of computing, with the "closed" parts being but special purpose islands in an ocean of open code (or multiple oceans if you want to navigate licensing differences) The precise manner and degree that this will happen is not clear. It will depend on how business models on both the open and closed side of the fence evolve, but, from the point of view of an academic institution, equiping students with options to navigate this emerging future is quite sensible.
- einpoklum 5y agoI paritally agree with the bottom line, but completely disagree with the author's business-and-market-focused outlook. Universities have existed across social eras and political regimes. They should not be catering to the contemporary commercial interests of powerful market forces. They should teach principles, and basic skills, and deeper fundamental knowledge - with concrete programs or programming projects buttressing this goal rather than being the end-all in themselves. However, collective and collaborative work on a joint project, in particular a software project, intersects that sphere to some extent - so there's a place for it in a curriculum and as a means of practice. IMHO, however, student involvement in FOSS projects should be voluntary rather than mandated by such a course. It will also help those students who go on to work as professional programmers, but even for the researchers - help to counterpose what they have learned in theory with how you get things to work in practice. Moreover, and no less importantly: FOSS projects need developer time. So students should contribute to them because they need contributions (and - they're benefiting the public typically more than non-FOSS projects, so better to contribute to the former rather than the latter).
- masummdar 5y agoIMHO students will more benefit from studying/reading open source software code than trying always to contribute. University is a big time commitment with coursework, exams, labs, which is unavoidable to graduate. Open source is a great source of learning; architecture choices, battle tested real-world software. So, if a student asks for my opinion, I would say fork it, clone it, study it and if you find something to contribute, great submit your pull request.
- TrackerFF 5y agoWhat seems to give the best ROI, in the current climate, is to read and understand Data Structures and Algorithm books from cover to cover, and grind standard leetcode/hackerrank problems. In fact, many of the companies that really prioritize those types of screening tests, don't seem to care much for your side projects - or even your major.
- nvarsj 5y agoThat only gets you in the door - it doesn't make you a competent engineer.
- bluenose69 5y agoSkilled students can make some very fine PRs when they are working on something that intrigues them enough that they get very immersed in the code. But not all students in training are skilled, and making code contribution a required part of a program seems certain to reduce the average quality of PRs. The problem is that somebody has to review those PRs, and often interact with the proposer for quite a while, to teach them the approach that is desired for the individual project. PRs that go against the grain are not always worth the effort. In the scenario of the article, open-source developers are saddled with a new task: teaching students, many of whom will be unmotivated by anything more than a grade. No thanks. Hard pass. If professors want students to learn how to interact in a group setting, then the students ought to be designing their own software. If there's a perceived need for larger-scale projects, the professors ought to set them up and maintain cohesion and momentum across terms. If the professors don't have ideas for such projects or the time to spearhead them, well, then that's a bit of a sign.
- deleted 5y ago[deleted]
- bboyMeng 5y ago123
- chalst 5y agoA lot seems to turn on exactly what kind of open-source project might be used. The author refers to a letter from 15 years ago: > Future CS Course Already Here In his “President’s Letter” (“Computer Science Education in the 21st Century,” Mar. 2006) > David A. Patterson suggested creating a course that would leverage high-quality examples from open source software. I’ve been teaching just such a course for the past three years at the Athens University of Economics and Business. The lectures (see www.dmst.aueb.gr/dds/ismr/)focus on how students comprehend, evaluate, maintain, and enhance large software systems.Students’ grades are derived by assessing their contribution to an open source project they select based on their own interests. The course’s theoretical background is covered in my books Code Reading and Code Quality: The Open Source Perspective (Addison-Wesley, 2003 and 2006, respectively); all the examples I use come exclu-sively from large existing opensource projects. Two of the soft-ware systems I use for drawing examples are the very ones Patterson mentioned in his column:BSD Unix and PostgreSQL. > I also use the source code of other systems (such as the Java HSQLDB database engine, the Apache Tom-cat application server, the ACE networking framework, the X Window System, ArgoUML, and Perl) to cover subjects like object-oriented programming in Java and C++, networking, language processors, and graphics. > Diomidis Spinellis. Athens, Greece. Communications of the ACM, 49(8), August 2006, pp 11–13. doi:10.1145/1145287.1145299 https://dl.acm.org/doi/pdf/10.1145/1145287.1145299 https://dl.acm.org/doi/pdf/10.1145/1145287.1145299 I don't know the 'Athens University of Economics and Business', but it sounds pretty vocationally oriented to me.
- exdsq 5y agoWhat we need is a degree in software engineering that's through the engineering school and computer science through the maths school
- mangecoeur 5y ago... because otherwise the system whereby giant corporations run on software maintained by free labour comes grinding to a halt :P
- mlang23 5y agoStudents contributing to open source to get better grades should have a flag on GitHub so project maintainers can easily recognize them and treat their contributions with an extra bit of care. I've been consulted by students (and PhDs) regarding their final project (not strictly IT related) and the song was always the same. The primary objective of that person is to get uni finished. Quality or usefulness of their work is always second place. What counts is the grade they get in the end. I always felt used if not "raped". These days, I turn all students down.
- Ensorceled 5y agoHow would this work? How many project maintainers would sign on for this? "Hey, can you merge this PR? I'll fail if you don't review and merge this by tomorrow morning. I'm sorry I left it until the last minute but I had a bunch of work do to in another class and couldn't get to it until today." "Hey, I ran everything through flake and black and spent the past 72 hours getting my test coverage (and the coverage of the rest of the project) to 100%. /Now/ will you approve this PR?" "Hey, you stopped responding for the past week, are you on vacation? Is there any chance of approving this PR by Friday?"
- skohan 5y agoYeah I think this is a huge issue. It might be good for the students to get this experience, but it would be horrible for the projects. People working on a project to check a box is not going to lead to good outcomes. A better option would be to require students to work on projects which depend on eachother, and practice pull-requests on eachother's student projects.
- nerdponx 5y agoHow about this? The instructor forks a real open source project, with an existing license, contributor guide, etc. The instructor then picks an issue from the issue tracker with a known solution, but no PR yet. The assignment is to submit a PR to the instructor's fork of the project that fixes the issue, and the PR itself is the final project submission. Points can be deducted, according to a rubric, for failing to pass the test suite, failing to follow contribution guidelines, etc. Choosing an issue that has not been publicly resolved in code should prevent obvious cases of plagiarism. I'm not sure if this could scale up to a big lecture-type course with TA is doing the grading, but I think it could be a fun assignment. The risk of course is that there is some unforeseen problem preventing the "known" solution from being valid. But maybe that in and of itself is part of learning exercise...
- Ensorceled 5y agoI think that would work. Then the instructor (or a enterprising student) could push the PR back to the real project if it turns out to be worthy of a real merge.
- deleted 5y ago[deleted]
- mkl95 5y agoIn my opinion, the Hacktoberfest controversy last year points at the opposite being true. A computing student is not likely to understand the processes and etiquette of the industry. Open Source projects are not toy projects, billions of $ depend on them running smoothly, and I don't think we should expect someone with no industry experience to have assimilated this fact. Lately I have been observing an endemic problem in the Python world, this problem is that the demand for open source project maintainers is higher than the number of people that want and can maintain open source projects. This leads to cool pieces of software being abandoned after a few years. Maybe the focus should be on solving that problem.
- ozim 5y agoThis seems like another argument for "Private copying levy" but for open source developers that create useful libraries. So maintainers would be receiving some kind of stipend and not abandon projects. https://en.wikipedia.org/wiki/Private_copying_levy https://en.wikipedia.org/wiki/Private_copying_levy
- mkl95 5y agoI mean, Github Sponsors has been a thing for a while, but it doesn't seem to be too popular.
- ozim 5y agoMight be that because you still have to deal with the hassle of declaring income from that and loads of other small moving parts. With that levy you should get it from the government tax free and with minimal hassle. Oh wait just realized why it would not work...
- mkl95 5y agoSomething's clearly not working when extremely wealthy people pay less taxes than a little freelancer. But (in Europe) we are supposed to be grateful because startups across 27 countries are getting 4bn.
- happyflower 5y agoStudents can make very big and positive contributions to Open Source and contributing to Open Source with a primary goal of benefiting the project is great. But if this is just a secondary goal, then I would politely say "no" to the offer. If, however, the university would provide resources to ensure that contributions have the required quality and can assist maintainers with the added load, then it would possibly work! I could imagine that a direct link between maintainer(s) and university supervisor/lecturer would work well, so that maintainers can express their needs and priorities to someone who can handle/govern them in front of the learners.
- Kalleklovn 5y agoAs a relatively inexperienced undergrad with some basic knowledge in C and python, can anyone recommend how I should go about to start getting involved in any project? I dunno how to work alongside anyone on anything useful or "real" and all I have done is making line drawing algorithms, sorting algorithms, avl trees and some basic games and simulations in python. I am kind of interested in lisp and functional programming but no experience with it..
- logicalhan 5y agoIf you don't mind learning a new language (golang and it's not particularly a difficult language), then you should consider joining our Kubernetes SIG Instrumentation meetings (https://groups.google.com/g/kubernetes-sig-instrumentation https://groups.google.com/g/kubernetes-sig-instrumentation). We're particularly well suited for people who want to get their feet wet, and despite our focus being instrumentation in Kubernetes, the kind of work that we do varies a bit, we've written hand-rolled parsers for promql, CLI tools, static analysis tools which analyze metrics across the kubernetes codebase, etc. That google group should have a calendar link on top, if you subscribe, you'll be auto-invited to our meetings :) Hope to see you there!
- gus_massa 5y agoMy first recommendation is to send them to a project you use and care about. If you try to send a PR to a project you don't use, it's difficult for you to understand the jargon, the hidden assumptions, the vision, and other high level stuff that are obvious (or easier) if you are using the project. * Send nice bug reports, with foolproof reproduction steps. Err on the side of too foolproof. People underestimate the importance of bug reports, but they are very helpful. Try to see how they fixed it, so perhaps next time you understand where the error is and perhaps fix it. (Sometimes navigating the project structure is hard, and it's difficult to even find the file where the error is.) * Send PR fixing typos. Typos in the docs. Typos in comments. Typos in error messages. The nice part is that it's an easy fix, it's probably correct, and it has a high chance of being approved. (English has a few spelling variants, check that it's not just a en-uk vs en-us difference.) It's also helpful because you must learn how to clone the project, use github (or gitlab, or the mailing list, or whatever system they are using), and how to interact with the maintainers. * If you have a feature you want and can implement it, it's a nice PR. Start with easy and short features. Don't spend more than one or two days building it (4 to 8 hours, or even less). Nobody guaranties that it's correct, that it's in the vision of the maintainer, that the maintainer is not a moron. If it's not merged, you've only lost one or two days. If the maintainer likes the idea but want a different implementation, you've only lost one or two days. Some people recommend to ask in the mailing list or an issue in github/gitlab if the maintainer likes the idea. My English is not so good, and some features are difficult to explain. So I prefer the alternative method of just writing the PR, but only short PR that need one of two days of work. Be prepare to fix your PR. There are implicit local rules about the code, like tabs vs spaces, trailing spaces, indentation, ... try to follow the local conventions. Also, you may need to add some new test for the new feature or a regression test, and other testing. So expect that sometime you will need additional work to polish the PR. * For big features, discuss them with the maintainer first. Again, nobody guaranties that it's correct, that it's in the vision of the maintainer, that the maintainer is not a moron.
- bboyMeng 5y agoYoung programmers are dynamic in their technical savvy and creativity.
- thkim 5y agoI don't agree with this argument. Open source contribution is a fine art. Half-baked pull request is a nightmare for already-strained code reviewers. It does not help open source community as a whole.
- jillesvangurp 5y agoNot the worst idea for students to learn to communicate in the open, which is a hard requirement for OSS contributions. Also the more proactive students would in any case be doing this. And making things a bit more realistic motivates people as well. For people worried about an influx of low quality PRs on their projects, you have the right to reject bad PRs and you can also help out newbies with nice labels as "good first issue" in Github on issues that they could do. I'm sure if people show up willing to put in some time, there will be lots of OSS projects that can benefit from this.
- quanticle 5y ago>For people worried about an influx of low quality PRs on their projects, you have the right to reject bad PRs I certainly do, but I'm worried about the signal to noise ratio on PRs sinking through the floor. After all, it's not as if the difference between a good PR and a bad PR is magically known to me before I open it and read the patch. The maintainer has to spend a certain amount of time to see if the PR is any good, and if there are a hundred PRs more than usual, then the maintainer going to be much more likely to mass-reject all the PRs from a given institution, regardless of how good they are. We've seen exactly this situation with Huawei and the Linux Kernel, where the kernel maintainers threatened to reject all patches from Huawei because it became apparent that engineers at Huawei were optimizing for the number of patches in the kernel, rather than quality of patches. In the same manner, if a university mandates that a student must have at least one patch to an open-source project in order to graduate, then there is a rather large population of students who will spray patches at every open source project available to them until one of them happens to accept their patch, intentionally or not. Now, that said, I'm not opposed to the idea. Writing patches to an open-source application could be good as part of a larger project. Have the student pick out an open source project (it doesn't have to be big) and write up a report about the architecture used, the reasoning behind the design, and what issues they see. Then, as part of that process, have them write a patch against the project. This patch should be reviewed by the instructor, and should be graded on its own merits. Then the student should submit the patch to the project. At that point, while acceptance of the patch would certainly be nice, the professor should have enough data about the student's ability to evaluate an existing software project and make a meaningful contribution to it to grade the student even if the patch is not accepted by the time the semester ends.
- MeinBlutIstBlau 5y agoHow do you recommend a student contribute to an open source project when many people don't even accept pull requests on their basic github repos? I had a teacher that tried this and it backfired immensely. Basically every student wasn't able to get one so my instructor had to change it last minute and just make us do a coding project in a different language. Open source is not for new coders. Flat out. They are definitely great learning tools for students, but not things they should be touching yet. Unless they can demonstrate they know what they're doing.
- gervwyk 5y agoSure, every PR will not get accepted, thats fine. It would be best if the instructor helped students curate which projects is good candidates, and motivate students not to choose only one. The advice in the article for how to choose projects is really good imo: - Choose a project with several active contributors. - Choose a relatively popular project (some GitHub stars). - Avoid very popular projects. - Verify that you can build and run the project on your computer setup. - Ensure the project regularly accepts pull requests from outsiders. - Try to contribute a trivial fix as a warm-up exercise. - Look for project issues marked as "Good first issue".
- joshsyn 5y agoWho pays them?
- Aperocky 5y ago*Should write their own software. Software design and implementation is FUN. Now I know not everyone agrees, but a self contained game etc (no it does not need to be reusable package that are 'useful for other people/future'!) is a very helpful experience for software implementation. e.g. http://aperocky.com/cellular-automata/ http://aperocky.com/cellular-automata/
- 6510 5y agoImagine this: A name for a new type of application is coined that crudely described would work like this: a group of students pick a simple but very useful application and write it from scratch, it is to be maintained by them for the duration of their career and should be proudly listed on the resume. Some will be to busy with their career to contribute much while others will have time to expand the project.
- nobodyandproud 5y agoThis is like residency, but unpaid. Why do engineers put up with this?
- dylan-m 5y agoI had an awesome professor for a QA course at SFU, who for a project had people choose some piece of open source software at their leisure and work on something substantial for it related to QA. (Adding a different test suite, improving the existing tests, writing some documentation, etc). There was no pressure to actually send the work upstream, but people doing so made him happy. I thought that was a good model, where you get to spend some time with a lived-in software project, you discover the wonderful world of sending patches if you want to, but in general nobody's time is being wasted. This reminds me of that in some ways, and I think its success depends a great deal on how people are incentivized. There's a tremendous amount to learn from doing this - and it is nice feeling like your assignment is actually something useful - but it's really important people don't feel like they have to get some big change merged to get full marks. That can lead to unpleasant situations.
- ivirshup 5y agoPRs which add tests and docs, but not new features to maintain? From new contributors? Your professor sounds like a true hero.
- dblohm7 5y agoIf instructors are going to ask their students to do this, they need to make sure they are doing so meaningfully. At Mozilla we can tell when each semester begins because our bug tracker receives an influx of bogus bugs that were obviously filed by students who were asked to do so as part of an assignment.
- mywittyname 5y agoI have to say that I'm against this strategy for a number of reasons, 1. It puts the onus on figuring out what to do on the student. And since there's no promise of guidance from the project, the student could spend on their time flailing around and accomplishing nothing. 2. Large OSS projects require specialized knowledge. It can take years to develop the knowledge necessary to make meaningful contributions to a project. There shouldn't be an expectation that students have the requisite knowledge to contribute. So the student is probably going to be relegated to minor bug fixes, documentation, or other kind of mindless tasks that no one else wants to pick up. 3. It takes time away from learning fundamentals. I think most students would benefit from building their own project rather than contributing to OSS. For example, building a working web server will teach a student a LOT more than a few commits to Django ever would. Contributing to open source is great for certain students. I love the Google's Summer of Code and the like, where students have an idea of what they want to create, and the project is incentivized to provide a mentor to the student because they get funding. But expanding that model to every student is foolish and hurts less privileged students a lot. A good middle ground would be to have a course use open source code as a foundation for a project, but not require contributions back to the project. I had a computer security course lab that required us to find a specific exploit in an old version of sudo and create a patch for it. The issue was many years old by this point, so giving the patch back to the project was pointless, but we still learned the fundamentals of working on an OSS project; how to document issues, how to create patches, how to create test cases, etc. And since it was a lab, we could ask other students if we got stuck.
- Jakobeha 5y agoThis looks a lot like existing co-op programs, where undergraduate students are hired as (typically paid) interns and take a break from classes while they work. AFAIK these programs usually work really well, to the point where my undergraduate college became very competitive and popular solely because of its co-op. Co-op work is not classwork, so it removes the incentive for students to submit lazy contributions for bad grades. Yet co-op students actually benefit their companies because said companies continue to hire them. Of course, the main difference with open-source is that nobody is paying the student. But still - either investors in FOSS can "hire" students to work on various open-source projects, or the students can choose to work unpaid (perhaps for less tuition, or part-time work on the side, to make ends meet). But I really think adopting a co-op model would be easier and more effective than trying it in the classroom.