Can Proprietary Language Teams Succeed By Going Open Source?
JerkyBoy writes "RunRev maintains the proprietary LiveCode programming environment. Those familiar with HyperCard on the Mac would feel quite at home using the environment to produce simple applications, and possibly more, although the programming language it incorporates has a few significant shortcomings (e.g., true object orientation). But it is a very versatile environment, currently claiming support for Windows, Mac, Linux, iOS, Android, and server-side scripting. For us NOOBs who could never find the time to learn C++ and something like the wxWidgets or QT toolkits, it seems like a pretty good deal. Recently RunRev has done something interesting, however, and that is to create a Kickstarter campaign to move the environment to open source (~500K lines of code, ~700 files). The way that they describe it, it sounds like there will be a commercial version and an open-source version of the environment (hopefully not cripple-ware), and they are asking for money to do this. But I want to know: what are their chances of success with this model? How in the world can they make enough money to maintain their programmers and overhead while giving the environment away? In other words, if a company like RunRev announces that they are moving to an open-source model, should you become more interested or less interested in their product?"
Microsoft's wide portfolio of products may allow a little cross-subsidisation (mild understatement), which is not really an option for a one-product firm as described in this story.
Also the Express editions might be considered loss-leaders: you start with the basics and eventually you need the full-blown paid product. It doesn't seem like this firm is differentiating its offerings in such a way.
Indeed. For example, interestingly, the standard template library (STL) used in many C++ projects is actually a move away from object orientation.
Anyway, I just had a peek at some sample LiveCode source, and noticed that sometimes it approaches human language. For example:
delete the last char of tFilesWithPaths
So, perhaps LiveCode is a move back towards the COBOL days?
If Pandora's box is destined to be opened, *I* want to be the one to open it.
Except Novell. Er.. and Sun. And SGI... Google is struggling to keep control over Android and put the cork back in the bottle. I would say that open source is fine if you don't want to commercialize the product in a heavy way.
So, perhaps LiveCode is a move back towards the COBOL days?
I had wondered what all those guys had been up to since 2000 - now I know!
#DeleteChrome
Perhaps they are going OSS because they realized their product is simply not going to be successful closed source. The fact of the matter there are many many OSS options which already have wide adoption, and real developers will likely prefer these solutions over any closed source one. Tehre is also the fact that a non OSS platform will simply be dropped at some point and updates will stop - at which point you'll be screwed.
Poster pointed out one of these examples: hypercard, but I'd just like to point out that we had started developing an app on AIR only to have them drop cross platform (Linux specifically) support 2 months into our development. It was a job for a client, and we had to spend a few extra weeks porting it to Java. Since that time we have refused any proprietary platforms, which we didn't like in the first place but we now view as a direct risk. We don't even look at non OSS for our development, environments and libraries included.
Yes - interestingly buried away in the KickStarter is the description of an "Open Language" feature. This feature is particularly interesting with regard to the ease of creation of domain specific languages. In many ways the object oriented nature of much of the code base is hidden behind a language and conceptual model that allows a more intuitive use of object oriented concepts, and wraps these in a DSL. Opening up the source code will allow us all to create truly natural DSL for a whole range of open source low level projects.
It's pretty close to the Blender story - where a closed source but active community decided to open up the source code in order to grow the community. See "3D software Blender's "community buy out" in 2002" - http://www.blender.org/blenderorg/blender-foundation/history/. I was at the launch event, and they faced many of the same code issues that the LiveCode community now face - a large amount of legacy code written in a way which was difficult to open source. Blender is now the preeminent open source software for 3D modelling around the world - and LiveCode has the potential to be much bigger - as it applies to a more general audience of developers interested in desktop, server side, mobile and tablet apps across multiple platforms - in a language which is literally child's play to learn. Anyone interested in getting more people into coding, and therefore getting a wider understanding of some of the most important technologies that are shaping our future - should give the KickStarer a look. This is more than an educational project, it is about democratising programming - http://www.kickstarter.com/projects/1755283828/open-source-edition-of-livecode
answer error "This is not COBOL" with "It sure isn't" or "Meh"
Except Novell. Er.. and Sun. And SGI... Google is struggling to keep control over Android and put the cork back in the bottle. I would say that open source is fine if you don't want to commercialize the product in a heavy way.
Novell had its business model removed as Windows absorbed Networking [much like they are doing with stream now], and after getting involved with Linux took a bribe from Microsoft which like all dealing with Microsoft ended badly. Sun and SGI just fell to Better Value Microsoft PC's, and bad management [overspending].
Oddly Googles Android is a success story; set to overtake Windows this year. In reality only Linux is truly open source with its slightly amended GPL2 License, the rest is Apache which is why Google do not [and in some cases haven't] released the code for versions of its software. The reality is most of its value comes from its [cross platform] closed applications and web services...which aren't open source.
Nothing better than writing "Add one to number of gadgets, storing result as number of gadgets." instead of "nGadgets = nGadgets + 1;" or even "nGadgets++;"
If you're so inclined, COBOL is over there, and Inform7 is over there (and it's pretty interesting in its own way).
Seriously, syntax is never the problem, logic and the need to explain every step is the problem.
I dont consider *new* languages for which there is no open source implementation of the core language available. This is not because i dont like to pay but because in the case of small languages/domain specific companies you never know ehen they go belly up or are bought and what happens then.
And by the way, what does t mean in the example above? Does not sound very English to me
You've never spoken to anyone from Yorkshire then
From kickstarter campaign:
We have selected the GPL because it encourages sharing by ensuring that any applications created with it are also open.
This isn't true for any current compiler available under GPL, why would it be true for thier compiler?
Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
Perhaps you need to log in first?
If Pandora's box is destined to be opened, *I* want to be the one to open it.
Object orientation is a tool, unfortunately most programming languages treat it as if was a religion.
Paying to get something nice open sourced is a good thing.
Paying to have a stripped down IDE and language open sourced... not so much.
If you want to learn programming, use JavaScript, Python, or Ruby; they're free, easy-to-use, and they scale up to real problems.
How do you define success? Your open source language project doesn't have to be good to be popular (example: PHP), but it must have a certain audience that finds it appealing. Open sourcing the project is not a magic bullet; if nobody likes your product, you're out of luck. However, if you have carefully studied your audience and believe that such a step will remove the main roadblock for adoption for a large number of potential users, this is definitely worth doing.
Python breaking compatibility with version 3 was a brilliant idea. It meant they could fix the (few) poor design decisions they made early on. This means instead of getting yet another language or having to deal with annoying stuff, instead it's just a small move to 3.x, which is excellent.
-- Lattyware (www.lattyware.co.uk)
But Is Betteridge's Law Of Headlines Ever True?
systemd is Roko's Basilisk.
I very much disagree. "gadgets++" has about the right information density. COBOL is way too verbose. It takes too much code to do something, and too much reading to figure out what's being done. The term "COBOL finders" exists for a reason. Making the language closer to English is not going to solve the problem most people have in writing software. Their problem is being able to organize their thoughts and apply them in a logical way. In many cases adding verbosity makes it harder.
It's not the only form of programming, but it's a way of organizing the whole software and non-OOP tends to break that which is why they don't mix well. When I program in Qt pretty much everything is an object, objects have child objects and all the state, all the data is placed in member variables. It is fairly similar to a file tree, directories have subdirectories and files. Delete a file and it's cleaned up, delete a whole directory and it goes away, always and without exception no matter how much I refactor the code. Code that allocates something in one place and relies on clean-up code somewhere else either in the same class - except destructors that are always called, a different class or a global function breaks that analogy, I can delete a file and be left with dangling inodes and I'm fscked.
I think analogies like that are really important if you want human beings to wrap their head around what's going on. I can work with other models, like the "memory as untyped boxes" used in assembler or C. I find it easiest to imagine them as storage lockers at a station, they're all numbered and you better stick to those that are yours, you can ask for more but you'd better release them when you're done or you'll be "using up" them leading to an ever increasing rental bill - that is memory usage. It's a lot of micromanagement, no type checks, no object boundaries to easily see isolated parts and a lot of storage locker number math, but it's doable.
I also understand streaming programming, it's easiest to imagine them as massively parallel highways (yay car analogy) using road signs to split the streams - many of them dead ends so we continue with just a subset - and functions applying changes to anything passing through a stretch of the road. Ideally there's no state, input data just keeps flowing in one end and output data out the other. A good example is rendering, everything inside this triangle of points (x1,y1) (x2, y2), (x3,y3) should be colored red. You have a flow of pixels in, divert those inside the boundary and paint them red like in a drive-through car paint.
I also know that streaming programming is not the same as threaded programming that I do sometimes in Qt, where streams have many cars driving in parallel the threaded version is like having a multi-lane highway but with each car picking its own path depending on traffic. I can set off cars in one order and they come back in a completely different order and I have to make sure they don't crash or jam. In streaming programming you don't have deadlocks, livelocks or locking order issues, but here you do and there's a million different ways of solving this with mutexes and semaphores and synchronization to make sure nobody steps on anyone else's toes.
The trouble is stateless and stateful programming, synchronized and unsynchronized parallelization are all diametrical opposites, and the whole point of OOP is to abstract yourself away from the memory-as-boxes model. If you mix them it's like throwing all the colors of a painting kit together, you don't get a rainbow you get an ugly looking mess. Yet reality doesn't always fit into one of those cute little boxes so they all try doing a little of what the others are doing, but they always end up like alien little pieces. If I have to call C code with the new/free pattern from C++, I typically box it so it acts like a "proper" object that cleans up after itself. Because if I'm doing the OOP model, that's how I want everything to act.
Live today, because you never know what tomorrow brings
You REALLY don't get this?!
I'm sorry but when an entire program can be broken by simply using a different editor with slightly different tab settings, then that language AND its designer deserve all the derision and scorn that could possibly be heaped upon it.
Hey KID! Yeah you, get the fuck off my lawn!
Because you haven't thought it through because you are focused on the red herring that enforced whitespace is.
Everyone formats their code, therefore enforcing it buys nothing, but a few less {}.
There are heavy costs such as Python's gimped lambda. The reason it is pretty much worthless is because of the enforced whitespace, the lesser reason is because Python doesn't follow the everything is an expression design like proper languages.
It also makes debugging harder, because sometimes the best way to debug something is to throw in a few quick throw away print lines. Can't easily do that with enforced whitespace.
The last is simply that if you move files from one system to another the formatting can get borked, which absolutely sucks.
I have seen 1000 line Python files lose their indentation making it worthless.
So, for the small value of enforcing what everyone does anyway, the language is less powerful, and less capable of recovering itself if something in the file gets corrupted.