Why Rainbows and Leprechauns Cut no Ice in Edinburgh

by Heather Laine on September 23, 2015 27 comments

Quite a number of users are asking why the Feature Exchange? Why do we not just produce these features for you, without asking for (yet more) money?

Let me pose a different question:

How do you fund development on a complex and powerful open source tool which requires large amounts of love, care, attention and development?

Money does not grow on trees, nor is there a pot of it at the end of the rainbow. We know. We’ve checked.

rainbow4

Community Developers?
Skilled developers do not code for free, full time. Yes, a few dedicated folk will donate a limited amount of time to a cause they believe in, but to expect them to provide and maintain a tool of the depth and breadth of LiveCode is just unrealistic. Developers need to eat, even if it is only pizza. What about licensing revenues? Surely this is a bottomless pit of wealth, that only needs tapping into correctly? Again, we can confirm from our very indepth and personal experience, this is not the case, for a tool with a completely free and rather powerful open source edition. The community of free users far exceeds those willing to pay for a license.

New Model
Licensing has a part to play, but we need a new model. Something that allows Community users to make a contribution to the ongoing maintenance and development of the tool. Without a working model to pay for development, it is a sad fact that onward development will have to considerably slow down and in some cases simply won’t happen at all. Nobody wants that.

donate3Democracy vs Donation
We could just add a large “Donate” button to the website. I suspect this would also fail to generate the necessary pot of gold, as it does not communicate well what you get for your donation. A Feature Exchange lays out in some detail, exactly what your money is paying for. If a feature is desirable and enough people want it and are willing to stump up at least a little cash to see it happen, then that feature gets added. It seems like a pretty democratic and fair way to pay for the development everyone wants. It allows those who have only a little cash to spare to contribute, as well as those with rather more. You can see the total mounting, and estimate how much you personally will need to put in, in order to see the feature funded. If not enough people want a particular feature, it won’t happen.

There are always a million ways to potentially direct our efforts. Everyone has a pet love or hate, something they really feel LiveCode should or should not be doing. This is a way to narrow down the options in a clear and transparent way, with the ultimate democratic vote. If you like it, fund it.

Without funding, LiveCode cannot thrive.

Visit The Feature Exchange Now:

Rainbows

P.S Well spotted. There are NO leprechauns in this article. We’ve never managed to locate one.

Heather LaineWhy Rainbows and Leprechauns Cut no Ice in Edinburgh

27 comments

Join the conversation
  • Richmond Mathewson - September 23, 2015 reply

    This is an extremely lucid justification for the Feature Exchange, and, at last, I understand something about how RunRev/LiveCode are trying to generate their income.

    There is a question posed here:

    “How do you fund development on a complex and powerful open source tool which requires large amounts of love, care, attention and development?”

    And it made me start wondering how all the marvellous Open Source software such as GIMP generate income.

    Richmond Mathewson - September 23, 2015 reply

    But, at the risk of sounding a bit “sucky”, I have laways found that Heather’s postings make the most sense.

    Mike Bonner - September 23, 2015 reply

    I suspect, widescale adoption is the biggest key, plus an initial group of knowledgeable people willing to lovingly invest all their spare time.
    LC being a niche market (because it hasn’t yet been “discovered, and viralized”) requires far more from the mothership than might otherwise be required.

    Things like C, C++, Php, Python, are everywhere, and have been taught widely at a huge number of institutions of learning, so again adoption levels are staggering. (and in the case of languages, it can’t hurt that so many open source packages like apache and gimp and os’s themselves, and and and.. are largely written in c, c++, those languages get lots of attention. )
    Gimp is awesome, and fills a need. Photoshop can be very costly, doesn’t run on all platforms, and did I mention the cost? And its something that even non-technical users might need. So again, lots of users, some of whom can code, makes for a happy gimp.
    My gut feeling is still that getting over a user base “critical mass” will help bring those leprechauns and unicorns out into the light. LC is in such a strange position though. People who are really good at c, c++ etc probably aren’t looking for a new language to try. SOME are, but.. it still boils down to user base. A few WILL be able to code and contribute to livecode, others will be willing and able to pay for features they want. I just wish I knew how to wave a magic wand and get the numbers up. Unfortunately, there is no Merlin.

    Pardon the long wind. I seem to be in a blabbing mood today.

  • Mike Bonner - September 23, 2015 reply

    As part of the free community, I for one am not among the unwilling. Health costs are currently running me over with a huge truck, so its more of an unable for me. The donation method at least brings the possibility of donating within my reach. Not much, but dribs and drabs here and there. My only hope is that my dribs can be drabbed before the 7 day timer runs out! (Today? Not possible, within the next couple? Maybe. I’ll see what I can scrape together) Like Edinburgh, my first priority MUST be keeping the doors (of my house) open, and flow of food and drink minimally hindered. But the people I’ve met, livecode itself, and the very idea of “coding for all” which LC brings closer to reality.. are all important enough to me to contribute where I may. Thanks heather for your (as usual) great perspective and explanation. And you still intimidate me, but in a very likable way! (grin)

    Sean Cole - September 24, 2015 reply

    Hi Mike
    I think you’ll be happy to find that these will not be the last features to be presented so there will likely be plent of opportunities to drib your drabs 🙂

  • Mike Bonner - September 23, 2015 reply

    Oh, one more comment. I tried to use fb to login here, as well as twitter, and it failed with an ssl error both times. It might be something on my end, it might not. I’ll check the error closer later today and see if I can solve it from here. If not I’ll post the error received.

  • Jeffrey Piestrak - September 24, 2015 reply

    Point taken, but many of this set of initial feature “up for bid” feel a bit more like you are trying to crowd fund maintaining the software / paying off technical debt rather than trying to crowd fund genuinely new features.
    In particular a 64 bit OS X version, and to a lesser extent IP6. I would argue these things are essentially required maintenance, not new features. I think you’d receive more support if the crowd funding projects funded new functionality rather than maintance.

  • Sean Cole - September 24, 2015 reply

    I, speaking personally, really think that the feature exchange idea is brilliant for adding the very needed revenue to LCs licence stream. But more so that we can get all the little bits that we want and are passionate about. If Adobe did the same thing I’d probably make pledges to them too.

  • Pete Hermsen - September 24, 2015 reply

    Great post Heather. I’m a licensee, so initially I didn’t understand the great need for a Feature Exchange. I confess that I didn’t realize the free user community was so large. After your explanation, I feel better informed. I must say that you have convinced me of the value of this new method of feature funding. Now, the task of getting the message out to the entire community becomes key. Thank you.

  • Gareth - September 24, 2015 reply

    I’am here because I get emails from Livecode having tried it out a while ago. As a professional developer who runs my own software shop I find this absolutely deplorable and one of the key reasons why I’d now never use Livecode in my business. This blog post makes it worse by patronising people by telling them that there’s not a pot of gold and talking about Leprechauns! Come on !! Livecode is already running against the grain in today’s development tools world by charging a hefty annual subscription fee and running an open source venture on the side. Which is it? You can’t have it both ways! I am glad I’ve not paid for Livecode and depending on it in my business – I can see that your customers may well be up in arms about this after paying an annual subscription fee which they expect to include maintenance and then later to find you’re coming back to them asking them for “donations” and if you don’t pay features you think you’ve already paid for and want/need won’t be included! This is not on at all. Imagine Sky TV asking for donations otherwise you won’t get the next season of the Walking Dead even though you’ve paid handsomely for your subscription already. I have to also mention that for fundamentals for things like remote debugging and Mac64 support – in a “paid-for” development tool you’d expect to be in there as standard.

    I’ve kept an eye on Livecode for a while with a view that it may be useful in the future but this has put the final nail in the coffin on that one. If you can’t afford to keep up development on the maintenance of your tool then go the full open source route, put a bigger chunk of the development burden on the community and generate revenue from services like most others do – but don’t charge people for maintenance and then come back again for more money for things they already think they’ve paid for. If you have add-ons that you think people should pay extra for then develop them and charge accordingly – don’t ask your customers to fund the development of them. If I did this in my business my customers would almost certainly leave in droves and many may well take it further.

    I thought your HTML crowd-funding was reasonable (although a bit soon after your original Kickstarter) and it seems that as they’d worked out well, you thought that you could continually come back to tap your community for more with this approach. I’m afraid people won’t be taken for granted like that for very long. As someone else said, expansion of your customer base is one answer for your development funding issues but this strategy is likely to defeat that aim. I always wish small software shops well and hope they succeed but this is not the way to do it and will alienate your customers and, as in my case, potential customers. I would advise a serious rethink on this.

  • Jay - September 24, 2015 reply

    Hmm… LC 8 isn’t even stable — and RR is asking for MORE money after a previous crowd funding project’s recent close?

    I was going to become a paid user, but since you can’t even get LC 8 out on time, what is the point of paying 50 bucks a month for waiting?

    If you want to get more PAID people:
    1) DONT have a crowd funding project to pay for a FREE version, and
    2) Stick to your timeline.

    What you have now is a pay (more) to get the stuff which was promised on the initial funding pitch.

    Disappointing.

  • Devin Durham - September 24, 2015 reply

    “The community of free users far exceeds those willing to pay for a license.” On the other hand you had a huge crowd funded push to release that community version, so I am curious as to why you are complaining about it. I have been with Livecode for many many years, I recently found a version 1.4 on an old ZIP disk. I have paid for upgrades, I paid ahead of time for mobile development, I paid for a lifetime membership of hosting, and I have recently now had to pay every year just to keep a license. Every time I turn around you seem to be finding some new way to ask for money, and now it has been reduced to asking for money for essential features. The next thing I expect to see in the features exchange is “We need $50,000 to continue to support mouse input”.

    It is disappointing.

  • Robert Man - September 24, 2015 reply

    As a long time user and supporter of runrev & LC I like this new feature exchange. I think this experimentation has to be tried.

    >> And to give it better chances, I feel me must have a dedicated forum with proposals, and reasoned voting (I mean with some support of why you vote).

    In a more “strategic” overview, I take it as the replacement of the yearly 70/80$ contribution which I tried to maintain as a hobbyist, every year, even though i did occasionally throw out a 500$ contribution.

    BUT I STRONGLY FEEL that a LOW LEVEL YEARLY “HOBBYIST” LICENSE below 100$ would be MORE EFFICIENT. I did not agree to your latest move which was to abandon the “indie” license.

    To compare that with the Feature Exchange, my personal position is that I will spare my money to the time when an audio revision will be announced since I really suffered from the current under-developed state of the audio management and in particular from the constraint of not dealing with compressed audio. This actually stopped a nice project I had started on LC.

    => So if everybody waits till the desired feature comes in.. it will be less efficient that a low level hobbyist license, which on the other hand I would be more happy to pay (even though.. I know.. I can than wait for years and years for the audio thingy! Man.; are we rational beings!!??)

    With love from France!

    Robert Man - September 24, 2015 reply

    DETAIL :: to clarify my thought, having checked the indie “pay as you go” license :: what I personally would be Ok to participate is a 2 months value BUT with the CONFORT of being able to use the same environment and tools and extensions throughout the year.

    I know one can develop on open source and then just take a month on the indie side, or finally not… but this is kind of making things MORE DIFFICULT for hobbyist that take it AS A HOBBY and BY JOVE THIS HAS ALWAYS BEEN THE ORIGINAL AND STRONG POSITIONNING OF THE HYPERCARD HERITAGE.

    With all the efforts to provide a multi platform thingy.. and enhance, and keep up.. the RISK is TO FORGET THAT INITIAL STRONG POSITIONNING :: “THE” (ONLY!?) HOBBYIST LANGUAGE.

    It seems to me that all the NRJ that has been put in revolution and livecode can sort of now just about mature and COME BACK TO THAT FOCUS “THE” HOBBYIST LANGUAGE.

    (( the hobbyist is a guy that is OK to buy out a little bit of dream every year and subscribe to his monthly magazine.. but he IS NOT THE GUY to decide which feature has to be developed, and how and why and why not… and if going 64bits is so important.. !! ))

    So a HOBBYIST will pay between 50$ and 100$ a year for to dream and PLAY along. And that would be good for all of us, simple, efficient.

    (Of source :: hypercard was FREE, for a while and than abandoned.. so there is a price to pay for STABILITY a kind of INSURANCE that time we put into that will not vanish, but not more than that, 500$ a year is way too much for a hobbyist). Hugh!

  • Dan Shafer - September 24, 2015 reply

    Speaking as a gray hair of the computer industry and a very long-time user of LC, I was at first taken aback by the idea of yet another funding campaign to raise more money for LC development. But then I took time to consider the history and track record of Open Source in our world and I pivoted from bewilderment to admiration. I predict many, many other software development companies will take the ContributeWare route in the future.

    As Heather pointed out in her post, there are a limited number of sources of funding for a product in LC’s unusual (but far from unique) position of being a huge, general-purpose problem solving tool which remains, despite best efforts, a minuscule part of the fabric of the software culture. Traditionally, Open Source projects have looked to a limited number of funding approaches when they’ve addressed the question at all:

    > Licensing, which Heather covered in her post;
    > Custom development, which sometimes can be a powerful revenue stream but which does not directly contribute to the development of the core technology and distracts developers;
    > Support fees (which in LC’s model = licensing for all intents and purposes);
    > Consultation (which has the same effect as custom development).

    I think LC’s bold and twice-proven decision to ask its committed user base to continue to assist in the ongoing development of the core technology is somewhere north of brilliant. I wish I weren’t in retirement and could donate even more; I’ll do so by being a significant contributor on the Community side in assisting with documentation in coming months.

    I *do* agree with the perspective of some here that one or two of the features LC has chosen to fund this way probably ought to be part of the product quite regardless of donations from users. But I don’t sense that LC won’t ever develop those features if this funding effort fails; it may just take them longer than some in the community would like. For them, this funding campaign takes on the added value of enabling us to express quite clearly and loudly our preference and need for some features to take priority on the development road map.

    I remember well the long discussions and debates (and harangues!) some of us had among ourselves and with Kevin and his team at various tech conferences (some of which I hosted in Monterey) at which we urged him to go Open Source with what was then RunRev. I cheered enthusiastically when the company finally took that route and supported the crowd funding to get that done. This new round seems to me just a very sound and logical extension to that strategy that keeps the core developers focused on the technology.

    Kudos all around!

    amigacooke - September 24, 2015 reply

    Does this tend to suggest that the open source idea hasn’t really worked?

    If I’m going to be continually expected to provide money to support the product, it’s not really open source in any way that I have encountered before.

  • Jay - September 25, 2015 reply

    LC used be 299/year for the Indie license, right? Now it is 499/year.

    If LC wants to go this route, and ask for more money for “new” features, by not just sell a permanent license, and then sell the add-on features?

    That makes a lot more sense.

    Jay - September 25, 2015 reply

    Why not sell a permanent license… I meant.

    Maybe add an edit feature here?

  • Jay - September 25, 2015 reply

    Writing about the new funding feature, the writer stated:

    “You can see the total mounting, and estimate how much you personally will need to put in, in order to see the feature funded. If not enough people want a particular feature, it won’t happen.”

    Does this mean that the “feature” won’t be written unless the total cost is paid? What will happen to the money already put forward? Will you return it?

    Heather - September 28, 2015 reply

    If the feature doesn’t fund, no money is taken, so there is nothing to return.

  • Gary Nunes - September 25, 2015 reply

    I suppose I sympathize with LiveCode’s economic problems.

    I must say though that when I read about this latest “scheme” an old (somewhat famous) National Lampoon cover came to mind. The one with a dog and a gun pointed at its head. The caption: “If You Don’t Buy This Magazine, We’ll Kill This Dog”.

    I know, I know … the analogy is imperfect. Still …

    Anyway, I’m one of those programmers who likes to study and “collect” different programming languages. It’s fun and enlightening for me, even if I never use them professionally. When I first learned of LiveCode (RunRev) many years ago I was intrigued. Over the course of years I’ve spent lots of money on my LiveCode curiosity (pre community version) most recently dropping $500 to secure two years of licensing and a license lock-in of $299/year thereafter. I’m not sure this will continue beyond the two years given the recent changes in licensing and this latest “Feature Exchange” mechanism.

    I’ve programmed professionally in many languages, including Pascal, C, and C++. Most recently I’ve made money programming in Java. In all such cases the economic model was:
    – Buy the programming product initially for some cost.
    – Buy upgrades at some other cost (less then the initial cost).
    – Should you choose not to upgrade the product it continues to fully work (you just don’t get the new features and you may not be able to program to current platforms).

    For example:
    IntelliJ IDEA (a very powerful and sophisticated Java IDE) sales a personal (one developer) license for $199. If you already have a license you can upgrade to the latest version for $99 (commercial licenses/upgrades are $499/$299, respectively). They also have a free community version. With all such versions you can write any kind of application you want (subject to the limitations of the version). When a new version comes out you can choose to upgrade but, if you don’t, you can still use your existing license to continue to do whatever you want, including develop non-community applications (if it’s possible to do so without the upgrades).

    This was the direction I had hoped to see LiveCode move toward but that does not seem to be happening. If, for economic or other reasons, that’s not possible well … best of luck … but you may not be seeing any more of my money.

    Time will tell.

  • Stephen Ezekwem - September 26, 2015 reply

    I have read all the comments and response on the ‘Feature Exchange’ just launched by LiveCode, not wanting to sound like a hoarse voice bashing LiveCode for trying to extract every last bit of cash they can from their user base, i will seek to proffer my ten cents to Live Code and all here on a change of tact on the part of everyone (Live Code and her open source developer community).
    Firstly Live Code’s incessant reliance of crowd funding every bit of platform function will be their ultimate downfall and the major reason businesses are reluctant to get on board as it makes the LC platform look immature and Live Code not serious. This is speaking as a power user, subscribing to a pricey LC Business license, and having single handedly successfully introduced the LC platform as our go to development platform. The reason for this was due to the Rapid Prototyping and Development life cycle using LC. The achilles heel we are now faced with is so serious we are now looking to on-board QT development platform for our serious development and relegate LC to the background as simply a rapid prototyping tool to test out ideas. Why are we doing this?, regretting the total embrace of LC and now reverting that choice?, Live Code lacks a huge body of critical functions and libraries that allows working with different platform objects accessible (IoT, GIS, Numpy like math function, GPIO/PIN communication, etc), comparing with established scripting development platforms like Python, Live Code leaves you begging for objects that would have made your life a lot easier but does not yet exists in Live Code.
    The way out on this?, understanding Python has a great user base and supporting community more than Live Code does, LC should review the Python business model (which resembles the meta-card model) and concentrate on implementing processes that helped that platform (no shame in that, every great platform does this) and concentrate on creating the core libraries/functions, that are found in these other platforms, as part of the core Live Code engine. The objects advertised in the ‘Features Exchange’ are objects any developer expects to be as part of a platform object, to charge users a further fee (albeit in the shape of crowd funding) will be the death kneel of this platform.
    The Live Code open source developer community has to pool together and make their widgets/extensions, which they currently sell for a fee, a part of the Live Code installable functions/libraries for free (both open source and business license users), and on the part of Live Code, it is obvious you do not have or can not afford more developers to work on the Live Code engine, why not come to some kind of deal with these independent Live Code developers who have built great extensions and incorporate that as part of the Live Code engine?. How would these be monetized and benefit everyone (open source developer and LC)?, simply copy how Python foundation has solved this, iterate and implement their model as it has worked great for them. Get in touch with a university, like your already signed on Bringham Young University, and have their computer science department partner to create open source plugins for the Live Code engine, which will be free and allow the institution to make a name for themselves in this space (other universities have done it for C++, C, Python etc platforms).

    Lastly i am sad the meta-card lineage seems to be withering away once again, like it did in the 80’s/90’s, albeit in the present day shape as Live Code, hence the fundamental question — is Meta Card a well rounded programming/scripting platform or is it just a seriously flawed platform with it’s pioneer relenting to let go of this dead horse?. Looking around this scene as a younger generation contrasting the old timers in this space, who are surprisingly still the major power users/developers on this platform, why would we younglings still skip Live Code platform to go onto learning to program in Python or C++/C?, simply because the Business Community trust the enumerated platforms and use that in surporting their business operations, therefore the need to employ youths with the skills to work on these platforms. Simply put, no matter how great and cross-platform Live Code is, it lacks a huge bag of libraries and functions that would make any serious business consider it as their go to platform (i know there are listings of companies like NASA, Lufthansa etc using Live Code, none of them have made it their go to platform for the reasons i have mentioned earlier).

    I rest my pen here as this has been a very long write up and i seriously doubt anyone will even afford the time to read this, but this is my humble submission from the unbiased perspective of a reasonably sized manufacturing business with global presence who currently use Live Code now as only a prototyping tool, from where it was a defacto development platform for us.

  • Cliff Richardson - September 27, 2015 reply

    I am a long time user of LiveCode and Runtime Revolution, as it was known in the past. I have been a paying licensee was more years than I can remember. I have supported the crowdfunding to make LiveCode open source. I have paid for the Create It with LiveCode course. Most recently, I’ve purchased a 2 year Indy license to lock in the $299/year license fee. I have done all of this because I believe in and enjoy using LiveCode. I have licensed it so that I could support the development of LiveCode and make it thrive, now and in the future. I am more of a hobbyist and I also wanted to keep my options open for the future. But, in reality, I could have just as well used the open source version of LiveCode.

    I am disappointed that the folks at LiveCode felt it was necessary to point out to its paid licensed users that “money does not grow on trees” and “there is not a pot of it at the end of the rainbow”. I hope to think that most, if not all, LiveCode licensees are aware of this. The tone was very condescending.

    Additionally, it seems you feel that we are asking for something in exchange for nothing. In addition to those things that separate the Indy license from the open source license, I thought that my license fees were paid so that LiveCode could move forward and compete with other platforms. Here are a couple of quotes from emails from LiveCode earlier this year when you were marketing the new Indy license and were explaining the general change in the license structures:

    06/29/2015
    “…we are adding even more value to the product as well as continuing to provide high levels of customer support…”

    07/09/2015
    “When you purchase an Indy License, you take a step closer to your own app dream and you make it possible for us to keep creating the product you love so that other people can create it with LiveCode.”

    I understand that there is a fine line between critical updates to LiveCode and “nice-to-have” additional features. I would have thought that some of the things listed in the Feature Exchange program are critical to the future survival of LiveCode as a platform (especially for the Mac version). I will give you one example: Mac 64­-bit Support – In the description you state: “In order that LiveCode keep pace with Mac development, it is important that the engine be transitioned to 64-bit on Mac”. I think that this would be one of those things that you would work on as a part of your overall plan for LiveCode. I am assuming the while you feel this is important, it is not important enough. Also, I am not sure if LiveCode Indy and Business licensees who Mac users are a large enough group for you to do this or not.

    Sorry, but I could go on with this for a longer time so I’ll just add some final thoughts: 1 – I am not opposed to the Feature Exchange as a method to help fund “nice-to-have” additional features. 2 – I have always received great, prompt service for LiveCode whenever I have encountered issues with my account, etc. 3 – I want LiveCode to succeed as a platform. 4 – I don’t expect you to do for free.

    Diarmuid - December 9, 2015 reply

    I agree with you. I am using LiveCode for all sorts of obvious reasons but I found that snark unbearable. I participated in the kickstarter and had a commercial before that and have now signed up to get a continuing license at the reduced rate. And we all know what it’s like to be running things on a shoestring.
    Giving me sarcasm about leprechauns is about as opposite to helpful as you get.
    It probably makes a lot of sense to you but I feel slightly degraded by it.

  • Gareth - September 29, 2015 reply

    Hard luck people, the remote debugger didn’t fund so you won’t get it in your toolkit but you’ve only got yourselves to blame! If only you’d donated and paid even more than your subscription fee then you’d have had it. Geez, I liked the idea of LiveCode but it’s proven to be just an expensive toy from a company that can’t afford to maintain it. I’d suggest learning something like … ooh let’s say Javascript that you can use anywhere for absolutely zero, learn it from the massive amount of free (and paid) learning materials out there, get extremely high paying jobs/contracts whilst the largest software companies in the world are investing 10s of millions to keep it moving. Buy an IDE like WebStorm for around a £100 a year (trust me they don’t come back to ask for donations for features you’ve already paid for) and use brilliant frameworks like Angular, Meteor, Ionic etc to make it sing. Run it on any platform you could dream of etc etc.

    The only real way you’re gonna see LiveCode hit critical mass now is for them to send it fully open source and fund their company on services for business and enterprise customers like every other development technology is doing. This vision they have to grab cash quick is killing any chance their tool has of hitting it big. It’s a very short-sighted approach and will alienate their customers causing even existing revenue to dry up in the future. I said it in a previous comment, they need to seriously rethink this. I really feel sorry for those who have shelled out their hard earned cash and been treated like this.

  • Ancient - October 5, 2015 reply

    I have a dream of resurrecting HyperTalk as the highest level language ever invented… with the code “compiling” to Python!

    Now having said that, I’m not entirely sure that I haven’t just cast pearls before swine.

Join the conversation

*