Version 4 vs 5
Version 4 vs 5
Edits
Edits
- Edit by epriestley, Version 5
- Apr 25 2013 2:20 PM
- Edit by btrahan, Version 4
- Oct 31 2012 2:52 PM
| « Previous Change | Next Change » |
| Edit Older Version 4... | Edit Older Version 5... |
Content Changes
Content Changes
This document describes the Phabricator roadmap at a high level.
= Hi Priority
== Drydock (Software Resource Management)
Drydock is a "software resource management" system. It will satisfy requests like "allocate a working copy of repository X //somewhere//", and manage leases and resource reuse and destruction. Being able to satisfy this sort of request in a scalable way opens the door to many other tools.
Drydock is important because we want to build a number of tools that will face similar resource management problems: continuous integration, commit management, build tools and sandcastles all need temporary, exclusive locks on working copies. Having them check out fresh working copies for each operation is very slow, while having them share a few working copies doesn't scale. Drydock solves this problem by treating it as a resource allocation problem.
Drydock works something like this:
- Some tool needs a working copy of repository X -- to run a build step, run unit tests, host a sandcastle, or whatever else. It builds a description of the resource and asks Drydock to allocate it.
- Drydock tries to satisfy the request from the pool of existing but unallocated resources. If it can, it just issues a lease and hands the resource back to the tool. This is very fast and should be the common case.
- If it can't satisfy the request from the pool of existing resources, it figures out how much of the request it can satisfy and how much new work it needs to do. For instance, it will try to use a host which has already been allocated if it has enough system resources. If it can't find a matching host, it can allocate a new one (e.g., by bringing up a machine in EC2).
- It does the work to build the resource, then issues a lease on it to the original tool.
- When the tool is done, it releases the lease.
- Eventually, Drydock may GC the resource.
In detail, the major parts of Drydock are:
- Resources, which represent allocated software or hardware.
- Interfaces, which expose capabilities on resources (e.g., command execution, filesystem access, webserver management).
- Blueprints, which are scripts for building new resources.
Drydock is blocking a lot of other stuff right now and is a relatively high priority.
== User Requests
Our roadmap is dictated largely by user requests for features and bugfixes. These change day-to-day.
== Design
Everything needs design help and everything is getting it. Differential and Maniphest are prioritized apps within the re-design work.
== Phacility (Phabricator SaaS)
- {T1315}
We're building a SaaS version of Phabricator. This is primarily blocked by Drydock, but also by a lot of other missing components. The goal is to offer a paid, hosted version of the software and line our pockets with tens of dollars; wealth unimaginable.
= Also Kind of Important
== Policy (Permissions, Roles and Privacy)
- {T603}
We're in the process of implementing object visibility policies, so you can lock objects down to certain groups of permitted viewers.
== Releeph (Release Management)
Facebook is open sourcing their release management tool. Releeph helps release engineers manage which changes get picked into which releases. This is partly blocked by Drydock. This does not currently include tools to handle actual deployment of software, but may evolve that way once we get this landed.
== Calendar
- {T407}
- {T406}
We have a very basic calendar application, which we want to improve and integrate with other tools. Notably, we planning to support user status (so when users are away on vacation, it's visible in the application), and probably things like oncall rotations and tighter integration with Maniphest eventually. Some of this exists already.
== Diviner (Documentation)
- {T988}
Phabricator uses a documentation generator called "Diviner" which we want to merge into Phabricator itself and improve support for.
This document describes the Phabricator roadmap at a high level.
= Phacility (Phabricator as a Service)
Provide Phabricator as a hosted service.
- {T2772}
- {T2776}
- {T2795}
== Phortune
Build an accounts/billing application so we can charge cards, bill subscriptions, and accept payments.
- {T2787}
== Phage
Build a simple scalable shell, like hypershell.
- {T2794}
== Repository Hosting
Allow Phabricator to host repositories.
- {T2230}
== Refresh Org/Com Sites
Refresh `phabricator.org` and `phacility.com`.
= ApplicationTransactions
Improve infrastructure for updating and commenting on objects.
- {T2217}
- {T2222}
= ApplicationSearch
Provide improved search infrastructure to all applications.
- {T2625}
= Refactor Authentication
Improve how we implement authentication.
- {T1536}
= Conpherence (Messaging)
Develop Conpherence to a usable release version.
- {T2399}
= Pholio (Design Review)
Develop Pholio to a usable release version.
- {T2637}
= Policy (ACLs)
Implement access control policies in all applications.
- {T603}
- {T2034}
= Project Management for Maniphest
Provide better project management tools on top of Maniphest.
- {T390}
- {T1344}
= Mobile
Make Phabricator work well on mobile web.
- {T2796}
= Calendar
Turn Calendar into a more useful application which can represent all events and sync to and from external calendars.
= Diviner
Bring Diviner into Phabricator as a first-class application.
- {T988}
= Drydock (Software Resource Management)
Drydock allows operations which depend on working copies (like asynchronous lint, unit tests, builds, and commits) to be implemented at scale.
- {T2015}
= Harbormaster (Continuous Integration)
Provide support for continuous integration and build/deploy processes.
- {T1049}
= Internationalization
Allow Phabricator to be translated into different languages.
- {T1139}
This document describes the Phabricator roadmap at a high level.
= Hi Priority= Phacility (Phabricator as a Service)
== Drydock (Software Resource Management)
Drydock is a "software resource management" system. It will satisfy requests like "allocate a working copy of repository X //somewhere//", and manage leases and resource reuse and destruction. Being able to satisfy this sort of request in a scalable way opens the door to many other tools.
Drydock is important because we want to build a number of tools that will face similar resource management problems: continuous integration, commit management, build tools and sandcastles all need temporary, exclusive locks on working copies. Having them check out fresh working copies for each operation is very slow, while having them share a few working copies doesn't scale. Drydock solves this problem by treating it as a resource allocation problem.
Drydock works something like this:Provide Phabricator as a hosted service.
- Some tool needs a working copy of repository X -- to run a build step, run unit tests, host a sandcastle, or whatever else. It builds a description of the resource and asks Drydock to allocate it.{T2772}
- Drydock tries to satisfy the request from the pool of existing but unallocated resources. If it can, it just issues a lease and hands the resource back to the tool. This is very fast and should be the common case.{T2776}
- If it can't satisfy the request from the pool of existing resources, it figures out how much of the request it can satisfy and how much new work it needs to do. For instance, it will try to use a host which has already been allocated if it has enough system resources. If it can't find a matching host{T2795}
== Phortune
Build an accounts/billing application so we can charge cards, it can allocate a new one (e.g.bill subscriptions, by bringing up a machine in EC2)and accept payments.
- It does the work to build the resource, then issues a lease on it to the original tool.
- When the tool is done- {T2787}
== Phage
Build a simple scalable shell, it releases the lease.like hypershell.
- Eventually, Drydock may GC the resource.- {T2794}
== Repository Hosting
In detail, the major parts of Drydock are:Allow Phabricator to host repositories.
- Resources, which represent allocated software or hardware.{T2230}
== Refresh Org/Com Sites
Refresh `phabricator.org` and `phacility.com`.
= ApplicationTransactions
Improve infrastructure for updating and commenting on objects.
- Interfaces, which expose capabilities on resources (e.g., command execution, filesystem access, webserver management).- {T2217}
- Blueprints, which are scripts for building new resources.
Drydock is blocking a lot of other stuff right now and is a relatively high priority.{T2222}
== User Requests= ApplicationSearch
Our roadmap is dictated largely by user requests for feaProvide improved search infrastructures and bugfixes. These change day-to-day to all applications.
== Design - {T2625}
Everything needs design help and everything is getting it. Differential and Maniphest are prioritized apps within the re-design work.= Refactor Authentication
== Phacility (PhabrImprove how we implement authenticator SaaS)ion.
- {T1315}536}
= Conpherence (Messaging)
Develop Conpherence to a usable release version.
We're building a SaaS version of Phabricator. This is primarily blocked by Drydock, but also by a lot of other missing components. The goal is to offer a paid, hosted version of the software and line our pockets with tens of dollars; wealth unimaginable. - {T2399}
= Also Kind of Important= Pholio (Design Review)
== Policy (Permissions, Roles and Privacy)Develop Pholio to a usable release version.
- {T603}2637}
= Policy (ACLs)
We're in the process of implementing object visibility policies, so you can lock objects down to certain groups of permitted viewerImplement access control policies in all applications.
== Releeph (Release Management) - {T603}
- {T2034}
Facebook is open sourcing their release management tool. Releeph helps release engineers manage which changes get picked into which releases. This is partly blocked by Drydock. This does not currently include tools to handle actual deployment of software, but may evolve that way once we get this landed.= Project Management for Maniphest
== CalendarProvide better project management tools on top of Maniphest.
- {T407}390}
- {T406}1344}
= Mobile
Make Phabricator work well on mobile web.
- {T2796}
= Calendar
We have a very basic calendar application, which we want to improve and integrate with other tools. Notably, we planning to support user status (so when users are away on vacation, it's visible in the application), and probably things like oncall rotations and tighter integration with Maniphest eventually. Some of this exists alreadyTurn Calendar into a more useful application which can represent all events and sync to and from external calendars.
=== Diviner
Bring Diviner (Documentinto Phabricator as a first-class application).
- {T988}
Phabricator uses a documentation generator called "Diviner" which we want to merge into Phabricator itself and improve support for.= Drydock (Software Resource Management)
Drydock allows operations which depend on working copies (like asynchronous lint, unit tests, builds, and commits) to be implemented at scale.
- {T2015}
= Harbormaster (Continuous Integration)
Provide support for continuous integration and build/deploy processes.
- {T1049}
= Internationalization
Allow Phabricator to be translated into different languages.
- {T1139}