📜 ⬆️ ⬇️

Questions Heilmeyer, Pierce and our developers answers

When applying for grants, when presenting projects to investors and managers, it is often recommended to prepare answers to sets of typical questions.

Using a combination of the Pierce and Heilmeyer questionnaires, a survey was conducted of KolibriOS developers in actively developing areas: file system support, the Eolite file manager, video card drivers, the Forth programming language, the IDE development environment, and the Netsurf browser porting . Details under the cut.

A popular question set for developers is called Heilmeyer's Nine Questions. George Heilmeyer was the head of the United States Defense Development Research Agency (DAPRA) in 1975-1977 and was in the management of many companies. The list itself was made public only in the early 1990s in two publications. The first version contained 8 questions (there was no question about the consumer), in the second article, Heilmeyer claimed that he had invented it more than 17 years ago (this version contained 9 questions), so his story is unclear.

For example, after he left DAPRA in the late 1970s, similar questions were used there (corresponding to 5 questions in the Heylmeyer questionnaire) without reference to Heilmeyer. The set of questions has different variations, specifying and expanding it. For example, on the DAPRA website, a different wording of the consumer question than in the 1993 publication. At the present stage, DAPRA modified it to the DARPA Investment Criteria list, in which there is the question “What is the exit strategy for DAPRA from this project in case of failure?”. In general, the questionnaire is largely focused on the prospects of scientific research as a future business, therefore it is dedicated to investing money and making a profit.
')
I recently found a list of questions from another well-known scientist, John Pierce , who held senior positions in technical companies. This set of questions I called the Pierce questionnaire and it is aimed at scientists who are engaged in research without regard to the financial component. It is interesting to compare them, and then with the help of a combined questionnaire to conduct a survey of our developers in different directions.

A comparison of questions, the answers to which the developers must be ready to provide, is presented in the table.
Questions of Heilmeira (~ 1975) Pierce Questions (1969)
What are you trying to do? Formulate your goals without using jargon.
What are you trying to do? Articulate your objectives using absolutely no jargon.
What concrete thing do I hope to do?
What is one thing that I hope to accomplish?
Why (precisely) am I working in this area (on this task)?
Why am I working in this field?
How is it done now and what are the limitations of the current approach?
How is it done today?
What is new in your approach and why do you think it will be successful?
It will be successful?
How confident am I of success?
Am I likely to succeed?
Who is the consumer?
Who cares?
If you are successful, what changes will there be (in your scientific field, on the market)?
If you are successful, what's the difference?
Why is it important?
Why is it worthwhile?
What are the risks and profits?
What are the risks and payoffs?
Where can success happen or not happen? (problem areas in the project)
Where will success take or leave me?
How expensive is it?
How much will it cost?
How long will it take?
How long will it take?
What are the intermediate and final exams to test success?
What are the midterm and final "exams" to check for success?
How do I know if I'm successful or not successful?
How will I know?

It is clear that our developers mainly invest not money, but their time. Therefore, omitting business questions, we will survey our developers who are reworking the key KolibriOS subsystems.

The survey results are presented in the order in which the responses were received.

The first to respond is pathoswithin .
NoQuestionnaire 1Pathoswithin (disk subsystem)
oneWhat are you trying to do?Add input path to the file in unicode, fix bugs.
2Why is it important?see answer to question 5
3Why exactly are you working on this task?Because I'm alone working on a disk system.
fourHow was it done before you?Input only in cp866 encoding, many bugs in the ext fs driver.
fiveWhat were the limitations of the previous approach?Files with any non-standard character in the name, such as No. or dash, were completely inaccessible.
6What's new in your approach?see answer to question 10
7Why do you think your approach will be successful?Because there are no other approaches.
eightWhat parts of the project can be problems?Run programs and connect libraries.
9How long will the project take?The standard term for a non-commercial project is anywhere from one day to infinity.
tenWhat are the stages of the project?Adapt file system drivers to get UTF-8 encoded paths, and everything else to generate it.
elevenWhat tests do you do?System startup. One mistake is enough ...

The second answered Punk_Joker .
NoQuestionnaire 2punk_joker (file manager)
oneWhat are you trying to do?Turn Eolite into a really convenient and functional file manager.
2Why is it important?Because everyday PC use is almost impossible without working with files, and the file manager is the tool that allows you to do it conveniently.
3Why exactly are you working on this task?Because there are not so many programmers in the project, and most are busy with the OS kernel and drivers.
fourHow was it done before you?see answer to question 5
fiveWhat were the limitations of the previous approach?Now there are two graphic FM. This is KFM, but it is two-pane, which is not pleasant to everyone or convenient, and it is already morally obsolete. And fNav is quite a good FM, but it has closed source, and therefore it develops extremely slowly.
Well, of course, there is a console FAR - perhaps the most functional FM at the moment, but again it is two-panel, plus, in addition, not graphical, which for many is a drawback.
6What's new in your approach?There is a build-up of functionality with rewriting those parts of the program that do not allow adding certain features or interfere with doing it as efficiently as possible.
I just keep working on Eolite the way Leency did.
7Why do you think your approach will be successful?-
eightWhat parts of the project can be problems?Perhaps this is the introduction of support for scalable fonts, since Eolite, like other programs in Kolibri, is sharpened for the old fixed-size system font.
9How long will the project take?Unknown.
tenWhat are the stages of the project?Now it is the introduction of support for Unicode and scalable fonts.
elevenWhat tests do you do?The functions of the file manager are different and they need different tests. For example, when implementing recursive copying, the number of files and directories in the tree was checked, and the path length at which Eolite might fall or incorrectly perform the operation.

The third was answered by Serge, who has the nickname ion2 on Habrahabr.
NoQuestionnaire 3Serge (multimedia, video card drivers)
oneWhat are you trying to do?Now I am engaged in several projects, but all of them are somehow connected with the video player Fplay and Mesa3D.
2Why is it important?1. It is very difficult to imagine a modern desktop system without multimedia support.
2. This is a very powerful locomotive for the development of the core as a whole. The solution of such a seemingly trivial task, such as reproducing sound, led to radical changes in the core. I hope for the better.
3Why exactly are you working on this task?I have always been interested in working directly with iron. GPU in this regard, the most interesting. All experiments are very visual.
fourHow was it done before you?This question is more likely to the developer of the next file manager.
fiveWhat were the limitations of the previous approach?see answer to question 4
6What's new in your approach?see answer to question 4
7Why do you think your approach will be successful?see answer to question 4
eightWhat parts of the project can be problems?There are a lot of difficulties. If everything is fine with the driver stack for Intel (the kernel driver, the Mesa 3D driver and the video decoder for libVA are ported), then only the display driver works for AMD - changing video modes and hardware cursors. The r600 and RadeonSI 3D drivers are dependent on LLVM. This is 18+ MB of binary code. LLVM, of course, is a very interesting thing, but I don’t believe that AMD could not make a shader compiler without it. In Intel, by the way, they tried to apply LLVM, but failed. I am glad of it. I'm a little strained to use such monstrous libraries in the 3D stack. Although Intel is not all that good. The main code of the 3D driver is written in C. The shader compiler in C ++. All this is linked in one binary. C code calls C ++ code. What happens if he throws an exception? I dont know.
9How long will the project take?This is an endless process. Engineers make new hardware, programmers new code. If engineers do not have time, programmers rewrite the old one. All in the business. If you compare drivers from Linux 3.4 and 4.4, these are two very big differences. Regularly rework API. When I hear conversations "we will sit down now, we will design everything, and then we will write a wonderful code," I remember the DRM developers.

I use the source code of the official open source drivers for Linux. It is written by staff members of companies and sometimes brought in from the old guard of developers from x.org. And if you compare the source codes of the drivers from Intel and AMD, then the AMD driver is written better. Much better. This is an old school OOP with structures and function pointers and macros for better readability. The code for each generation is compiled in a separate file, the set of functions is the same, only the names differ. If you examine radeon_asic.c, it becomes clear how the architecture evolved from R100 to Kaveri. This code is much easier to port and maintain. In contrast to Intel's files, this is a real vinaigrette from code of different generations. 470 kilobytes and 16,500 lines in intel_display.c IMHO already far beyond reasonable.
tenWhat are the stages of the project?It all started in 2006. It was an assembler driver for ATI R300-R500 based on an unofficial driver from Linux. So in Kolibri appeared hardware cursors. In 2008, AMD turned its face to open source and the official radeonhd driver appeared. It was a userspace driver, but in the Hummingbird it worked in the kernel, supporting the hardware starting from the R500 +. The support of old chips in AMD was considered irrelevant. The creators of the old driver did not agree with them and, using ATOMBIOS, made support for new video cards. As a result, AMD had two open source drivers. Finally, after much debate, the Linux developers decided that the GPU is an important resource and should be managed by the kernel driver. This is how drivers / gpu / drm / radeon came about, which became the basis for the Kolibri driver atikms. In 2012, the i915 driver was ported and, after experimenting with the I915_GEM_EXBUFFER, at the end of 2013 the 3D driver for Mesa. The last support was VAAPI and x264 hardware decoding in Fplay and the output of pictures in the NV12 format. Now I am looking for memory leaks in the libva-mesa-libdrm-kernel bundle.
They are not critical, but spoil the mood. In the near future, full-screen mode and page switching, then pthreads and Mesa update. In the future - LLVM and radeonsi and r600.
elevenWhat tests do you do?Many different tests with long driver logs and libraries. Display Search Tracing
and switching video modes. Driver logs when display is hot-plug. Tracing memory managers in the driver and libdrm. Tracing create and delete textures. A lot of different tracing. Upgrading the kernel driver to the next next version requires at least ten to twenty launches on hardware. The Mesa port required about two hundred runs. + Tests on the old iron R300 R500 R700.

The fourth was Kopa, who has the nickname FForth in Habrakhabr .
NoQuestionnaire 4Kopa (Forth programming language)
oneWhat are you trying to do?If possible, advance the use of the Fort language toolkit to create software code for Colibri OS.
2Why is it important?The fort is closest to the ideas behind the design of the Hummingbird. For example, to the effective use of the assembler layer, as giving the maximum result with minimal action, while remaining simple and well-managed, and scalable tool.
3Why exactly are you working on this task?Because it is interesting to me and the developers who have created the main groundwork in this direction are not active on the forum (for example, Mikhail Maximov is currently working on his other ideas: from the well-known, creating the OS prototype with the Fort core wiki.forth.org.ru , using and the existing third-party Fort code, as ru.wikipedia.org/wiki/Open_Firmware , etc.) By the way, there was even a version of the Hummingbird OS kernel assembly with the Fort inside and a certain controversy on the forum of this variant.
fourHow was it done before you?Changing the SPF4 code in the database for KOS did not take much. Modify some points and check, for example, passing the test for ANSI compatibility.
fiveWhat were the limitations of the previous approach?They still exist in something. For example, while the Fort for Hummingbirds does not compile standalone executables, as it exists for SPF4 in Win and Linux, but this does not limit its use as a scripting language and with certain actions, you can still make standalone applications, otherwise it would not be Fort .
6What's new in your approach?About the novelty of the use of the Fort in KOS, if the issue affects this, we can say the following. The fort allows minimal means to interact with the API KOS, creating a useful code. You can compare it in general terms with the language of the "calculator" type, which absorbs simplicity, flexibility and extensibility. In addition, it may be useful when creating tools for working with the KOS assembly code base. (some means of monitoring and control of the KOS code base) and microcontroller programming tool environments. I believe that the assembler code is unique to the processor being used, but there is also a “above assembler” understanding of the general aspects of the portability of assembler solutions between different computational architectures.
7Why do you think your approach will be successful?Since the invention of the Fort, it has never been aloof from industrial use, and has repeatedly proved the viability of the ideas underlying it, and even spawning a large family of concatenated languages. Perhaps the most famous of which can be considered PostScript - a tireless laborer of the "printing front" and his "scion" PDF. From developing modern languages, Factor and 8th can be cited. In a number of industrial equipment, you can somehow meet the Fort. For example, there is already a ForthLogik PLC (programmable logic controller) with the Forth language, Strobotics robots are programmed in the Forth in a similar language, a large number of Nasa devices are programmed in the Forth and use hardware Fort processors RTX2000. On “all” existing computing architectures (processors, controllers), there are already implemented FVM (Fort computers) or the ability, using third-party language tools (assembler, C), to port one of the FVM variants and further, using, for example, a symbiosis with the base of the existing C code to create effective hybrid solutions.
Hummingbird while acting as an effective means of full-featured use of fort capabilities.
eightWhat parts of the project can be problems?A common problem is to create a FrameWork-level tool for lowering the Fort assimilation toolkit threshold and popularizing it for use even by children (something like Scratch or run such a project at KOS at github.com/phreda4/reda4 ) and develop a methodological basis. As part of, for example, Windows, Linux, there are certain Fort IDEs and their approach can be adapted (transferred) within KOS.
9How long will the project take?Planning deadlines for the implementation of conceived ideas is always a thankless task, but personal experience suggests that meaningful results usually appear from 1 year on a systematic work on a project, since it is necessary to “interconnect” many different solutions.
tenWhat are the stages of the project?There are no such stages of the project, since, besides this interest, there are other, possibly overlapping with this project. For example, some time ago I tried one of the options for generating the minimum size of an executable file for a KOS with a Fort of a similar ForthEC language (the basis is implemented in Euphoria).
elevenWhat tests do you do?The main tests are to check the performance and stability of the generated code.

Fifth replied Siemargl .
NoQuestionnaire 5Siemargl (Integrated Development Environment for HLL)
oneWhat are you trying to do?I want to create a C-programming environment inside Hummingbird, and possibly for other high-level languages ​​(HLM) that have ported translators (AFAIK, this is Pascal, Oberon, C--, Basic). Not a full-fledged IDE, but at first, at least integrate the editor with the compiler.
2Why is it important?Because the base of ready-made code and writing in C is much broader than in other languages. This will simplify the simple execution of simple tasks and popularize the OS. I also consider its use for educational purposes.
3Why exactly are you working on this task?I like the compact undefused programs (and OS). Therefore, I joined the Hummingbird project, and chose, in my opinion, a relevant and interesting task.
fourHow was it done before you?From the TinyPad editor, you can call FASM, and TextEdit can highlight the syntax for different languages.
fiveWhat were the limitations of the previous approach?There is no integration with the C compiler, and, in general, by today's standards of convenience, they are not enough as editors for programmers.
6What's new in your approach?IDE for hummingbirds yet.
7Why do you think your approach will be successful?Neither see the problem-stoppers.
eightWhat parts of the project can be problems?A rather heavy bootstrap - you need to do a lot of things yourself. See stages
9How long will the project take?Six months or a year, if employment permits.
tenWhat are the stages of the project?In short, it looks like this below.
1. Technical details of the system and C-interfaces. Modal windows, interprocess exchange, work with the console. ~ 80% is fulfilled, the rest requires completion of the project on writing C-wrappers for working with system libraries, which punk_joker is engaged in within the framework of GSoC.
2. Code Editor
You need to choose a solution - either to add an existing editor, or to port it ready, or to write another one (which I don’t really like), but a base is required - C-library of widgets.
At the moment I am helping to write examples and test the libGUI library with an ideology resembling WindowsAPI. Most likely I will add some management widgets that are missing in the system and system library. There are also thoughts to translate into C interesting work already done by the guys for C--.

3. Integration with HLL
3.1 KTCC. TinyC compiler version for Hummingbirds has been updated to the current 0.26. Added / corrected / tested standard library. There are some roughness, but overall readiness is 90%. Upon completion, it will be necessary to correct libGUI for compatibility and to make the transfer of the compilation result to the editor.
3.2 Integration with C--. Recently, GerdtR made a compiler port and there are a lot of developments in this system in the system.
3.3 Integration with Oberon. This port recently made akron1 and project live.
3.4 View the current status of other HLM in Kolibri, it is possible to integrate them.
3.5 Make a library of primitives for learning, while at first glance something similar existed in MSX
elevenWhat tests do you do?Everything that is written passes functional testing ...

The sixth replied ashmew2 from faraway India.
NoQuestionnaire 6ashmew2 (browser port Netsurf )
oneWhat are you trying to do?I am trying to create an efficient and optimized browser for KolibriOS, which uses all the previously created libraries that we have, so that we can use the small size libraries on the x86 assembler, such as libimg and boxlib, in order not to rely on libraries ported from other OS . We also do not use libcurl because of its large size for the KolibriOS distribution. Therefore, the network subsystem (browser) that worked with libcurl must be written so that it uses the http library from hidnplayr . The C browser code uses newlib instead of menuetlibc and is compiled into Netsurf’s own build system with make TARGET = kolibri.
2Why is it important?It will be a full-fledged small browser for KolibriOS, because the OS needs a fast and advanced browser, because Internet connections now work well even on small devices ...
3Why exactly are you working on this task?I am involved in the project because I firmly believe that it is worth the effort. It will be a small browser written in C, but working hand-in-hand with Kolibri assembly parts. I hope that someone else can help with the project, so that some tasks from the TODO list can be solved or started. The network fetcher needs to be optimized.
fourHow was it done before you?It was a functional browser, but in a state in which it could not be integrated (merged) into the official Netsurf trunk (git). The network fetcher used the old downloader library and supported several functions. The build system was simply a collection of .o object files that were supposed to be put together and compiled using a hack. This made support painful and spent a lot of time searching backwards for characters, etc. The Netsurf file fetcher was used as a network fetcher, which did not allow serving all use cases. Netsurf developers would not integrate it into their main system (release builds) and distribute it in this state.
fiveWhat were the limitations of the previous approach?Lack of assembly system
Old library downloader
POST / HTTPS implementation
Spaghetti Code / Difficult to maintain
There was no way to keep track of the latest Netsurf updates.
6What's new in your approach?Network fetcher to replace curl, build system, better written code, menuetlibc replaced with newlib. Image support has been integrated using C libraries, but they can be replaced with our libimg library.
7Why do you think your approach will be successful?KolibriOS needs a full-fledged browser that is small in size. From the moment it is added to the KolibriOS image, it can be easily used by users, and bugs, etc., can be fixed by the developers. Since other browsers do not have many features, there is a good chance that Netsurf will be implemented when I finish a project.
eightWhat parts of the project can be problems?The build system, especially the layout of libraries in KolibriOS with C code in Netsurf, is a problem, for example, graphical user interface libraries (GUI) and network libraries.
It is difficult to debug the browser code as a whole. Also, trying to fix random drops takes time, because launching the browser takes time and exploring the cause of the problem takes time.
9How long will the project take?It should be ready in 2016 (hopefully) for mass consumption.
tenWhat are the stages of the project?. . . , Javascript ().
eleven?. (URL), . , . , , , . , , , , MTDBG.


The article may show the results of a survey of another 1 developer who lives in foreign countries ...

Source: https://habr.com/ru/post/308050/


All Articles