Convert Figma logo to code with AI

openboard-team logoopenboard

No description available

2,652
270
2,652
428

Top Related Projects

24,230

Desktop/Android/HTML5/iOS Java game development framework

27,462

A simple and easy-to-use library to enjoy videogames programming

HarfBuzz text shaping engine

The DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing DirectX 11.x code in C++

Quick Overview

OpenBoard is an open-source, cross-platform interactive whiteboard software designed for schools and universities. It provides a user-friendly interface for creating and presenting interactive lessons, supporting various multimedia elements and tools for effective teaching and learning experiences.

Pros

  • Cross-platform compatibility (Windows, macOS, Linux)
  • Rich set of tools for interactive teaching and presentations
  • Support for various multimedia elements (images, videos, web content)
  • Active community and regular updates

Cons

  • Learning curve for new users to fully utilize all features
  • Limited integration with third-party educational platforms
  • Some users report occasional stability issues on certain systems
  • Resource-intensive for older hardware

Getting Started

To get started with OpenBoard:

  1. Visit the official website: https://openboard.ch/
  2. Download the appropriate version for your operating system
  3. Install the software following the provided instructions
  4. Launch OpenBoard and explore the interface
  5. Create a new document or open an existing one to start using the interactive whiteboard features

For detailed instructions and tutorials, refer to the official documentation available on the OpenBoard website.

Competitor Comparisons

24,230

Desktop/Android/HTML5/iOS Java game development framework

Pros of libGDX

  • Cross-platform game development framework supporting desktop, mobile, and web
  • Extensive documentation and large community support
  • Rich set of tools and libraries for game development

Cons of libGDX

  • Steeper learning curve for beginners
  • Primarily focused on game development, less suitable for general-purpose applications

Code Comparison

OpenBoard (Java):

public class OpenBoard extends Application {
    @Override
    public void start(Stage primaryStage) {
        // OpenBoard-specific initialization
    }
}

libGDX (Java):

public class MyGame extends ApplicationAdapter {
    @Override
    public void create() {
        // libGDX game initialization
    }
}

Key Differences

  • OpenBoard is an open-source keyboard app, while libGDX is a game development framework
  • OpenBoard focuses on Android, whereas libGDX supports multiple platforms
  • libGDX has a more extensive feature set for graphics and game-related functionality
  • OpenBoard's codebase is smaller and more focused on input methods

Use Cases

  • Choose OpenBoard for developing custom Android keyboards
  • Opt for libGDX when creating cross-platform games or graphically intensive applications

Community and Support

  • libGDX has a larger community and more third-party resources
  • OpenBoard has a smaller but dedicated community focused on keyboard development
27,462

A simple and easy-to-use library to enjoy videogames programming

Pros of raylib

  • More comprehensive and feature-rich library for game development and multimedia applications
  • Extensive documentation and examples, making it easier for beginners to get started
  • Active community and regular updates, ensuring ongoing support and improvements

Cons of raylib

  • Larger codebase and potentially steeper learning curve for simple projects
  • May include unnecessary features for basic interactive whiteboard applications
  • Focused on game development, which might not align with educational software needs

Code Comparison

OpenBoard (JavaScript):

function drawLine(x1, y1, x2, y2) {
    ctx.beginPath();
    ctx.moveTo(x1, y1);
    ctx.lineTo(x2, y2);
    ctx.stroke();
}

raylib (C):

void DrawLine(int startPosX, int startPosY, int endPosX, int endPosY, Color color)
{
    rlBegin(RL_LINES);
        rlColor4ub(color.r, color.g, color.b, color.a);
        rlVertex2i(startPosX, startPosY);
        rlVertex2i(endPosX, endPosY);
    rlEnd();
}

While both libraries provide drawing functionality, raylib offers a more low-level approach with additional features like color management, whereas OpenBoard focuses on simplicity for web-based interactive whiteboards.

HarfBuzz text shaping engine

Pros of HarfBuzz

  • Extensive language support for complex text shaping
  • Well-established project with a large community and regular updates
  • Comprehensive documentation and examples

Cons of HarfBuzz

  • Steeper learning curve due to its complexity
  • Larger codebase, which may impact integration in smaller projects
  • Primarily focused on text shaping, less suitable for general UI development

Code Comparison

HarfBuzz (text shaping example):

hb_buffer_t *buf = hb_buffer_create();
hb_buffer_add_utf8(buf, text, -1, 0, -1);
hb_buffer_guess_segment_properties(buf);
hb_shape(font, buf, NULL, 0);

OpenBoard (UI component example):

UBGraphicsWidgetItem* widget = new UBGraphicsWidgetItem(QUrl::fromLocalFile(widgetPath));
scene()->addItem(widget);
widget->setPos(pPos);
widget->show();

Summary

HarfBuzz is a specialized text shaping engine with extensive language support, while OpenBoard is an interactive whiteboard application. HarfBuzz excels in complex text rendering but has a steeper learning curve. OpenBoard focuses on educational tools and UI components, making it more suitable for interactive applications. The code examples highlight their different purposes: HarfBuzz for text shaping and OpenBoard for UI manipulation.

The DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing DirectX 11.x code in C++

Pros of DirectXTK

  • Extensive documentation and examples for DirectX development
  • Robust set of utilities and helpers for common DirectX tasks
  • Active maintenance and regular updates from Microsoft

Cons of DirectXTK

  • Focused solely on DirectX, limiting cross-platform development
  • Steeper learning curve for developers new to DirectX
  • Larger codebase and dependencies compared to OpenBoard

Code Comparison

OpenBoard (JavaScript):

const board = new Board();
board.addShape(new Rectangle(10, 10, 100, 50));
board.render();

DirectXTK (C++):

auto device = GetD3DDevice();
CommonStates states(device);
SpriteBatch spriteBatch(device);
spriteBatch.Begin();
spriteBatch.Draw(texture, position, nullptr, Colors::White);
spriteBatch.End();

OpenBoard is a JavaScript-based interactive whiteboard application, while DirectXTK is a C++ toolkit for DirectX development. OpenBoard focuses on creating a collaborative drawing environment, whereas DirectXTK provides low-level graphics programming utilities. The code snippets demonstrate the difference in complexity and abstraction level between the two projects, with OpenBoard offering a higher-level API for drawing shapes and DirectXTK providing more granular control over rendering.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

OpenBoard

100% FOSS keyboard, based on AOSP.

GitHub Workflow Status Translation status Matrix

GitHub release (latest by date) F-Droid Version Google Play Version GitHub Release Date GitHub commits since latest release (by date)

Get it on F-Droid Get it on Google Play

Table of content

Community

Join our [matrix] channel here.

Matrix QR Code

Contribution ❤

Issue reporting

Whether you encountered a bug, or want to see a new feature in OpenBoard, you can contribute to the project by opening a new issue here. Your help is always welcomed !

Before opening a new issue, be sure to check the following :

  • Does the issue already exist ? Make sure a similar issue has not been reported by browsing existing issues.
  • Is the issue still relevant ? Make sure your issue is not already fixed in the latest version of OpenBoard.
  • Did you use the issue template ? It is important to make life of our kind contributors easier by avoiding issues that miss key informations to their resolution.

Please avoid opening issues to ask for a release date, for PR reviews/merges, for more activity on the project, or worth for more contributors. If you have any interrogations on these topics, read this comment from issue #619.

Translation

You can help in translating OpenBoard in your language through our Weblate project.

Translation status

Dictionary creation

To create or update a dictionary for your language, you can use this tool. You will need a wordlist, as described here. The output .dict file must be put in res/raw, and its wordlist in dictionaries.

For your dictionary to be merged into OpenBoard, you must provide the wordlist you used, as well as its license if any.

Code contribution

Getting started

OpenBoard project is based on Gradle and Android Gradle Plugin. To get started, you'll just need to install Android Studio, and import project 'from Version Control / Git / Github' by providing this git repository URL (or git SSH URL).

Once everything got setted up correctly, you're ready to go !

Guidelines

OpenBoard is a complex application, when contributing, you must take a step back and make sure your contribution :

  • Uses already in-place mechanism and take advantage of them. In other terms, does not reinvent the wheel or uses shortcuts that could alter the consistency of the existing code.
  • Has the lowest footprint possible. OpenBoard code has been written by android experts (AOSP/Google engineers). It has been tested and runned on millions of devices. Thus, existing code will always be safer than new code. The less we alter existing code, the more OpenBoard will stay stable. Especially in the input logic scope.
  • Does not bring any non-free code or proprietary binary blobs. This also applies to code/binaries with unknown licenses. Make sure you do not introduce any closed-source library from Google.
  • Complies with the user privacy principle OpenBoard follows.

In addition to previous elements, OpenBoard must stick to F-Droid inclusion guidelines.

Current TODO list

In no particular order, here is the non-exhaustive list of known wanted features :

  • Updated emoji support
  • MaterialYou (M3) support
  • One-handed mode feature
  • Android autofill support
  • Clipboard history feature
  • Text navigation/selection panel
  • Multi-locale typing
  • Emoji search
  • Emoji variant saving
  • Glide typing

Tooling

Edit keyboards content

Keyboards content is often a complex concatenation of data from global to specific locales. For example, additional keys of a given key, also known as 'more keys' in code, are determined by concatenating infos from : common additional keys for a layout (eg. numbers), global locale (eg. common symbols) and specific locale (eg. accents or specific letters).

To edit these infos, you'll need to generate the KeyboardTextsTable.java file. To do so :

  1. Make your modifications in tools/make-keyboard-text/src/main/resources/values-YOUR LOCALE.
  2. Generate the new version of KeyboardTextsTable.java by running Gradle task 'makeText' :
    ./gradlew tools:make-keyboard-text:makeText
    

Update emojis

See make-emoji-keys tool README.

License

OpenBoard project is licensed under GNU General Public License v3.0.

Permissions of this strong copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights.

See repo's LICENSE file.

Credits