{% if item_type == "hw" %}
Hardware Solution
{% elif item_type == "os" %}
Firewall Operating System
{% elif item_type == "special" %}
DIFM Solution
{% endif %}

{{ item.name }}

{% if item.tagline %}

{{ item.tagline }}

{% endif %}
{% if item.type %}{{ item.type }}{% endif %} {% if item.cpu %}{{ item.cpu }}{% endif %} {% if item.subsystem %}{{ item.subsystem }}{% endif %} {% if item.bios %}{{ item.bios }}{% endif %} {% if item.cost %}{{ item.cost }}{% endif %} {% if item.base %}{{ item.base }}{% endif %} {% if item.is_os %} {% if item.open %}100% Open Source{% else %}Not 100% Open Source{% endif %} {% endif %}
{% if item.vendor_url %} Vendor Site → {% endif %}
{% if item_type == "special" %}

Derived Ratings

{{ item.name }} is built on {{ item.derived_from_hw }} hardware running {{ item.derived_from_os }}. Its ratings are derived from the consensus scores of those underlying components.

Hardware Ratings (from {{ item.derived_from_hw }})
10 categories
{% if hw_total_votes > 0 %}
{{ hw_total_votes }} co-author{% if hw_total_votes != 1 %}s{% endif %} voted
{% endif %}
{% if hw_overall is not none %}
{{ "%.1f"|format(hw_overall) }}
{% else %}
{% endif %}
Consensus
{% if hw_overall is not none %}
{% for row in hw_breakdown %}
{{ row.label }}
{% if row.avg is not none %} {% set rounded = (row.avg * 2) | round | int %} {% for i in range(1, 6) %} {% if rounded >= i * 2 %}{% elif rounded == i * 2 - 1 %}{% else %}{% endif %} {% endfor %} {% else %} {% for i in range(1, 6) %}{% endfor %} {% endif %}
{% if row.avg is not none %} {{ "%.1f"|format(row.avg) }} {% else %} {% endif %}
{% endfor %}
{% else %}
Consensus pending. Ratings will populate as co-authors finalize their votes.
{% endif %}
OS Ratings (from {{ item.derived_from_os }})
10 categories
{% if os_total_votes > 0 %}
{{ os_total_votes }} co-author{% if os_total_votes != 1 %}s{% endif %} voted
{% endif %}
{% if os_overall is not none %}
{{ "%.1f"|format(os_overall) }}
{% else %}
{% endif %}
Consensus
{% if os_overall is not none %}
{% for row in os_breakdown %}
{{ row.label }}
{% if row.avg is not none %} {% set rounded = (row.avg * 2) | round | int %} {% for i in range(1, 6) %} {% if rounded >= i * 2 %}{% elif rounded == i * 2 - 1 %}{% else %}{% endif %} {% endfor %} {% else %} {% for i in range(1, 6) %}{% endfor %} {% endif %}
{% if row.avg is not none %} {{ "%.1f"|format(row.avg) }} {% else %} {% endif %}
{% endfor %}
{% else %}
Consensus pending. Ratings will populate as co-authors finalize their votes.
{% endif %}
{% else %}

{{ categories_label }}

10 categories rated by independent co-authors. Each rating is the average of all finalized votes from co-authors who personally tested {{ item.name }}.

Consensus Score
{{ item.name }}
{% if total_votes > 0 %}
{{ total_votes }} co-author{% if total_votes != 1 %}s{% endif %} voted
{% endif %}
{% if overall is not none %}
{{ "%.1f"|format(overall) }}
{% else %}
{% endif %}
Out of 5.0
{% if overall is not none %}
{% for row in breakdown %}
{{ row.label }}
{% if row.avg is not none %} {% set rounded = (row.avg * 2) | round | int %} {% for i in range(1, 6) %} {% if rounded >= i * 2 %}{% elif rounded == i * 2 - 1 %}{% else %}{% endif %} {% endfor %} {% else %} {% for i in range(1, 6) %}{% endfor %} {% endif %}
{% if row.avg is not none %} {{ "%.1f"|format(row.avg) }} {% else %} {% endif %}
{% endfor %}
{% else %}
Consensus pending. Ratings will populate as co-authors finalize their votes for the 2026 Q1 edition.
{% endif %}
{% endif %}

Videos & Reviews

Independent content creators who have covered {{ item.name }} on YouTube. Click any creator to see their full profile and watch their videos.

{% if creators %}
{% for c in creators %}
{{ c.display_name }}
{% if c.subscriber_count %}
{{ c.subscriber_count }} subscribers
{% endif %}
{{ c.total_videos }} video{% if c.total_videos != 1 %}s{% endif %}
{% endfor %}
{% else %}
🎥

No creator coverage yet for this solution. As co-authors set up their creator hubs and add videos, they will appear here.

{% endif %}