Dear Wolf,

I finally tested your EDID code on my other machines and it works everywhere as expected.

I also went through the code in your vesafb branch. Here are some comments and suggestions what you should do during your final week of coding:

* I believe that you are severely behind the schedule. I see that many
  of the important building blocks are prototyped successfully, but the
  whole functionality is not well integrated. According to your
  proposal, the final week of coding should be dedicated to code
  cleanup, comments and documentation. But unfortunately you have much
  more pushing tasks to do.

* From the user experience point of view I see two major problems:

  - The vesafb driver does not set the optimal mode (according to EDID)
    yet, it only reuses the kfb mode.

  - Without the kernel framebuffer activated there is no way how to
    activate the compositor and vesafb (i.e. how to switch from the
    text mode console to the compositor).

  AI: Catch up with the schedule and deliver an integrated user
  experience, i.e. vesafb setting optimal mode using EDID, possibly
  also without kernel framebuffer present in the kernel at all.

* Similar issues appear also on the code level. While x86emu is nicely
  isolated into a library, other pieces of "borrowed" code (drm_edid,
  drm_modes, etc.) are used directly in the vesafb driver. You should
  have really written the EDID code from scratch, the "DRM" code is
  alien to HelenOS.

  AI: Rewrite the "DRM" code from scratch.

* What is even more wrong is the use of the source files linuxlist.h,
  linuxlist_sort.{c|h}, linuxpoison.h and linuxtypes.h in vesafb. If I
  am not mistaken, these files are distributed under GPL, thus forcing
  (at least) the entire vesafb to be also licensed under GPL.

  AI: Remove/rewrite the Linux lists.

* In sys_debug_console() (kernel/generic/src/console.c) you access the
  data structure supplied from user space without any checks. The
  approach is not only vulnerable, moreover it works only on x86 by
  sheer coincidence.

  AI: Use copy_from_uspace() to access the user space supplied
  structure.

* It is a pity that you have failed to follow previous advice from me
  and others [1][2]. The command line interface of compctl is still
  unfixed and frankly, using compctl is a pain in the ass currently.
  There are also still two nodes for controlling the compositor
  registered by the location service. And vesafb is still creating a
  thread for unknown reasons.

  After several repeated requests, could you finally make your branch
  compile without the need to remove the -Werror option and merge the
  mainline changes (this should be rather straightforward)?

  AI: Improve the command line interface of compctl. As there is almost
  universally just one compositor in the system, make it the default
  choice for compctl. Or at least make compctl print the list of
  compositors running by default.

  AI: Get rid of the two compositor nodes.

  AI: Get rid of the thread in vesafb.

  AI: Get rid of the compilation warnings.

  AI: Merge with mainline.

* Beyond that, here are some extra action items:

  AI: Clean up the code, write and update documentation comments (at
  least for all public and major functions).

  AI: Write at least some design and user documentation on our wiki.

  AI: I still don't like how the kfb and vesafb "coexist". Your
  solution requires that kfb is completely absent from the system on
  ia32 and amd64. But the original suggestion was a bit different [3].
  It would be nice if both kfb and vesafb could coexist in the system.

  AI: If I am not mistaken, the real-mode IVT area does not necessarily
  need to be mappable in a read/write mode. It would be nice if the DDI
  would only allow to map it in a read-only mode.

Finally, there is the issue we have already spoken about privately. I really hate to open it in the public, but it somehow relates to all the previous points. Even if I over-estimate your coding effort, I am able to count only some 2000 (maybe 2500) lines of code written or modified by you.

No surprise you are behind the schedule. 2500 SLOC is about 1/2 of the expected productivity of a GSoC student, even considering the context of the topic. I hope that I don't have to explain the rationale behind this, I have already written too many private warnings to you.

Your diligent effort in your final week and tackling all the remaining action items can save you for the final evaluation. The final deliverable has to be something that could be integrated into the HelenOS mainline branch and work reasonably.

Good luck!

[1] http://lists.modry.cz/private/helenos-devel/2014-July/007287.html
[2] http://lists.modry.cz/private/helenos-devel/2014-July/007289.html
[3] http://lists.modry.cz/private/helenos-devel/2014-July/007293.html


M.D.

_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel

Reply via email to