Changes between Version 1 and Version 2 of SummerOfCode2019
- Timestamp:
- Mar 7, 2019, 5:08:53 AM (6 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SummerOfCode2019
v1 v2 1 Google's Summer of Code 2019 1 [[PageOutline]] 2 = Google's Summer of Code 2019 = 2 3 3 Django is a mentor organization for the 2019 Google Summer of Code. Read Google's pagefor more information on how the program works.4 Django is a mentor organization for the 2019 Google Summer of Code. Read https://summerofcode.withgoogle.com Google's page] for more information on how the program works. 4 5 5 Django's GSoC program is being coordinated by Carlton Gibson.6 Django's GSoC program is being coordinated by the current Django Fellows, Carlton Gibson and Mariusz Felisiak. 6 7 7 Mentors 8 == Mentors == 8 9 9 10 If you're interested in mentoring -- supervising a student in work on Django-related activities -- add your name, email, and the sort of projects you're interested in mentoring here: … … 11 12 Carlton Gibson (carlton.gibson@noumenal.es) - Anything, most likely. 12 13 13 Students 14 == Students == 14 15 15 Student application period opens ... ends on ....16 Student application period opens March 25, 2019 and ends April 9, 2019. 16 17 17 18 If you'd like to get started on your proposal early, we'll be looking for a few things. 18 19 19 You'll need to have a concrete task in mind (some ideas are below) along with a solid idea of what will constitute "success" (you tell us). 20 If your proposal is a single large feature, library or site, you'll need to present a detailed design specification. This proposal should be posted to django-developers, where it can be refined until it is accepted by the developer community. 21 We'll want to know a bit about you -- links to previous work are great, if any. If you're proposing something ambitious, you'll need to convince us that you're up to the task. 22 You'll also need to provide us with a schedule, including a detailed work breakdown and major milestones so your mentor can know if and when to nag you :) 20 * You'll need to have a concrete task in mind (some ideas are below) along with 21 a solid idea of what will constitute "success" (you tell us). 22 * If your proposal is a single large feature, library or site, you'll need to present 23 a detailed design specification. This proposal should be posted to 24 [http://groups.google.com/group/django-developers django-developers], 25 where it can be refined until it is accepted by the developer community. 26 * We'll want to know a bit about you -- links to previous work are great, if any. If you're proposing something ambitious, you'll need to convince us that you're up to the task. 27 * You'll also need to provide us with a schedule, including a detailed work breakdown and major milestones so your mentor can know if and when to nag you :) 23 28 Here's an example of an accepted proposal from a previous year: 24 29 25 https://gist.github.com/chrismedrela/82cbda8d2a78a280a129 30 * https://gist.github.com/chrismedrela/82cbda8d2a78a280a129 31 26 32 Note that none of the ideas below are good enough to be submissions in their own right (so don't copy and paste)! We'll want to know not just what you want to do but how you plan to pull it off. 27 33 … … 30 36 We're accepting any GSOC proposal that fits one of the following three categories: 31 37 32 Work on Django itself - such as the ORM, forms, etc. This is what we've traditionally accepted GSoC entries in. 33 Work on tools to support Django - the dashboard (https://dashboard.djangoproject.com/) is a good example of an existing tool that would have fit into this category. 34 Work on libraries that supplement or add new features to Django to ease development - South and Django Debug Toolbar are good examples of existing projects that would have fit here. 35 We're not looking for people to work on existing third-party libraries - we aren't able to guarantee commit access to them. We may allow an exception if a maintainer of the library in question agrees to help mentor beforehand. 38 * Work on Django itself - such as the ORM, forms, etc. This is what we've traditionally accepted GSoC entries in. 39 * Work on tools to support Django - the dashboard (https://dashboard.djangoproject.com/) is a good example of an existing tool that would have fit into this category. 40 * Work on libraries that supplement or add new features to Django to ease development - South and Django Debug Toolbar are good examples of existing projects that would have fit here. 41 42 We're **not** looking for people to work on existing third-party libraries - we aren't able to guarantee commit access to them. We may allow an exception if a maintainer of the library in question agrees to help mentor beforehand. 36 43 37 44 The broadening in scope is to allow people to work on new ideas to help Django development and developers without tying you down to having to implement it in the core codebase (and thus ruling out some projects that might otherwise be useful). … … 43 50 We're also not looking for sites or projects that are merely written in Django - this GSoC is not for you to propose your new forum hosting site or amazing Django-based blogging engine. 44 51 45 Note that when you contribute code, you will be expected to adhere to the same contribution guidelines as any other code contributor. This means you will be expected to provide extensive tests and documentation for any feature you add, you will be expected to participate in discussion on django-developers when your topic of interest is raised. If you're not already familiar with Django's contribution guidelines, now would be a good time to read them - even if you're not applying to work on Django core directly, we'll still want the same level of contribution.52 Note that when you contribute code, you will be expected to adhere to the same contribution guidelines as any other code contributor. This means you will be expected to provide extensive tests and documentation for any feature you add, you will be expected to participate in discussion on [http://groups.google.com/group/django-developers django-developers] when your topic of interest is raised. If you're not already familiar with [http://docs.djangoproject.com/en/dev/internals/contributing/ Django's contribution guidelines], now would be a good time to read them - even if you're not applying to work on Django core directly, we'll still want the same level of contribution. 46 53 47 How can I improve my chances of being accepted? 54 == How can I improve my chances of being accepted? == 48 55 49 The best thing you can do to improve your chances to be accepted as a Django GSoC student is to start contributing now. Read up on Django’s contribution documentationand make yourself known to the core team by your contributions (ideally, related to the area of your proposal). That way, when it comes time to evaluate student applications, you’ll be a known individual and more likely to be able to get the attention you need to develop a proposal.56 The best thing you can do to improve your chances to be accepted as a Django GSoC student is to start contributing now. Read up on [https://docs.djangoproject.com/en/dev/internals/contributing/ Django’s contribution documentation] and make yourself known to the core team by your contributions (ideally, related to the area of your proposal). That way, when it comes time to evaluate student applications, you’ll be a known individual and more likely to be able to get the attention you need to develop a proposal. 50 57 51 Communication 58 == Communication == 52 59 53 All GSOC-related communication is handled via the django-developers mailing list. Any proposals for GSOC should be submitted there, as well as discussion on the proposed projects and any updates that students post.60 All GSOC-related communication is handled via the [http://groups.google.com/group/django-developers django-developers mailing list]. Any proposals for GSOC should be submitted there, as well as discussion on the proposed projects and any updates that students post. 54 61 55 62 Please be careful to keep content to the list clear and purposeful; if you have an idea, update, or criticism, please make sure you describe it in detail; it can be tedious asking people to clarify any vague statements. 56 63 57 Ideas 64 == Ideas == 58 65 59 Here are some suggestions for projects students may want to propose (please feel free add to this list!). This isn't by any means the be-all and end-all of ideas; please feel free to submit proposals for things not on this list. Remember, we'd much prefer that you posted a draft proposal and your rough timeline / success conditions to the django-developers list, even if it's already on the list below; it will help you get feedback on choosing the right part of a problem, as well as helping to see if there is any interest before you start drafting a full proposal.66 Here are some suggestions for projects students may want to propose (please feel free add to this list!). This isn't by any means the be-all and end-all of ideas; please feel free to submit proposals for things not on this list. Remember, we'd much prefer that you posted a draft proposal and your rough timeline / success conditions to the [http://groups.google.com/group/django-developers django-developers list], even if it's already on the list below; it will help you get feedback on choosing the right part of a problem, as well as helping to see if there is any interest before you start drafting a full proposal. 60 67 61 68 When developing your proposal, try to scope ideas/proposals to the 4-month timeline -- simply proposing to fix a ticket or two will probably result in your proposal being rejected in favor of a more ambitious one. The GSoC does not cover activities other than coding, so certain ideas ("Write a more detailed tutorial" or "Create demonstration screencasts") are not suitable for inclusion here. … … 65 72 In no particular order: 66 73 67 Add Cross-DB JSONField (etc) 74 == Add Cross-DB JSONField (etc) == 68 75 69 Complexity:Medium76 * '''Complexity:''' Medium 70 77 71 78 Task is to bring the fields from `contrib.postrges` into core. In particular JSONField. All supported DBs now have native JSON handling. There are versions for all DBs except SQLite already available to use as base examples. … … 75 82 JSONField is the obvious main target here, but `ArrayField` and even a suitably named version of `HStoreField` would be desirable too. 76 83 84 == Improve Admin Filters == 77 85 78 Replace Form Media Class 86 * '''Complexity:''' Medium 79 87 80 Complexity: Hard 88 A number of the [https://code.djangoproject.com/query?status=assigned&status=new&component=contrib.admin&stage=Accepted&col=id&col=summary&col=status&col=owner&col=type&col=component&col=changetime&desc=1&order=changetime accepted issues on `contrib.admin`] pertain to the filtering system. 89 90 They cover such topics as improving search, adding autocomplete to M2M list filters, and so on. 91 92 A project to combine and address a number of these tickets would be worthwhile. 93 94 == Replace Form Media Class == 95 96 * '''Complexity:''' Hard 97 81 98 Quoting Loic on the ticket: "My biggest issue with it is that it's a very naive approach to a complicated problem. It doesn't really fit with today's development practices where a project can easily grow to hundreds of static assets, where javascript offers concepts like AMD, where CSS gained preprocessors like LESS or SASS and where files are concatenated for performance. 82 99 … … 85 102 You will need to come up with a design here. There are a variety of third-party libraries from which you might glean best practices however the frontend tech world is currently in a state of reinvention so it might be hard to develop a suitable API that's suitable now but not in the future. 86 103 87 Test framework cleanup 104 == Test framework cleanup == 88 105 89 Complexity: Low 106 * '''Complexity:''' Low 107 90 108 Django has an extensive test framework for Python code, a suite of tools to make server-side testing easier, and a project policy that no new code is added without tests. This has been a significant contributor to the stability of Django as a project. 91 109 … … 96 114 Issues to consider: 97 115 98 How would users declare which tests they want to run? 99 Which tests should be enabled by default, and how hard should this be to change? 100 How will it be app maintainers run their tests? 101 Should there be additional hooks to, for example, allow tests to be run against different database backends in sequence? 102 Are there tools similar to the new --debug-sql option which would help developers working on Django? 116 * How would users declare which tests they want to run? 117 * Which tests should be enabled by default, and how hard should this be to change? 118 * How will it be app maintainers run their tests? 119 * Should there be additional hooks to, for example, allow tests to be run against different database backends in sequence? 120 * Are there tools similar to the new --debug-sql option which would help developers working on Django? 121 103 122 See also: 104 123 105 #13873 (more of a symptom of this problem) 106 Part of this task could be auditing Django's coverage report and adding missing tests and removing dead code. 107 Improving the less popular database backends 124 * #13873 (more of a symptom of this problem) 125 * Part of this task could be auditing Django's coverage report and adding missing tests and removing dead code. 108 126 109 Complexity: Medium 127 == Improving the less popular database backends == 128 129 * '''Complexity:''' Medium 130 110 131 Django supports several database backends, but not equally. The less popular backends -- Oracle in core, as well as open-source backends outside core, could probably use some love. As an example, Oracle has some problems: 111 132 … … 118 139 See also: 119 140 120 Trac's list of Oracle issues 121 Similar queries for 3rd-party backends should be added here 122 Formset improvements 141 * Trac's list of Oracle issues 142 * Similar queries for 3rd-party backends should be added here 123 143 124 Complexity: Low 144 == Formset improvements == 145 146 * '''Complexity:''' Low 147 125 148 One of the big problems in web programming is making a request object available everywhere that it might be needed. Some frameworks tackle this problem by using a threadlocal. A threadlocal is essentially a global variable that allows you to access stateful information, such as the currently active request. 126 149