First update of phase 1

First update of phase 1

What devs did and what devs plan: phase 1 developer update

First update of phase 1

People and management

  1. We have added many contributors within the phase-1. Checkout all welcome issues here and get to know each other.
  2. Now we have an Official Discord server with separate channels for developers and users, you can chat there. Read more about how it works.
  3. Developer blog created. Here you can read project updates in digest format.
  4. backlog label added for tasks that are not a priority at the moment.

Environment

  1. Added pipeline to automate Wiki pages building #63. Please read How to edit wiki in a right way.
  2. Adding CI workflow has begun: #70. Now GitHub pipelines check that target_lo and target_f1 compile successfully.
  3. Added Rust support into Docker image: #41 + #68. Now you can build Rust code, link it with C and together, using Bindgen and Cbindgen.

Core and stuff

  1. Added target_f1, now you can build your code for F1 board.
  2. Added implementation of FURI (with many issues -- see #59)...
  3. ...and add many examples of how to use FURI, HAL and do some funny things (List of Application Examples):
  4. LED Blink
  5. Writing to UART
  6. Communication between apps

Hardware

  1. We designed and manufactured F2B0C1.1! You can see that these boards already got an SD-card slot! This will be a current Dev Kit.

What are we doing right now

  1. Making UI and display driver #98, and implementing dummy display and UI emulator #97. With this emulator everyone will be able to develop UI features without a physical Flipper!
  2. We continue to work on FURI API design and implementations #59. If you have proposals or remarks about this component, or you don't understand what we are doing — read FURI and FURI AC description, look at the examples and feel free to comment this issue or discuss it in discord.
  3. We started a big work on applications dynamic loading and linking. Flipper is different from many embedded systems because we want to run user applications, load it by USB, Bluetooth, SD-card and other ways, so we need to implement it on a small limited system without MMU. You can see progress and discuss it here #73
  4. We got an interesting proposal about Zephyr OS comment in #17 and porting it on our new WB55 board №89.
  5. Working on new Flipper's PCB design based on STM32WB55RB MCU and new PMIC (we're using AXP173).
  6. Creating a unit test environment and pipelines for CI #40. if you want to see how building and testing is working right now, check out Environment page.
  7. Very soon we will have a remote testing and debugging bench! I think it's a very funny idea! It will be useful for developers who have no real hardware and also for running CI on physical hardware: #96
  8. In the next week we will start to blow off magic smoke and breathe life in new F2B0C1.1 boards, stay tuned!

We need help

  1. Linting and control code style #12 is stuck
  2. We have a big discussion about integration with IDE. If you feel pain with our current development environment and want to use your favorite IDE, welcome to #18!
  3. Please check out and discuss the idea of attaching issues to wiki pages: #66
  4. We want to make a web interface for UI emulator (#97) and looking for people who want to design the webpage. React/TS is preferred.

Our plans

First of all, we need to completely set up our environment for building, testing and debugging code:

  1. Make UI emulator
  2. Make remote debug/test bench
  3. Test F2B0C1.1 and send it to contributors
  4. Make automatic code style checking, unit testing and overall CI.

Then, we need to make a build system (including dynamic linking specificity), toolset for loading apps on Flipper and run hardware tests, IDE integrations.

And we should concentrate on core API and architecture: improving FURI features, making examples and porting old Flipper's prototype code to check that our API is usable. Also I want to design core API so that changing HAL/OS will not very painful for app developers.

After we make UI emulator and deliver real hardware to UI developers we can start UI architecture: interface guidelines, GUI toolkit.

Also you can analyse features right now, design and propose how Flipper's user features can work. It also helps us to design core API and requirement for core, test bench and build system.