How to get newLISP popular?

Started by hilti, January 08, 2013, 08:04:01 AM

Previous topic - Next topic

hilti

Over three years now I'm using newLISP for several projects, most of them were web projects. During these years I've experimented with other LISPs like clisp, clojure and so on, but always coming back to newLISP because it's more fun and easier to solve my computing tasks.



So how will get newLISP more popular - what do we have to do in 2013?



I've written down some ideas I'd like to share with You:



1. Make newlisp.org more sexy - I'm working on some styles Lutz can easy use with his wiki

2. Write an ebook for children about "Programming with newLISP on the Raspberry Pi"

=> The internet of things is right around the corner and I think children like to influence their world via a computer. With newLISP it's easy to access the GPIO Pins from the Raspberry Pi to read out sensors or do some home automation.

3. Developing a portable, embedded social network device. Something like "Facebook to Go" using newLISPs networking functions, because I think the discussions about personal data and privacy will become more active.



What are you thinking?



Cheers

Marc
--()o Dragonfly web framework for newLISP

http://dragonfly.apptruck.de\">http://dragonfly.apptruck.de

cormullion

#1
There are so many ways you can promote a language. But ultimately languages thrive if they're being used, rather than just being talked about.


  • As an embedded scripting language, newLISP would be a good competitor for Lua. Perhaps there are some opportunities there.



    Interfacing newLISP to some big apps and web APIs is another good incentive - there are dozens of examples where there's an interface for Language x, Language y, but not for language newLISP.



    It's time newLISP was on the iPhone. If you can have Gambit Scheme, why not newLISP? OK, I'm not sure what it would be used for, but think of the immediate market that opens up.


I'm not convinced, though, that too many people care much. But I'm happy to be proved wrong.

jopython

#2
Cormullion,

The last time i heard GPL licensed apps are not allowed in the appstore.

HPW

#3
I heard that you have to use apple tools to compile apps.

So newlisp would be needed to be ported to objective-C
Hans-Peter

hilti

#4
Here are some good links about the iOS Guidelines



In short:


Quote
iOS does not allow shared libraries!



Why?



They are afraid your app will download a new version of the shared library at runtime and change the behavior and thus circumvent the whole Apple App Store Review process.


http://blog.burhum.com/post/38236943467/your-lgpl-license-is-completely-destroying-ios-adoption">//http://blog.burhum.com/post/38236943467/your-lgpl-license-is-completely-destroying-ios-adoption

http://stackoverflow.com/questions/4733847/can-you-build-dynamic-libraries-for-ios-and-load-them-at-runtime">//http://stackoverflow.com/questions/4733847/can-you-build-dynamic-libraries-for-ios-and-load-them-at-runtime
--()o Dragonfly web framework for newLISP

http://dragonfly.apptruck.de\">http://dragonfly.apptruck.de

cormullion

#5
Pixie Scheme III is available under the GNU General Public License, and is on the App store.



Gambit Scheme is LGPL, and is on the App store now. And you can use Gambit Scheme to build iOS apps too, which is even cooler, and those apps are also allowed on the App store.



Lua is MIT licensed, and iLua is available for iOS.



Python is claimed as GPL-compatible, and is available for iPad and iPhone.



Ruby has a special two-way license, including BSDL, and is available for iPad and iPhone.



R is GPL licensed, and is available for iPad and iPhone.



and so on...



I'm still not convinced that there are insurmountable barriers to putting newLISP in some form on iOS. And I don't think it has to be rewritten, just recompiled. But I know nothing of these arcane matters, or who would tackle such a task... :)

Astrobe

#6
I think that trying to be more popular requires a strategy rather than 'stuff'



  • * lower the barrier of entry helps with retaining people who "heard about that newLisp thing" and give it a try. This means better documentation, better tutorials, community management (consider you're ok with that when you have an IRC running with enough people connected to answer questions and chat 24/7).



    * versatility. The more domains newLisp covers (GUI, web, systems programming), the more potentially interested people in newLisp you get. Also: portability, more platforms, more people. For instance, I think it would be nice to have a portable GUI toolkit that doesn't use Java. Aside from the classic GUI toolkits (Qt, GTK, ...), GUI in the browser might be a good enough solution.



    * The batteries-included philosophy is key factor to the success of Python, and the no-batteries-included style of Lua is, I believe, one of the things that hold it back. So some more batteries should be included



    * Communication, advertisement. To talk about newLisp in Lisp related forums is probably the most efficient way to communicate about it, but some members of the Lisp community sometimes can become aggressive. When doing that, one has to prepare an answer that dodges flamewars. Aside from that, newLisp should try to steal a seat wherever the other major scripting languages (Python, Perl, Tcl, Lua) are, be it in software directories, benchmark sites, etc.



    * Although this topic is dear to my heart, performance is to be looked at last but not neglected. Some people look closely at benchmarks even tho what they want to do does not require high perfs. At least providing up-to-date benchmarks would make them feel more secure.



I'm aware of the fact that newLisp is not doing bad for most of the points I've listed; it's all about improving it.

Finally I would add that it's all about community. Lutz has a great job already; for having done myself a scripting language of my own I can tell you that newLisp is an impressive piece of work. But he cannot do all that all by himself. Attracting people, integrating them into the community, have them benefit from it, and have them contribute further to the project is what will make newLisp grow, more visible and more popular (ain't that obvious after all?).



PS: now if just want killer-app ideas I think that a system that combines the live, online experience of IRC and the delayed, offline experience of mail (and/or mailing lists) could be an interesting project that seems quite well fitted to newLisp.

cormullion

#7
Some good points there. Apart from the bit about engaging with the mainstream Lisp community.... only a masochist would waste any time doing that... :)

jazper

#8
Thanks to Lutz in particular and everyone who helped make this such great language.  As to making it more popular, it would need to be "ubiquitous".   Lua is, python is, in their respective territories, but newLISP hasn't really got a "turf" yet.  



"Hello World" is SO last century.  Why not make the bottom line example an httpd cgi app?  Like a basic user registration form, displayed to a web grid.  The classic staff list.  Nothing great, just an example desktop/android sqlite3 cgi app that stores a user and email to a sqlite3 database.  Then it can display "Hello [user] your email is [email]" from a database.



I say this, because even after some years of using newLISP around the office, I still haven not yet mastered writing things to sqlite3 from a cgi web form - displaying them, yes, but not writing to the database.  Believe me, I have tried.  Even the example in the user guide does not write to Sqlite3, whatever I do, and that's not even a web form.  And web is where it is all going.



newLISP writes easily to Excel, so my 2c is, making an easy office cgi webform database could be a very useful new "turf" for newLISP.  If office users can get going with that, they'll be everywhere.  McCarthy's secretaries wrote LISP programs, because McCarthy didn't tell them that they were doing that!

unixtechie

#9
Quote. Developing a portable, embedded social network device. Something like "Facebook to Go" using newLISPs networking functions, because I think the discussions about personal data and privacy will become more active.


OK, one year ago I worked out in detail the design of a node that would do the following:



--It is invisible from the outside, i.e. a scan won't show any open ports. This feature can be used to protect the node from DoS attacks, among other things.



-- It however listens and accepts (encrypted) packets from people registered with the site

Upon receiving packets on a correct port it will publish them on it internal web site, if the encryption key is acceptable, pretty much the same way twits are received and published.



-- this "internal website" may be open on localhost only, or be visible from the outside. In any case, it is a "passive" web server serving static web pages (i.e. fast and so on) which does not take any input from the outside. All publishing happens via the first mechanism.

So in case of a node open to the outside world for reading, a scan will see this static web server port only, no listener waiting for input is visible to the scanner.



-- the size of the messages is up to roughly 600 bytes, i.e. a couple of small paragraphs, i.e. postings can be considered to be  "super-twits" in a way, as twitter allows only (150?) symbols, and is pretty useless.

It is not difficult to make these messages longer in size, too.



-- the messages are published either in each registered user's blog, or can be comments under other users' entries. Access policies (all registered, friends only etc) are possible.



-- there are more possibilities for this architecture, I will skip discussing them for now



THIS PROGRAM - according to my thinking - can be cross-platform; it all goes/unpacks into one directory, and the programs themselves are maybe 2-3 megabytes in size total. They consist of a small number of standard unix/... utilities plus a binary of newlisp (maybe packed with its own script into a standalone pseudo-binary, as newlisp can do), which glues their functionality into a coherent whole.



This architecture can process probably 100 messages per second, turning any computer into a super-twitter or blogging  node. It can also be scaled over several machines to create a more powerful site.



Such a node could be used as a  sort of multiuser blog  with comments, "DoS protected", as no ports are open for input -- or as a hidden engine for friend-to-friend messaging, or a combination of both, creating a basis for decentralized social "chirper" sfw (where chirper is defined as a sort of super-twitter for friend-to-friend networking), or a full-blown network of blogs which combine opennet and darknet capabilities, traffic from the former creating cover for the smaller darknet traffic.



This functionality can be hidden behind a regular website, which supposedly is totally "passive" and serves static pages only.



NEWLISP in that design would be a cross-platform glue language, and maybe even the webserver itself for localhost private messages reading (the built-in webserver library I remember crashed under heavy traffic, so it might be wiser to use a small standalone web server binary for public nodes)

JeremyDunn

#10
I wish I knew more about programming. I can tell you right off the bat that if someone could figure out a way to interface with AutoCAD so that one could use NewLISP rather than AutoLISP, that the language would immediately have a large community. AutoLISP exists in several CAD programs now but none of them have deigned to improve AutoLISP. The users keep begging Autodesk to improve AutoLISP but it falls on deaf ears, they have decided for us that we're supposed to use VB.NET. And yet everyone defies them and keeps using AutoLISP! They just don't get it.

itistoday

#11
I tried to use newLISP once from a C program, and it didn't go too well. newLISP is great in going from newLISP -> C, but not in the opposite direction, so until it has support for that, which is at least as good as Lua's, it won't be popular for using as a scripting language for games, or other places where Lua is used.
Get your Objective newLISP groove on.