as Coolo "announced" the week before last in his mail about his hackweek
project we're about to marry the WEBUI with the API. Adrian, Ancor,
Coolo and me just had a meeting about how we go about to push forward
with this unholy communion. Here are the results, but first let me
explain how we came to the decision to do this:
## What's wrong?
Over time the initial design decision to make the WEBUI just another API
client has proven to be a huge burden for WEBUI development. Especially
because it separates the WEBUI from the API database where nearly all
the OBS data is stored/referenced.
This separation not only introduces another layer in between (activexml)
with all the overhead such a layer brings in terms of network, parsing,
rendering etc. this separation also forces us to replicate a lot of the
cool (database) abstraction a framework such as Ruby on Rails brings.
Additionally it raises the hurdle for new (RoR) developers to contribute
as they need to learn all the inner workings of this setup and it
hinders the adoption of new (RoR) tools and best practices as it's so
In the last couple of months we explored to minimize the problem by
having a special WEBUI route in the API that only serves/receives data
specially crafted for/by the WEBUI. This already helped a lot but is
still not enough in our opinion. This is why we are going to eliminate
## What we are going to do about it?
Obviously we're getting rid of the separation to expose the API database
to the WEBUI and ultimately converting everything to the "frontend"
(name not chosen yet..) an RoR app that serves the XML API and the HTML
views. In order to get there we agreed to do the following three sprints:
### Affiance - Bind what belongs together.
1. Merge Coolos hackweek progress into master (coolo)
2. Document what changes for OBS admins and hackers (henne, adrian)
* Especially where all the config options are now & where they could
* The new structure of the app, how to hack on and how to test it.
3. Deploy master to build-test.opensuse.org
and pound on it.
4. Make a milestone release
5. Inform the OBS admins we know about the change, ask them to help
### Marriage - Conflate what belongs together.
1. Organize a test coverage sprint so we can be sure that nothing
breaks when we merge.
2. Re-factor all WEBUI controllers to use API models
3. Get rid of all the WEBUI models, moving things we need into the API
4. Setup a standardized authorization system
5. Merge WEBUI/API login
### Honeymoon - Enjoy together.
1. Come up with a new layout for the HTML views. One that's using an
mobile first front-end framework (most likely getbootstrap.com
a design pattern library (most likely pattern-lab.info)
2. Get rid of the sub-domains (build.o.o, api.o.o) for the reference
server and maybe even version the API (something like /api/v1/about)
3. Who knows what? The sky is the limit.
You can find the progress of these sprints online in this task list:
Everybody has a plan, until they get hit.
- Mike Tyson
To unsubscribe, e-mail: opensuse-buildservice+unsubscribe(a)opensuse.org
To contact the owner, e-mail: opensuse-buildservice+owner(a)opensuse.org