DEV Community

Cover image for Project Prism: on the road to building an open smartphone
James Livesey for LiveG Technologies

Posted on

Project Prism: on the road to building an open smartphone

That's right ⁠— we're on an ambitious plan to build an open smartphone that puts Progressive Web Apps (PWAs) at the core of our ecosystem. Check out our video for an in-depth review of our project so far:

How are you making this?

Currently, the Prism is based on the PinePhone, with a few modifications to the hardware (the back shell is one of the main customisations to the phone, allowing you to see inside), in addition to the software (using our own Linux-based mobile operating system).

We 3D-printed the back case, which admittedly took quite a few attempts; but the end result is awesome!

The main interface uses our own user environment, called gShell. It uses Adapt UI (web demo), which is the user interface design language and framework which we developed in-house over the course of a few months.

gShell itself is essentially just a really complex single-page website, all running locally inside an Electron process. This not only simplifies development and allows us to quickly prototype designs, but it also provides good support for animations and all of the polish that you'd expect on the modern smartphones of today.

I took a few photos and posted them on Twitter to show you what gShell looks like in real life:

Of course, being Electron, it is possible to run gShell in its simulator mode on a desktop. This makes prototyping iterations of gShell and its associated apps much easier, and as a result, much faster; simply because it's more convenient to launch gShell on a development machine than it is to update the actual Prism itself to perform a very short test.

A screenshot of the gShell simulator in a desktop environment

Accessibility

As with the physical world, accessibility is also extremely important in the digital world, too. Ensuring that both software and hardware is usable by everyone is a key aspect of developing successful products, and failing to do so can cause users to be excluded from being able to effectively operate your platform.

It's no wonder that we have baked accessibility support right into the Prism from the very start of our project: we've been ensuring that our product will be accessible for future assistive technologies that we will later build into gShell. However, it's not just ensuring compatibility that's important: we've also added some accessibility features into the phone from early on in order to ensure that the whole user interface is usable in its current state.

We've built in an often-overlooked assistive technology that often gets neglected in upcoming operating systems: Switch Navigation. It essentially allows the user to control their whole device using just at least one button, known as a switch. A demonstration of it is available at 15:09 in our video.

Here's a photo of what one of the features of Switch Navigation looks like:

Switch Navigation in use on the Prism

The implementation of Switch Navigation in gShell has been inspired by quadriplegic YouTuber Christopher Hills, who makes extensive use of iOS's Switch Control feature daily. Switch Control in iOS provides very similar functionality to our Switch Navigation. Christopher's videos have been monumental at raising awareness of this versatile assistive technology, which has enabled him to pilot drones, edit and produce production-quality videos, and more. His videos have given us a great insight into the daily uses of Switch Control, which we hope to integrate into Switch Navigation.

Localisation

Localisation is also an important part of platform development, since it allows users who speak languages other than English to use our products, and truly make our products globally usable. Our main methods of localisation are through the Adapt UI framework, which provides the localisation infrastructure needed to translate our apps and make them available in different locales.

Adapt UI also ensures that apps and systems are laid out according to the rules of selected languages — in Arabic, for example, text is written from right to left, and so we need to factor this into our layout when Arabic is selected:

A screenshot of the Adapt UI localisation demo in Arabic

Feel free to play around with our localisation demo and see how the layout changes depending on the language chosen!

Conclusion

This is a brief overview of Project Prism so far. I go much more in-depth in the video at the start of this post, so be sure to check it out!

If you'd like, come and visit our GitHub organisation to see our various ongoing projects with regards to the Prism. Why not star a few of our repos you find interesting — or, if you're keen — contribute to our projects? Your contributions are welcome; even if they are simple bug reports or documentation enhancements!

That's about it — thanks for reading about LiveG Project Prism!

Top comments (17)

Collapse
 
gert profile image
Gert

That's looking bloody amazing James !!!
Q: So using PWA technology, that still means all the apps running on your Prism need to be developed using your tools. Not possible to install/run existing apps, like Twitter that you are mentioning...
Keep up the AMAZING work James

Collapse
 
gert profile image
Gert

I wonder if you could post builds for the PinePhone (Pro) occasionally, so we can play with it and possibly help debug, or do/can we build and load on phone.
Just super interested in what you're doing James !!

Collapse
 
jameslivesey profile image
James Livesey

Hey Gert, thanks for your support! With regards to PWAs, any website can theoretically become an app for the Prism (it'll be added to the home screen and will act like an app). Websites with a Web App Manifest will also have extra features, such as being able to work offline, too — since Twitter has a manifest, it will essentially act like a native app!

Build-wise, it's certainly something we're looking forward to release — a few features (such as some kind of update mechanism!) would probably be needed to be added, but I'm sure we can release an early Alpha build fairly soon!

Of course, the PinePhone I have is non-Pro, but I should imagine that there's some sort of build compatibility with Pros I hope... Something I'll have to check!

Thread Thread
 
gert profile image
Gert

Great, can't wait
Yes a build for the Pro would be amazing please
Cheers
Gert

Collapse
 
liviufromendtest profile image
Liviu Lupei

This is insane! Can't wait to see the next posts.

Collapse
 
jameslivesey profile image
James Livesey

Thank you! It's certainly an ambitious project of ours, but hopefully, we'll be able to provide updates with regards to the development of our project soon!

Collapse
 
ben profile image
Ben Halpern

Whoa!

Collapse
 
jameslivesey profile image
James Livesey

Thanks for checking my post out, Ben! This isn't your typical software-development-oriented type of post on dev.to, but I'm sure many people will appreciate both the software and hardware side in developing a smartphone platform...

Collapse
 
svgatorapp profile image
SVGator

Best of luck with your project!

Collapse
 
jameslivesey profile image
James Livesey • Edited

Thanks! From where we are at so far, it seems to be going really well, and development has come a long way in such a short space of time! Fingers crossed we'll be able to share some more dev updates here sometime soon...

Collapse
 
dumboprogrammer profile image
Tawhid

Can't wait to listen more from you guys!

Collapse
 
jameslivesey profile image
James Livesey

Hopefully more should be on the way soon! There's already a few bug fixes and features that have been added since the video, so hopefully we should be able to provide an update at some point!

Collapse
 
jameslivesey profile image
James Livesey

Thanks Leonid!

Collapse
 
aquadrehz profile image
AquaDrehz

This project is so cool.
But I have a couple of questions.

  1. If your phone OS is a PWA then does another web can try to get your credential easier?

2 Does Prism Project is able to run the web automation framework to test itself?
Such as Cypress or Robot framework

Collapse
 
masonharper profile image
Mason Marper

Thanks for sharing

Collapse
 
kenystev profile image
Kevin J. Estevez

Awesome work! I can't wait to have one in my hands and test it

Collapse
 
tramcrazy profile image
tramcrazy

Thanks! We've been working really hard on this first version, an alpha should be ready soon!