As the subject of this thread suggests, I'm interested in recruiting developers for a startup that I founded a few months ago. Before I go into detail about what kind of team members I'm looking for, I think that it would be important for me to talk a little bit about what this startup is focused on and where we are right now.
To get started, I'm going to talk a little bit about the Arduino. For those of you who don't know what Arduino is, it's a small 'computer' that enables components such as sensors, lights, motors, or displays to cooperate and form "interactive objects and environments". I'm not going to go into much detail about the dynamics of Arduino or its motives, but their goal can be summarized as: make creating electronics projects more user-friendly. While they have dramatically simplified the process of developing hardware applications, I still don't feel that it's as simplified as it should be for beginners. In order to get started with the platform, it is mandatory that the user either have had experience programming or be willing to learn how to program. What I've observed is that this can be discouraging to many and cause them to give up hope of ever completing their projects. In no way, shape, or form do I dislike Arduino or what they stand for. All I believe is that what they're trying to accomplish can be done better.
At the opposite end of the Arduino spectrum is a device called the Raspberry-Pi. While its goals are almost identical to those of Arduino, the hardware is much more intricate. It runs an entire Linux distribution. The first major problem with that is: when you're running an operating system as abstract as Linux, it becomes virtually impossible to interact with the hardware in the same way Arduino does. Sure, there are libraries and wrappers for the Pi, but none of them give the developer the feeling that their code is running barebones - something that many of us here can attest to is a magical feeling. It's also not as easy to set up or get plugged into projects as the Arduino, as it is required that the user burn a Linux image to an SD card as well as be somewhat familiar with the Linux command line before getting into a GUI. It does have its advantages over the Arduino though that have put it where it is in the market.
So, the question is, how can a development platform be designed that parallels the advantages of both platforms while remaining easy to use and dirt simple to get started using. To answer this question, I founded a startup called Flipper Engineering on 11/12/13 with one goal in mind: to make an electronics prototyping platform that bridges the gap between the Arduino and the Raspberry Pi. The majority of the time since then has been spent designing the hardware - which I'm pleased to announce has been completed. It utilizes an ARM SoC which is build upon the classic ARM7TDMI architecture. Aside from the hardware, I've also spent time working the most critical component of the device: its operating system. The operating system that I've been working on will have a few key features. It will implement a scheduler that will enable pseudo-multitasking, virtual memory to keep each program's memory isolated from one another, as well as an interactivity module that will allow the hardware to be controlled from a PC without the need to compile and install a program to do so.
Operating systems tend to be pretty time consuming projects, and I don't have enough time to complete one before I'd like to launch this product. That's where you come in. I know that many of you are talented operating system designers and would have no problem helping me implement a small embedded operating system over the course of a month or so.
If this sounds like something that might interest you, you can email me at "george (at) flipper.io" or PM me on here. We can talk about the project in detail and go from there. I assure you that there are many details that set this kind of platform aside from what already exists. I don't want to give away too many details yet, so it'd be better if we could talk one on one.
---------------------------------------------------------------------------------------------------------------------------------------
User "Schol-R-LEA" asked these questions. I thought that I'd include them, as well as my response to them, here in the original post to help new readers get a better idea of the project.
That's understandable. When writing the initial post, I didn't want to get into too much detail - rather I was just curious if anyone would, indeed, 'bite'. And here we are.Schol-R-LEA wrote:OK, I'll bite; while I am currently employed, and happy with my job for the most part, but I am always looking for opportunities to work in my preferred area (system development) over the applications work I am currently doing. I am sure there are several here with the same basic questions I would have, hence I am posting in the message board rather than by PM.
For my own part, I am more interested in experimental systems than production ones; and while I am well-versed in C/C++ and most of the conventional GNU toolchain, I am mostly working on a Lisp-derived language and system as my hobby work, which involves creating a completely new toolchain for system development. I have had little success to date, mainly due to time constraints, but I am proceeding with my retargetable macro assembler even so. I would especially relish an opportunity to work on an ARM or MIPS based system, if only to get the bad taste from working with the x86 ISA out of my mouth , but I doubt you would see my approach as viable for a commercial product just yet.
- What sort of compensation would you be able to offer? (You must have known this would come up)
- Are you looking primarily for full-time commitment, or would part time work be possible?
- What do you expect candidates to bring to the table? This is important here especially because, unlike in most employment situations, most of the experience at OS-Dev is going to be in hobby situations, rather than professional ones; while many here are indeed professional developers, most are not, and those who are generally haven't worked in OS development professionally (indeed, I doubt any have).
- What is the firm's source of start-up funding, and how much is it capitalized for?
- Where are you located, and would there be face-to-face meetings required at times?
- How long do you project the initial development to take?
- Will you need longer-term developer commitments, for maintenance and improvements?
- Who will be doing the software design work, and how much has been done to date?
- What sort of toolchain do you already have in place? What existing tools, if any, do you mean to apply?
- What languages, etc. do you intend to use?
- What sort of system and utilities do you intend to provide the client-developers?
I suppose I'll just answer your questions in bulleted form, as you have asked them.
• Compensation is mildly tricky right at the moment. As is the case with most startups, especially in their early stages, it's difficult to 'hire' someone per say. What I was hoping for you hit on later in your post. I'm looking to bring someone in who would be willing to do what they would normally do for fun, but for a greater cause. I'm going to skip ahead a few questions and talk a little bit about funding. Right now, I'm funding this project out of my pocket. I'm fairly well off, which makes this possible, but a lot of this money is being spent on prototyping, tooling, testing, and other expensive aspects of having printed circuit boards manufactured. I don't have money in this early stage to pay an employee. However, if we work together and make the startup successful, you can be rest assured that you will be compensated for your efforts in the event that we do come by some money. If worse comes to worse and the startup doesn't make any money, I'm sure that I would be able to pay you a fair bit for what you've done.
• This is a moderately easier question to answer. Whatever works for you. My hopes would be that you would spend whatever time you might have after your job / on the weekends working on the project. It really doesn't matter to me how much or how little you work on the project - if you can deliver something valuable, even if it's something small, that's all I'm after.
• I'm looking for someone who is kind, and can work well on a team. Someone who will go above and beyond what they're told to do in an effort to make something more user friendly, or something that's more efficient. It's imperative that you have solid problem solving skills and know how to apply them. This goes without saying here on this forum, I'm looking for someone who's had experience writing operating systems. I, myself, am by no means a professional operating system developer. What I can do, however, is use the skills that I've developed over the years to write system software that works - and if I don't know how to do something, I'm more than willing to look it up and learn how to do it. Anyone with similar qualities would be a great fit, professional or hobbyist.
• Like I said, I'm funding this out of my pocket. I've spent a good amount of money on it so far. ~$15,000
• The startup is located in California. Face-to-face meeting would be a key component of communication and problem solving, so yes. Skype would fix the distance problem, unless you're interested in flying in.
• So, the initial development is completed. Right now, we're in the final stage - software development.
• If the team likes you and I think that you have a lot to offer to the company, long term developer commitments are definitely an option. It all depends on how much money the startup makes, and if it's enough to hire full time employees (or even part time). Another one of our current developers will be getting a full time job if the startup takes off.
• The software design was done by me and it is completed. I have also written some of the code. While I could probably finish the operating system on my own, it's valuable to be part of a team. There may be aspects of my software design that you think should be changed. This is important to ensure that we release the best product possible.
• It's a bit vague what you mean by 'toolchain', but I'm going to assume that you're talking about the compiler, libraries, and other like components. The official toolchain is 'arm-none-eabi'. However, I've been using ARM LLVM with Clang as the frontend for the compiler. This is all up in the air, but has been pretty solid thus far. As far as libraries go, I'm lightly relying on the standard arm-none-eabi-libc C library. As far as other libraries are concerned, there are going to have to be other libraries developed for the SDK. We can go into detail about this if you decide to join the team.
• Right now, I've been using primarily C and assembly - the standard stuff when it comes to operating system development. Some of the startup's secret sauce, which runs on the host PC, will be written in Python. That's about it for now. If you have more you'd like to bring to the table, you're welcome to by all means.
• This is perhaps the best question. This is what I was alluding to by saying "I assure you that there are many details that set this kind of platform aside from what already exists." Right now, I can tell you that we are in the process of writing a custom IDE and command line interface for Windows, Mac OS X, and Linux, a server API, and libraries for Python integration. We're also working on a fully fledged SDK for integration not only on the native ARM architecture, but the x86 architecture as well. These components fall into the 'secret sauce' I mentioned earlier and I will have to discuss with you in detail one on one.
I completely understand where you're coming from. I, too, hate the corporate mentality. There's one thing that I'd like to make very clear here and now. I know that I've been talking quite a bit about money. While I know how to run a successful business, which mandates knowing how to manage money, that is not what I care about. I am a hobbyist operating system developer at heart who, like many of you, is interested in getting his creation out into the world. I do not care about money, nor fame. My greatest goal is to make a difference. Nothing would make me happier than to see someone's life become better as a result of my (our) creation being in it. That is what has inspired me to create this startup.
I'm exceedingly glad that you mentioned your desire to experiment. 99% of what has driven my love for operating systems has been experimental. I've spent the last 3 years working on an experimental paradigmatic operating system. Many of the experimental features that I incorporated in that OS, I hope to bring into this OS - at least under the hood. The magic about a startup is that not only do you have the freedom to do anything - you have the agility to do it. Anything is viable as a consumer product, you just have think outside the box. If you want to make LISP a supported language, by George let's do it.
Oh, and if you haven't noticed, this whole project eats, sleeps, and breaths ARM. If you're looking to get away from x86, this is your opportunity.
Thank you for your time,
George