Summer of Code and Projects around Wine

Francois Gouget fgouget at free.fr
Tue Feb 25 19:31:04 CST 2020


So I'll hijack this thread a bit...

Would a GSOC project to improve the TestBot make 
sense / fit into the GSOC mandate? Like some other proposals it would 
not be on the Wine codebase but still the Wine infrastructure.


Here are some ideas:

* Javascript-ification of the site
  The goal would be to avoid reloading pages all the time.
  - A prime target would be the job details page which reloads every 
    time one shows / hides a log or a screenshot. Screenshots would be 
    easy. The interesting part would be to have the website provide an 
    API to retrieve the logs which the JavaScript code would then insert 
    in the right place.
  - Another target could be the main page. Instead of reloading all of 
    it JavaScript could use an API to retrieve just the updates and 
    refresh the page accordingly.
  - The job submit page could also benefit from this.

* Swap TestBot's Object Relational Mapper
  - The TestBot uses its own Perl ORM implementation which has a lot of 
    issues:
    https://bugs.winehq.org/show_bug.cgi?id=45023
  - These issues were quite troublesome at some point but the TestBot 
    code works around them and they are not hindering the kind current 
    development. So replacing the ORM is low priority now. However 
    performance is pretty bad. My feeling is that it's an order of 
    magnitude slower than it should. See for instance the load times for 
    the home and activity pages.
  - So swapping it for an ORM we don't have to maintain would be nice. I 
    don't know if it would fit for a GSOC though. There's one part which 
    is figuring out if there's a way to implement the old API on top of 
    the new one to ease the transition. That would probably be a good 
    fit for part of a GSOC. The second part is switching the code to the 
    new API and which may be repetitive and not particularly 
    educational.
  - Also if reimplementing the old API on top of the new one is not 
    possible it the only way to test and perform the switch may be with 
    one big commit that changes everything :-(

* Implement load balancing and failover
  https://bugs.winehq.org/show_bug.cgi?id=39412
  This implies:
  - Adding a middle layer between tasks and the VM configurations they 
    are supposed to run on.
  - Modifying the database schema to represent the VM exclusions:
    - If the w1064 VM has French and English configurations only one 
      instance can be run at a time because both are in the same VM.
    - For most VMs we only have a single OS license so only one 
      instance must run at a time even if the VM is present on two 
      hosts. For others (e.g. Debian) we could allow more than one 
      instance to run at a time.
      (use IP addresses as a proxy for license counts?)
  - Update the code that depends on the above changes (essentially 
    everything).
  - Update the task scheduler to take into account all these 
    constraints.
  That may be too much for a GSOC though.

* Research VM isolation and resource allocation
  The goal would be to be able to run multiple VMs simultaneously 
  without having one VM interfere with the timing of the tests in 
  another VM. Once it works it opens up a number of issues though:
  - Core pinning seems like it would be required. Then how do we
    allocate cores to VMs? Can we make it so the TestBot runs 4 2-core 
    Windows VMs while the Debian VM that normally gets 8 cores is 
    powered off? Or is that so complex that only a static core 
    allocation is workable? (it would certainly be better than the 
    current scheme anyway)
  - How do we make it so the TestBot does not start two VMs that 
    need the same PCI-passthrough graphics card at the same time?
    Note that this is probably closely related to the exclusion 
    mechanism for the failover project above.
  - Can we assume that the number of cores will always be the limiting 
    factor or should we add memory constraints?
  The TestBot hardware may not be ready for this type of work in time 
  for this year's GSOC though, and it may be hard for a student to get 
  hold of a beefy enough system to meaningfully test these issues (or 
  to work on them remotely).


-- 
Francois Gouget <fgouget at free.fr>              http://fgouget.free.fr/
                     Linux: the choice of a GNU generation



More information about the wine-devel mailing list