* [PATCH 1/1] Documentation: devel: add new project ideas section
2022-02-17 8:27 [PATCH 0/1] Applying barebox for Google Summer of Code 2022 Ahmad Fatoum
@ 2022-02-17 8:27 ` Ahmad Fatoum
2022-02-18 21:25 ` Antony Pavlov
2022-02-21 13:52 ` [PATCH 0/1] Applying barebox for Google Summer of Code 2022 Ahmad Fatoum
1 sibling, 1 reply; 6+ messages in thread
From: Ahmad Fatoum @ 2022-02-17 8:27 UTC (permalink / raw)
To: barebox; +Cc: Ahmad Fatoum
This section will collect ideas to improve barebox and should serve as a
pool of ideas for people who want to enter the field of firmware development
but need some guidance what to work on.
These tasks can be adopted as part of programs like Google Summer of Code
or by motivated individuals outside such programs.
It's structured after coreboot's
https://doc.coreboot.org/contributing/project_ideas.html
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
Documentation/devel/devel.rst | 1 +
Documentation/devel/project-ideas.rst | 174 ++++++++++++++++++++++++++
Documentation/user/introduction.rst | 2 +
3 files changed, 177 insertions(+)
create mode 100644 Documentation/devel/project-ideas.rst
diff --git a/Documentation/devel/devel.rst b/Documentation/devel/devel.rst
index f703c3bf2767..39070074ca1b 100644
--- a/Documentation/devel/devel.rst
+++ b/Documentation/devel/devel.rst
@@ -10,6 +10,7 @@ Contents:
porting
background-execution
+ project-ideas
* :ref:`search`
* :ref:`genindex`
diff --git a/Documentation/devel/project-ideas.rst b/Documentation/devel/project-ideas.rst
new file mode 100644
index 000000000000..f27e4d5406fc
--- /dev/null
+++ b/Documentation/devel/project-ideas.rst
@@ -0,0 +1,174 @@
+#####################
+barebox Project Ideas
+#####################
+
+This section collects ideas to improve barebox and should serve as a pool
+of ideas for people who want to enter the field of firmware development
+but need some guidance what to work on.
+
+These tasks can be adopted as part of programs like Google Summer of Code
+or by motivated individuals outside such programs.
+
+If you find a project interesting and would like to work on it, reach out
+to the :ref:`mailing list <feedback>` and we can together
+try to figure out whether you are a good match for the project.
+
+This list can be edited and extended by sending patches to the mailing list.
+Other interesting ideas: Support for new file systems (EROFS, extfat, btrfs).
+Switch device framework (currently scripts write into a ``/dev/switch`` file
+to configure passthrough), Improvements for barebox-efi (e.g. as a coreboot
+payload), ... etc.
+
+Address static analyzer feedback for barebox
+============================================
+
+Skills: C
+
+barebox is automatically tested using Synopsys' free "Coverity Scan" service.
+The static analyzer has so far identified 191 possible defects at
+https://scan.coverity.com/projects/barebox
+
+There is a number of false positives there, but it already helped us
+find actual regressions, e.g. 610720857348 ("fs: ext4: fix bogus behavior
+on failure to read ext4 block").
+
+To make this service more useful, the project would involve categorizing
+reported issues and handling them as appropriate: Mark them as not applicable
+if false positive or provide patches to fix real issues.
+
+This project does not require dedicated hardware. QEMU or barebox built
+to run under Linux (sandbox) may be used.
+
+Update barebox networking stack for IPv6 support
+================================================
+
+Skills: C, Networking
+
+The barebox network stack is mainly used for TFTP and NFSv3 (over UDP) boot.
+Most embedded systems barebox runs on aren't deployed to IPv6 networks yet,
+so it's the right time now to future-proof and learn more about networking
+internals. One major complication with IPv6 support is neighbor discovery
+protocols that require networking to be possible "in the background".
+barebox' recent improvements of resource sharing and cooperative scheduling
+makes it possible to integrate an IPv6 stack, e.g. lwIP.
+
+There are also community patches to integrate a TCP stack into barebox.
+These can be evaluated as time allows.
+
+This project does not require dedicated hardware. QEMU or barebox built
+to run under Linux (sandbox) may be used.
+
+Improving barebox test coverage
+===============================
+
+Skills: C
+
+barebox is normally tested end-to-end as part of a deployed system.
+More selftests/emulated tests would reduce the round trip time for testing
+and thus enable more widely tested patches. A framework has been recently
+merged to enable this:
+
+ * Selftest similar to the kernel can be registered and run. These
+ directly interface with C-Code.
+ * Labgrid tests: These boot barebox in a virtual machine or on real
+ hardware and use the shell to test barebox behaviors.
+
+This project will focus on improving the testing coverage by writing more
+tests for barebox functionality and by fuzzing the parsers available in
+barebox, with special consideration to the FIT parser, which is used in
+secure booting setups.
+
+This project does not require dedicated hardware. QEMU or barebox built
+to run under Linux (sandbox) may be used.
+
+Porting barebox to new hardware
+===============================
+
+Skills: C, low-level affinity
+
+While Linux and Linux userspace can be quite generic with respect to the
+hardware it runs on, the bucket needs to stop somewhere: barebox needs
+detailed knowledge of the hardware to initialize it and to pass this
+along information to Linux. In this project, familiarity with barebox
+and a new unsupported SoC will be established with the goal of porting
+barebox to run on it. Prospective developers can suggest suitable
+hardware (boards/SoCs) they are interested in. Preference is for
+hardware, which is generally available and has more open documentation.
+
+The goal is to have enough support to run barebox on the board, set up
+RAM and load a kernel from non-volatile storage and boot it.
+
+If time allows (because most drivers are already available in barebox),
+new drivers can be ported to enable not only running Linux on the board,
+but bareDOOM as well.
+
+This project requires embedded hardware with preferably an ARM SoC, as
+these have the widest barebox support, but other architectures are ok
+as well.
+
+Improve barebox RISC-V support
+==============================
+
+Skills: C, RISC-V interest, low-level affinity
+
+barebox supports a number of both soft and hardRISC-V targets,
+e.g.: BeagleV, HiFive, LiteX and the QEMU/TinyEMU Virt machine.
+
+Unlike e.g. ARM and MIPS, RISC-V support is still in its formative
+stage, so much opportunity in implementing the gritty details:
+
+ - Physical memory protection in M-Mode to trap access violations
+ - MMU support in S-Mode to trap access violations
+ - Improve barebox support for multiple harts (hardware threads)
+
+This project does not require dedicated hardware. QEMU can be used.
+
+Improve barebox I/O performance
+===============================
+
+Skills: C, low-level affinity
+
+On a normal modern system, booting may involve mounting and traversing
+a file system, which employs caching for directory entries and sits
+on top of a block device which caches blocks previously read from the
+hardware driver, often by means of DMA. There are a number of improvements
+possible to increase throughput of barebox I/O:
+
+ - Support for higher MMC speed modes: The maximum currently supported
+ is 50/52 MHz and no DDR.
+ - More efficient erase: Communication protocols like Android Fastboot
+ encode large blocks of zeros specially. MMCs with erase-to-zero
+ capability could perform such erases in the background instead
+ of having to write big chunks of zeros.
+ - Block layer block sizes: There is a fixed block size used for
+ caching, which is meant to be a good compromise for read
+ and write performance. This may not be optimal for all devices
+ and can be revisited.
+
+This project requires embedded hardware with SD/eMMC that is supported
+by a barebox media card interface (MCI) driver.
+
+Improve JSBarebox, the barebox web demo
+=======================================
+
+Skills: C (Basics), Javascript/Web-assembly, Browser-Profiling
+
+While Linux and Linux userspace can be quite generic with respect to the
+hardware it runs on, the bucket needs to stop somewhere: barebox needs
+detailed knowledge of the hardware to initialize it and to pass this
+along information to Linux. JSBarebox removes the hurdle of porting
+barebox to a new board, for new users who are only interested in
+trying it out: The browser runs Tinyemu, a virtual machine in which
+barebox executes as if on real hardware and the user can manipulate the
+(virtual) hardware from the barebox shell and learn about barebox
+conveniences: barebox.org/jsbarebox/
+
+The project is about streamlining this demo: CPU usage currently is
+quite high and teaching barebox to idle the CPU (as we do on sandbox)
+didn't help. This needs to be analyzed with the profiling tools
+provided with modern browsers. The remainder of the project can then
+focus on improving the jsbarebox tutorial. e.g. by adding new
+peripherals to the virtual machine.
+
+This project does not require dedicated hardware. The development
+machine need only support a recent browser.
diff --git a/Documentation/user/introduction.rst b/Documentation/user/introduction.rst
index 523fe288f9fe..e7388b8bc95e 100644
--- a/Documentation/user/introduction.rst
+++ b/Documentation/user/introduction.rst
@@ -15,6 +15,8 @@ development binary as well as for lean production systems.
Just like busybox is the Swiss Army Knife for embedded Linux,
barebox is the Swiss Army Knife for bare metal, hence the name.
+.. _feedback:
+
Feedback
--------
--
2.30.2
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 0/1] Applying barebox for Google Summer of Code 2022
2022-02-17 8:27 [PATCH 0/1] Applying barebox for Google Summer of Code 2022 Ahmad Fatoum
2022-02-17 8:27 ` [PATCH 1/1] Documentation: devel: add new project ideas section Ahmad Fatoum
@ 2022-02-21 13:52 ` Ahmad Fatoum
2022-03-06 19:19 ` Ahmad Fatoum
1 sibling, 1 reply; 6+ messages in thread
From: Ahmad Fatoum @ 2022-02-21 13:52 UTC (permalink / raw)
To: barebox
On 17.02.22 09:27, Ahmad Fatoum wrote:
> I'll submit the GSoC proposal over the weekend. Sorry for the short
> notice, but patches to the project ideas can still follow afterwards.
Just submitted the proposal:
> Why does your organization want to participate in Google Summer of Code?
Firmware development is on the lesser accessible end of software projects: It often requires
special hardware, resources are not very beginner-friendly and while there are established
open source projects, the majority of contributions is company-sponsored, making it
harder for interested individuals to get started on their own.
Since 2009, the barebox project has been working to lessen this gap: By aligning itself with
Linux code and convention, it provides a more familiar UNIX-like interface to the low-level
details, which many users are already acquainted with.
Besides improving its documentation, in recent years, barebox has also considerably improved
its support for virtualized platforms, so development can happen in user-mode without dedicated
hardware, for example the web demo at https://barebox.org/jsbarebox
We are confident that this will make on-boarding process easier. It will teach contributors the ropes of
low level programming and empower them to dive deeper, both inside barebox and outside
in other low-level projects, like the Linux kernel, which barebox shares a lot of code with.
We hope to not only benefit from the code produced, but to involve motivated individuals with
(a newly-found?) low-level affinity, who may continue to use and improve barebox while
exploring more of the world; be it kernel, runtime firmware or system software.
> What would your organization consider to be a successful GSoC program?
The program results should be upstreamed into barebox and it should be reusable
for further work, e.g. a GSoC contributor adding support for their WLAN router not only
serves their immediate use case, but also makes future ports of similar hardware easier.
There are a number of project ideas collected here:
https://barebox.org/doc/latest/devel/project-ideas.html
which contributors can base their proposals on.
> How will you keep mentors engaged with their GSoC contributors?
Mentors and contributors will agree on pre-scheduled meetings to synchronize.
We expect mentors to give advance notice if the schedule can't be observed.
There will be a fallback mentor for each program should a mentor not have the time
to continue.
We will encourage students to use the existing communication channels to get
feedback from the community at large and to get involved in it.
If GSoC is approved for more than one applicant, mentors and contributors can
organize discussions in a group setting, where common problems are discussed
and approached for solving them and to see how to tackle them at
an organizational level if applicable.
> How will you keep GSoC contributors on schedule to complete their projects?
In the beginning, individual goals and milestones will be set according to the contributors
experience and to their project.
Weekly/Bi-Weekly meeting will be held to discuss progress. Contributors are expected to
publicly publish code, even prior to upstreaming. Contributors should maintain a blog
to document their journey. In case unexpected problems arise, mentors will try to steer projects
to make the most out of contributor time.
> How will you get your GSoC contributors involved in your community during GSoC?
Collaboration currently happens via the mailing list and the IRC/Matrix channel. Mentors
will guide contributors on how to get a working setup for mailing list collaboration. Contributors
will be encouraged to discuss their questions in the real-time chat.
Let's see if it works out. :-)
Cheers,
Ahmad
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 6+ messages in thread