6

If I visit https://android.stackexchange.com/a/205140/311449, the lists are how I expect them to be - correctly indented:

normal

However, that same source code's rendering shall break, should I:

  1. Encapsulate it in <blockQuote>s:

    Boot process of Android devices up to kernel stage is very vendor specific, device specific and contains mostly closed source code. You may see clear deviations of terminologies used and differences in their implementations. Here I'm giving a simple understanding.

    1. When charger is inserted, device boots very similar to when power button is pressed except that a very limited OS is loaded.

      Device boots normally up to init stage (given at point 4). init, instead of starting services from /system and /vendor partitions, starts a process: /sbin/charger* which is not a part of AOSP. Charger binary is usually closed source and varies for different devices. It may load some pictures / animations stored on some partitions specific for this purpose.

    Also some OEMs allow enabling / disabling off-mode-charge through fastboot to control the behavior i.e. whether the device should be switched on when power is plugged in or not. But it's also not a standard feature and varies for devices. 2. Bootloaders (SBL / ABOOT or equivalents) handle Power and Volume buttons pressed to start (Emergency) Download mode, SPL mode, fastboot mode etc. and recovery or normal kernel. 3. Preloader is a bootloader stage (SBL / SPL) before final bootloader (UBOOT / LK / ABOOT) 4. Here is the boot chain:

    • BootROM
    • Primary / Secondary BooLoader or PreLoader
    • Final bootloader (which provides odin / fastboot)
    • Kernel / Recovery (TWRP)
    • Init (first userspace process and in-charge of all other processes, also mounts filesystems)
    • Services or processes are started from /system and /vendor partitions by init (Zygote / Dalvik is one of those).

    So odin (specific to Samsung) and fastboot are two independent protocols for communication with device through USB to format partitions, flash factory firmware, (un)lock bootloader etc. While TWRP is a minimal OS which is booted in place of normal boot.img (usually using same kernel) in case Android is unable to boot or needs OTA update or some modifications / maintenance.

    None of them can be related to Dalvik, they are hardware specific and run at pre-kernel or kernel stage. While zygote - a part of AOSP - is a completely userspace process which forks Dalvik Virtual Machine for every app.


    For details: Boot Process: Android vs. Linux

  2. Visit the latest revision in the revision list, where this formatting is broken

    list

    but solely breaks more when I visit the dedicated page for its latest revision, because entire sections of the answer are absent:

    dedicated

  3. Edit the answer:

    enter image description here

  4. Visit the revision by its hash:

    hash

    despite https://android.stackexchange.com/revisions/6f3fcee0-56a2-4cbb-90aa-ede4f74c86b7/view-source being correct.


Reported here due https://meta.stackexchange.com/revisions/188267/1#:~:text=just%20post%20a%20question%20tagged%20bug%20for%20bugs. I've also read the helpful guidelines at https://meta.stackexchange.com/revisions/267494/5#:~:text=Here%20are%20some,not%20be%20amiss.

2
  • Where is it broken? In the revision views, but not in the main view (that most users frequent)? (That is not to diminish it, only to understand it.) Commented May 6 at 14:22
  • @This_is_NOT_a_forum, the edit and revision views (to my knowledge, these are the sole alternative views). I've listed all that I know of. This indeed excepts the primary answer view. Commented May 6 at 21:12

1 Answer 1

9

This is . The issue is that the Markdown text renders differently in CommonMark (the new Markdown renderer) vs. how it rendered in the prior Markdown->HTML converter SE used.

The HTML for posts on question pages is rendered once at the time of the post is submitted or edited, and cached indefinitely. The HTML for the revisions page and individual revision pages is re-rendered from the Markdown using the current Markdown converter when the page is requested. Thus, any revision will be displayed using the current CommonMark Markdown converter, even if it was written for the prior Markdown converter and hasn't been updated.

The last edit of the answer you're concerned about was on 2020-01-13, which is prior to when the CommonMark renderer was adopted across the network, 2020-06-20, so was intended for the prior Markdown renderer. Specifically, in CommonMark Markdown, the paragraph and unordered list lines which are rendered differently in your screenshots don't have enough spaces at the beginning of their lines to be considered as part of their containing lists. CommonMark requires that there are enough spaces to line up the first non-space at the beginning of each line contained within the list item with the beginning of the text in the first line of the list item under which it is to be considered (exclusive of the Markdown indicating that the first line is a list item). In this case, this means that those lines each need an additional two spaces, for three spaces total to get past the "1. ", rather than the single space character they currently have. I attempted to submit an edit to the answer to correct the formatting to CommonMark, but the change is too minor to be submitted as a suggested edit.

So, this (note how the lines at issue don't vertically line up with their containing list):

Boot process of Android devices up to kernel stage is very vendor specific, device specific and contains mostly closed source code. You may see clear deviations of terminologies used and differences in their implementations. Here I'm giving a simple understanding.

1. When charger is inserted, device boots very similar to when power button is pressed except that a very limited OS is loaded.

    Device boots normally up to `init` stage (given at point 4). `init`, instead of starting services from `/system` and `/vendor` partitions, starts a process: `/sbin/charger*` which is not a part of AOSP. Charger binary is usually closed source and varies for different devices. It may load some pictures / animations stored on some partitions specific for this purpose.

 Also some OEMs allow enabling / disabling `off-mode-charge` through `fastboot` to control the behavior i.e. whether the device should be switched on when power is plugged in or not. But it's also not a standard feature and varies for devices.
2. Bootloaders (SBL / ABOOT or equivalents) handle Power and Volume buttons pressed to start (Emergency) Download mode, SPL mode, `fastboot` mode etc. and recovery or normal kernel.
3. Preloader is a bootloader stage (SBL / SPL) before final bootloader (UBOOT / LK / ABOOT)
4. Here is the boot chain:
 - BootROM
 - Primary / Secondary BooLoader or PreLoader
 - Final bootloader (which provides `odin` / `fastboot`)
 - Kernel / Recovery (TWRP)
 - Init (first userspace process and in-charge of all other processes, also mounts filesystems)
 - Services or processes are started from `/system` and `/vendor` partitions by `init` (Zygote / Dalvik is one of those).

So `odin` (specific to Samsung) and `fastboot` are two independent protocols for communication with device through USB to format partitions, flash factory firmware, (un)lock bootloader etc. While `TWRP` is a minimal OS which is booted in place of normal `boot.img` (usually using same kernel) in case Android is unable to boot or needs OTA update or some modifications / maintenance.

None of them can be related to `Dalvik`, they are hardware specific and run at pre-kernel or kernel stage. While `zygote` - a part of AOSP - is a completely userspace process which forks Dalvik Virtual Machine for every app.

---

For details: [Boot Process: Android vs. Linux][1]


  [1]: https://forum.xda-developers.com/android/general/info-boot-process-android-vs-linux-t3785254

should be changed to (note how the lines within each list item do line up with their containing list item):

Boot process of Android devices up to kernel stage is very vendor specific, device specific and contains mostly closed source code. You may see clear deviations of terminologies used and differences in their implementations. Here I'm giving a simple understanding.

1. When charger is inserted, device boots very similar to when power button is pressed except that a very limited OS is loaded.

   Device boots normally up to `init` stage (given at point 4). `init`, instead of starting services from `/system` and `/vendor` partitions, starts a process: `/sbin/charger*` which is not a part of AOSP. Charger binary is usually closed source and varies for different devices. It may load some pictures / animations stored on some partitions specific for this purpose.

   Also some OEMs allow enabling / disabling `off-mode-charge` through `fastboot` to control the behavior i.e. whether the device should be switched on when power is plugged in or not. But it's also not a standard feature and varies for devices.
2. Bootloaders (SBL / ABOOT or equivalents) handle Power and Volume buttons pressed to start (Emergency) Download mode, SPL mode, `fastboot` mode etc. and recovery or normal kernel.
3. Preloader is a bootloader stage (SBL / SPL) before final bootloader (UBOOT / LK / ABOOT)
4. Here is the boot chain:
   - BootROM
   - Primary / Secondary BooLoader or PreLoader
   - Final bootloader (which provides `odin` / `fastboot`)
   - Kernel / Recovery (TWRP)
   - Init (first userspace process and in-charge of all other processes, also mounts filesystems)
   - Services or processes are started from `/system` and `/vendor` partitions by `init` (Zygote / Dalvik is one of those).

So `odin` (specific to Samsung) and `fastboot` are two independent protocols for communication with device through USB to format partitions, flash factory firmware, (un)lock bootloader etc. While `TWRP` is a minimal OS which is booted in place of normal `boot.img` (usually using same kernel) in case Android is unable to boot or needs OTA update or some modifications / maintenance.

None of them can be related to `Dalvik`, they are hardware specific and run at pre-kernel or kernel stage. While `zygote` - a part of AOSP - is a completely userspace process which forks Dalvik Virtual Machine for every app.

---

For details: [Boot Process: Android vs. Linux][1]


  [1]: https://forum.xda-developers.com/android/general/info-boot-process-android-vs-linux-t3785254

which renders as (without the blockquote formatting):

Boot process of Android devices up to kernel stage is very vendor specific, device specific and contains mostly closed source code. You may see clear deviations of terminologies used and differences in their implementations. Here I'm giving a simple understanding.

  1. When charger is inserted, device boots very similar to when power button is pressed except that a very limited OS is loaded.

    Device boots normally up to init stage (given at point 4). init, instead of starting services from /system and /vendor partitions, starts a process: /sbin/charger* which is not a part of AOSP. Charger binary is usually closed source and varies for different devices. It may load some pictures / animations stored on some partitions specific for this purpose.

    Also some OEMs allow enabling / disabling off-mode-charge through fastboot to control the behavior i.e. whether the device should be switched on when power is plugged in or not. But it's also not a standard feature and varies for devices.

  2. Bootloaders (SBL / ABOOT or equivalents) handle Power and Volume buttons pressed to start (Emergency) Download mode, SPL mode, fastboot mode etc. and recovery or normal kernel.

  3. Preloader is a bootloader stage (SBL / SPL) before final bootloader (UBOOT / LK / ABOOT)

  4. Here is the boot chain:

    • BootROM
    • Primary / Secondary BooLoader or PreLoader
    • Final bootloader (which provides odin / fastboot)
    • Kernel / Recovery (TWRP)
    • Init (first userspace process and in-charge of all other processes, also mounts filesystems)
    • Services or processes are started from /system and /vendor partitions by init (Zygote / Dalvik is one of those).

So odin (specific to Samsung) and fastboot are two independent protocols for communication with device through USB to format partitions, flash factory firmware, (un)lock bootloader etc. While TWRP is a minimal OS which is booted in place of normal boot.img (usually using same kernel) in case Android is unable to boot or needs OTA update or some modifications / maintenance.

None of them can be related to Dalvik, they are hardware specific and run at pre-kernel or kernel stage. While zygote - a part of AOSP - is a completely userspace process which forks Dalvik Virtual Machine for every app.


For details: Boot Process: Android vs. Linux

The above quoted text, both as rendered here in a blockquote and displayed here in code format, is from answer to: "Android device load process (preparing flashing)" by Irfan Latif and is under the CC BY-SA 4.0 license.

1
  • 2
    Thanks for the explanation. That's actually a really well-designed system. I've submitted your improved version as an edit too. Commented May 5 at 21:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .