@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
at recaptime-dev/main 211 lines 9.3 kB view raw
1@title Contributing Feature Requests 2@group detail 3 4Describes how to file an effective Phorge feature request. 5 6Overview 7======== 8 9Phorge is an open-source project, and welcomes feature requests from the community 10at large. However, there are some guidelines we ask you to follow. 11 12Overview 13======== 14 15This article describes how to file an effective feature request. 16 17The most important things to do are: 18 19 - understand the upstream; 20 - make sure your feature makes sense in the project; 21 - align your expectations around timelines and priorities; 22 - describe your problem, not your solution. 23 24The rest of this article walks through these points in detail. 25 26If you have a bug report (not a feature request), see 27@{article:Contributing Bug Reports} for a more tailored guide. 28 29For general information on contributing to Phorge, see 30@{article:Contributor Introduction}. 31 32 33Understanding the Upstream 34========================== 35 36Before filing a feature request, it may be useful to understand how the 37upstream operates. 38 39Phorge has a designated core team who controls the project and roadmap. 40We have a cohesive vision for the project in the long term, and a general 41roadmap that extends for years into the future. While the specifics of how 42we get there are flexible, many major milestones are well-established. 43 44Although we set project direction, the community is also a critical part of 45Phorge. We aren't all-knowing, and we rely on feedback to help us identify 46issues, guide product direction, prioritize changes, and suggest features. 47 48Feature requests are an important part of this, but we ultimately build only 49features which make sense as part of the long term plan. 50 51Since it's hard to absorb a detailed understanding of that vision, //describing 52a problem// is often more effective than //requesting a feature//. We have the 53context to develop solutions which fit into our plans, address similar use 54cases, make sense with the available infrastructure, and work within the 55boundaries of our product vision. For more details on this, see below. 56 57 58Target Audiences 59================ 60 61Some feature requests support very unusual use cases. Although we are broadly 62inclusive of many different kinds of users and use cases, we are not trying 63to make the software all things to all users. Use cases which are far afield 64from the things the majority of users do with Phorge often face substantial 65barriers. 66 67Phorge is primarily targeted at software projects and organizations with 68a heavy software focus. We are most likely to design, build, and prioritize 69features which serve these organizations and projects. 70 71Phorge is primarily targeted at software professionals and other 72professionals with adjacent responsibilities (like project management and 73operations). Particularly, we assume users are proficient computer users and 74familiar with software development concepts. We are most likely to design, build 75and prioritize features which serve these users. 76 77Phorge is primarily targeted at professionals working in teams on full-time 78projects. Particularly, we assume most users will use the software regularly and 79are often willing to spend a little more time up front to get a more efficient 80workflow in the long run. We are most likely to design, build and prioritize 81features which serve these use cases. 82 83Phorge is not limited to these kinds of organizations, users and use cases, 84but features which are aimed at a different group of users (like students, 85casual projects, or inexperienced computer users) may be harder to get 86upstreamed. Features aimed at very different groups of users (like wedding 87planners, book clubs, or dogs) will be much harder to get upstreamed. 88 89In many cases, a feature makes something better for all users. For example, 90suppose we fixed an issue where colorblind users had difficulty doing something. 91Dogs would benefit the most, but colorblind human users would also benefit, and 92no one would be worse off. If the benefit for core users is very small these 93kinds of features may be hard to prioritize, but there is no exceptional barrier 94to getting them upstreamed. 95 96In other cases, a feature makes something better for some users and worse for 97other users. These kinds of features face a high barrier if they make the 98software better at planning weddings and worse at reviewing code. 99 100 101Setting Expectations 102==================== 103 104We have a lot of users and a small team. Even if your feature is something we're 105interested in and a good fit for where we want the product to go, it may take 106us a long time to get around to building it. 107 108Our long-term roadmap (which we call our 109[[ https://we.phorge.it/w/starmap/ | Starmap ]]) has many years worth 110of work. Your feature request is competing against thousands of other requests 111for priority. 112 113In general, we try to prioritize work that will have the greatest impact on the 114most users. Many feature requests are perfectly reasonable requests, but have 115very little impact, impact only a few users, and/or are complex to develop and 116support relative to their impact. It can take us a long time to get to these. 117 118Even if your feature request is simple and has substantial impact for a large 119number of users, the size of the request queue means that it is mathematically 120unlikely to be near the top. 121 122As a whole, this means that the overwhelming majority of feature requests will 123sit in queue for a long time without any updates, and that we won't be able to 124give you any updates or predictions about timelines. One day, out of nowhere, 125your feature will materialize. That day may be a decade from now. You should 126have realistic expectations about this when filing a feature request. 127 128 129Describe Problems 130================= 131 132When you file a feature request, we need you to describe the problem you're 133facing first, not just your desired solution. Describing the problem you are 134facing is the **most important part** of a feature request. 135 136Often, your problem may have a lot in common with other similar problems. If we 137understand your use case we can compare it to other use cases and sometimes find 138a more powerful or more general solution which solves several problems at once. 139 140At other times, we'll have a planned solution to the problem that might be 141different from your desired solution but accomplish the same goal. Understanding 142the root issue can let us merge and contextualize things. 143 144Sometimes there's already a way to solve your problem that might just not be 145obvious. 146 147Finally, your proposed solution may not be compatible with the direction we 148want to take the product, but we may be able to come up with another solution 149which has approximately the same effect and does fit into the product direction. 150 151If you only describe the solution and not the problem, we can't generalize, 152contextualize, merge, reframe, or offer alternative solutions or workarounds. 153 154You must describe the problem you are facing when filing a feature request. We 155will not accept feature requests which do not contextualize the request by 156describing the root problem. 157 158If you aren't sure exactly what we're after when we ask you to describe a root 159problem, you can find examples and more discussion in 160@{article:Describing Root Problems}. 161 162 163Hypotheticals 164============= 165 166We sometimes receive hypothetical feature requests about anticipated problems 167or concerns which haven't actually occurred yet. We usually can't do much about 168these until the problems actually occur, since the context required to 169understand and properly fix the root issue won't exist. 170 171One situation where this happens is when installs are thinking about adopting 172Phorge and trying to guess what problems users might encounter during the 173transition. More generally, this includes any request like "if users do **X**, 174they might find **Y** confusing", where no actual users have encountered 175confusion yet. 176 177These requests are necessarily missing important context, maybe including the 178answers to questions like these: 179 180 - Why did users do **X**? 181 - What were they trying to do? 182 - What did they expect to happen? 183 - How often do users do this? 184 185The answers to these questions are important in establishing that the issue is 186really a problem, figuring out the best solution for it, and prioritizing the 187issue relative to other issues. 188 189Without knowing this information, we can't be confident that we've found a good 190solution to the problem, can't know if we've actually fixed the problem, and 191can't even know if the issue was really a problem in the first place (some 192hypothetical requests describe problems which no users ever encounter). 193 194We usually can't move forward without this information. In particular, we don't 195want to spend time solving hypothetical problems which no real users will ever 196encounter: the value of those changes is zero (or negative, by making the 197product more complex without providing a benefit), but they consume development 198time which could be better spent building much more valuable features. 199 200Generally, you should wait until a problem actually occurs before filing a 201request about it. 202 203 204Next Steps 205========== 206 207Continue by: 208 209 - learning about @{article: Contributing Bug Reports}; or 210 - reading general support information in @{article:Support Resources}; or 211 - returning to the @{article:Contributor Introduction}.