ideal objects

Everyone should be able to program.
The goal of ideal objects is to create a consumer system that will bring programming to the masses. No system like this exists today. How do we make this possible?
  • What we need is an open system.
  • With a standard for creating data.
  • With a plug and play way to store the data.
  • That can create programs
  • That can be combined to make more programs.
  • And it shouldn't be owned by a single entity.
  • Why?

    First, programming provides a wonderful tool for thinking. You can use it to create models for problems that you are trying to solve. Or to simulate what you expect to happen. It can be used to create complex calculations based on changing data.

    Programming is known as a way to create software. While it isn't the primary focus, creating software is still important. Especially when it comes to your own productivity. There are tons of productivity apps that exist today. Why is this? Because we all work different. These exist because everyone is trying to find the tool that fits them best. The problem is, a tool build by someone else, for someone else, won't meet YOUR needs. In a world where consumers can program, instead of building the interface and trying to please everyone, the application can provide the mechanism for modeling and storing the data. The end-user can create the interactions that they want to use, in the way they want to use them. This would become super powerful.

    It is this way today because it is not accessible. You can go to any language website and quickly run through a tutorial. Usually these are of the "Hello World" variety. This is fine for learning a language, but it doesn't provide the tools people need to use programming to think. There is no equivalent of paper and pencil in programming. What we need is the equivalent. You should be able to model your business problem in data. You can then use this model to run a simulation. Or to organize the data in different ways. This is a powerful tool that doesn't truly exist today.

    Objects

    It all starts where Alan Keys -- one of my favorite technology philosophers -- started. With Objects.

    Objects are the fundamental piece of data in this system. Much like in smalltalk, everything should be an object. The spec defined by Ideal Objects will provide the guide-rails for creating objects, not a full-fledged spec that all objects must adhere to -- we want the system to be flexible after all. The spec will define some basic metadata that all objects should define to provide inter-operability. There will also be a spec for storage and linking of objects. The rest will be up to the user.

    There are a lot of standards that already exist today, which is why we are not defining a more strict data set. This system will allow for any of these systems to be used. Schema.org is a great example of a standard that exists today. It provides a lot of data types that are defined for real-world objects.

    The spec is available at https://github.com/idealobjects/object-spec.

    Spaces

    Spaces are where your objects will be stored. It will be the database that will go along with any Ideal Objects system. This integrates with the Object spec for how objects will be looked up.

    There can be multiple spaces for a project.

    A spec will be published soon.

    Programming Language

    There is a lot more that goes into a programming system than just the objects. The main thing that you will do while programming is manipulating the data (objects). We are providing a language spec to go along with the object spec. The purpose of this language will be simple, with a focus on not having complex characters and expressions that look like an intimidating form of calculus. It will use a lot of plain english combined with some mechanisms to looking up data in a space.

    This is not going to be the only mechanism for manipulating Objects in this system. On of our objectives is flexibility, which means that any language can be used to manipulate the objects. This will focus on being a starting point for many people, as well as a potential language for future widespread use.

    A language spec is in progress and available at here. An interpreter will be published soon.