How to Solve Major Platform Issues with Limited Resources

Hi folks, I’ve been cogitating on platform issues like this one while busy: 

https://getsatisfaction.com/eternagame/topics/old-user-login-dividing-by-zero-sloooooooooooooooooooo…

I have this weekend before getting pulled back under the waves of life again. Since I am short on time ( along with most of us who love this project but aren’t sure how to fix these issues ), I am trying to think of ways to solve this problem that take our collective time crunch into consideration. 

Just brainstorming options, perhaps pursuing all of them is best, perhaps focusing on one, I don’t know. But hopefully this makes a step forward in considering what we need to do to make our platform usable again ( my main issues being the 30 second login / page load times & overheating ).

For what it’s worth, if I get no other input suggesting otherwise, I expect my approach to be pursuing all 4 of these ideas according to my own timeline, which is likely haphazard and inconsistent at best. Nonetheless, I will do what I can, and I thank you for your help in any manner, whether expressing support, pointing out issues, or providing concrete information / materials that move us further along.

1. Fundraiser
Rhiju has in the past expressed interest in using something like the experiment.com crowdfunding platform to support development costs here. 

Pros

  • Can enable feature development and bug fixing currently outside of budget scope.
  • Takes pressure off of existing dev & lab teams whose resources are already spoken for simply in day-to-day operations.

Cons

  • If the developer[s] chosen after raising money do not deliver, then we have lost time and money in this venture. Therefore, hand in hand with fundraising goes a proper vetting process for anyone accepting those funds. e.g. The awardee of any paid contract to develop features, fix bugs, or transition the platform to HTML must provide preliminary evidence of ability to execute, and should be subject to termination at predetermined milestone intervals, since even with fundraising we will still have limited resources.
  • It has also been suggested to fundraise for things like eternacon, however I want to state clearly and loudly that IMHO crowdraised funds are most appropriately spent on concrete contributions back to said crowd. Therefore I am not in support of crowdfunding for conventions, unless something tangible and concrete at that convention will be accomplished. 

2. Player Dev
We already have player devs working in various capacities. Perhaps a codification of steps to get involved would help. For example, I have only an amateur ability to dev, and would need clear instructions on what is the current technology stack, how to access APIs, what is the current test server / dev environment situation, etc.

Pros

  • Player Dev is already in effect in principle.
  • Making the wiki page codifying the process is not too time intensive.

Cons

  • Existing devs & player devs would need to participate to illuminate the landscape.
  • The actual expectation of resolving major platform issues with volunteer labor is something which should be regarded as a great gift and surprise bonus, not a fait accompli.
  • The effective quality of volunteer labor may by definition be below that of professional execution, unless someone with the appropriate skills takes pity on us and sees that the fate of humanity and the future of medicine could rest in their hands… :slight_smile: I’m not entirely joking here. But as much as we all love and understand the importance of this project, still our own survival and life duties take precedence, and it is a fact of life that many who are most competent, are most busy.

3. Partnership
There are other groups of professionals with aligned interests in citizen science, medicine, and computer science. Recently the Aarhus citizen science gaming team ( Quantum Moves of scienceathome.org ) reached out to their user base for input on their next game design. I looked into their team, and found that they appear to have an appropriate amount of professional resources for development. I am not sure if this is the same institution where Cody Geary was studying, but if it is, perhaps he would be willing to assist in introductions / discussion.

https://www.scienceathome.org/about-us/team/

It leads me to wonder, perhaps they or others like them may on occasion have a surplus of development resources, and might see value in collaborating and helping Eterna get over one or two major hurdles.

We could not expect another team to take on all of our feature and bug needs, so this sort of thing would be about a targeted mission to fix specific critical path issues, like the 30 second login / page loads, perhaps resolved by the general transition of the platform to HTML. 

Pros

  • This could strengthen the concept of a global citizen science effort in collaboration with academia, such that the whole world gets more excited about what we can do together for the sake of science and medicine.
  • This could offer other citizen science projects the ability to be associated with a foundational and long standing project like Eterna, thereby bolstering their own missions.

Cons

  • As with bringing on anyone to do dev, proper vetting is still required, to prevent frustration on either side of the aisle. In other words, we must not seek and accept just any collaboration, but rather carefully choose one which has a high likelihood of success, so as not to waste anyone’s time.
  • Professionals are busy, period. Therefore even though they may wish to help, this may be difficult to arrange due to either funding or time resource issues. 

4. Hackathon / Reward Bounty
One way to solve issues rapidly and for a fixed cost, with guarantee of only paying for a successful delivery, is to hold a hackathon or other open contest in which there is a reward bounty issued to whoever solves the problems at hand. 

Pros

  • This limits liability of paying for services not rendered properly, by stipulating reward is not issued until viable solution is in hand.
  • Increases visibility of and participation in the mission in general.
  • Adheres to Feynman’s original principle of science explicitly needing new blood, new brains, new ideas and ways to solve a problem that may escape the few people currently working on it.
  • While hackathons are most effective as on-site time-limited events, I explain the cons of on-site below. Therefore, note that the pro approach for our particular situation is likely to be not an on-site event, to reduce costs and soften the participation requirements.

Cons

  • Requires organization - a time commitment I will have to think about before being able to commit to. However, I do understand the moving parts in such a venture, so I will consider organizing such a thing, or at minimum providing consultation on the major required points, as I did with the first eternacon.
  • The quality of deliverables must be properly vetted before rewards are issued, though at least due to the inherent structure of this type of thing, there is no expectation of payment if issues are not truly resolved.
  • These sort of things are most effective on-site. I can potentially help set this up in the heart of the beast ( silicon valley ), but I am not sure I myself would like to be on-site to manage the event, and there are of course major costs with doing on-site that would require further funding or negotiation for donation. Not impossible, but also not something I can guarantee that I myself have time for. 
  • IMPORTANT NOTE: If you want to step up and do this, that is great, but if you have not run a large scale ( 50+ ) hackathon before, you will need explicit instructions on event coordination ( and accommodation considerations if on-site ), as well as how to structure rules and expectations of participants. I can potentially help advise, or better yet please do find clear advice from someone else who has run these kind of events before proceeding. I myself have only peripheral / supportive experience helping run these events, and have not been a sole organizer before, though I am aware of the basic moving parts, and have colleagues I can consult with if necessary. 
  • This sort of event requires much tighter organization than a normal convention to keep everything running smoothly, and has much higher risk of failure if not done correctly. This sort of event also tends to draw in press attention, and we would be asking for the participation of new people who are giving of their time and skills. It would require preliminary fundraising, and be like an intensive player dev session, in the public light. Therefore, I would only proceed with this if it truly looks like a good fit, with a concrete agenda.
3 Likes

I’ve been fairly doubtful of the hackathon / bounty option, and ran in my mind an imagined attempt to arrange such a thing. It gave me one idea which may actually be interesting to pursue, that could garner interest from a bleeding edge tech crowd, and also prepare the eterna platform to be robust and potentially last the next 5-10 years:

3D VR/AR

Virtual and augmented reality is finally going mainstream, and I’ve been saying for a while that you can forget web 2.0 design, what’s next is web 3D.0. Vineet’s 3D prototype for eterna, while very different, is truly the future. Keeping in mind that myself and many players see huge value in the 1D and 2D forms, of seeing raw sequences and also the current visual 2D format. So these would also need to be views, like filters or render options in foldit. So please know that I don’t mean only the 3D molecule. 

Anyway, the idea here is that there is a lot of interest in making games for this emerging AR/VR market, and as long as the tech chosen is also browser deployable ( unity? I don’t know all the specifics ), then we can have a platform which is robust across device types.

WebGL is becoming more ubiquitous in browsers, so I think if we think ahead, perhaps HTML is not even the ideal transition step. Perhaps envisioning the UI to integrate all 1D/2D/3D/4D? modes of molecule design into a 3D deployable environment, will get the most value for our limited time and money resources.

I don’t know if anyone at SVVR would be interested, but they hold regular meetups in silicon valley for any locals, to get intros to the tech, and you can also check out VR meetups in your local area to get in touch with indie 3D developers who may be looking for a partnership opportunity exactly like this one.

Still, it depends on how many hours are required for the task, whether anyone could do pro bono, or how much it would cost us to reward or outright hire for this sort of approach. Again, I am just brainstorming here.

But as I will explain momentarily in my next post, I have not been able to play puzzles or do labs significantly in going on 2 years now due to slowness and overheating my machine, and at the time I took for granted that there was a black box of development going on that did not need assistance. However now I have come to understand that the resources for the project ( correct me if I am wrong! ) are all allocated simply to daily maintenance of project overhead, and that we do not have money or time to fix these issues.

Or perhaps there is some plan on the horizon that I am unaware of that will be addressing these issues, in which case please do let me know and I will not bother with trying to get these things resolved, and I will be most happy when eterna is again usable for me. But I do not have the saintly patience of those of you left, who wait for pages to load incessantly, I just don’t have the tolerance for that much frustration.

I would even be in favor of a standalone application over the current situation, if it meant 1-2 second max load times on any given page.

So anywho, this comment is to mention that a 3D transition ( with inclusive 2D etc. modes ) may offer the most longevity out of any development, whether volunteered or paid for. As well as the added bonus of a vibrant and very passionate community of international 3D VR/AR developers who see the rising wave on the horizon, and are already prepping for it anyway. Perhaps we can find aligned interests, in this talent pool.

[First a note- unity has released collabaration mode, which while it is much more peer to peer than github, it could evolve into open source support]
My main problem with unity is that it is just not costumizable enough from a player’s perspective, unless you allow to load scripts. I mean, in html you can just run document.getElementsById or jquery and you have full control over the look, position, and marking of all of the bases. In unity, while technically possible, I think loading scripts (and creating them) to run code is much more complicated, and could maybe be dangerous in terms or security (or actually it might be the same as right now, or maybe there are obvious ways to restrict it) (as for the complexity, I could be wrong. If designed correctly, maybe we can just make it so players open unity, create a script there under a specific tamplate (which unity supports), and then thy simply upload it into the site. I will look at the practicality of it tomorrow and edit this comment or reply to it.).
However, (as someone who havn’t played the 3d demo), why should we move into 3d in the first place? Does it really provide specific pieces of information in ways that 2d can’t? I’m tring to think about eyewire and foldit, but the reasons those are 3d don’t seem to fit eterna’s needs imao.
Also, we need to consider that:
 A. html is much easier to learn and to manage an open source project on (currently).
B. the movement to html 5 would be easier than to unity.
C. html5 isn’t the final version at all. I believe that there will be ways to do 3d in html if needed, whether with a library or as part of the native javascript.

collaboration mode sounds cool, thank you very much for sharing!!

Unity not being as customizable is also good to know. Ideally the platform would get the required mods to the long wished for base marking, and that or other test mods could be done on local or hosted test servers, per the player dev initiative.

When you say “full control” over the base markings, do you mean within existing parameters? Or do you mean you can add instances of multiple base marking colors? Is this already explained in detail somewhere else? Or does anyone recall the related forum post[s] requesting or depicting this feature? I think I have seen this requested at least a couple times, and if there is a good workaround that is not already posted, I know some of us would be very glad to know more about it, if and whenever you have time to comment. No rush at all, I can’t even load pages right now anyway. :slight_smile:

Thank you for the note that it could be a security risk to run scripts in 3D instances - how does this compare to the current risk of enabling flash, particularly out of date flash? I know I keep WebGL disabled as a default just because I don’t know enough about the technology to know what is or is not problematic in terms of other people’s deployments. I wonder whether there are also potential problems in enabling scripts only for the eterna domain, and not for any other? Does that also come with any particular vulnerabilities? And if you are busy, I can look this stuff up later, so please don’t feel like you need to explain unless you want to. I’m just curious. 

Thanks for considering possible aspects of this option, whatever you can share at your leisure will be appreciated. 

Here are some, probably not all, of the materials on 3D folding at Eterna:

Discussion
https://getsatisfaction.com/eternagame/topics/why_do_we_only_fold_in_two_dimensions

Demo Announcement
http://www.eternagame.org/web/news/4911883/

Development Ideas
https://getsatisfaction.com/eternagame/topics/your_gaming_ideas_for_our_3d_rna_game

I don’t know whether the above will explain entirely why 3D is valuable for RNA folding - and the only true test of that would be using the system and reviewing the data. Hypotheses as to why may include similarities to FoldIt’s gains in human visual crunching of 3D patternmaking for complex molecules ( proteins ), understanding differences between very similar sequences, any manner of pattern recognition / data sifting that emerges from the noise. Most intriguing to me off the cuff is the simply mechanical aspect of tiny nanomachines, and seeing what shapes larger molecules form in 3D may show where hooks and latches are, etc.

There are impressively intuitive efforts already to analyze existing lab data and determine the landing strips, or sticky joining parts of the sequence, and their respective matches. I’m not up on all the lingo, but the idea would be to supplement that pursuit with an additional method of pattern recognition - as basic as 3D block visual logic tests for primates figuring out which shape block goes in which shape hole. Our brains were born to do this, and this is why one can play Foldit intuitively without knowing anything at all about a protein. Or maybe the 3D platform would add nothing of value, or worse yet even detract from the status quo - certainly it is good to think about all of that before proceeding, so thank you.

I know myself and others have in the past expressed a wish to keep 2D as a view option even if moving to a 3D interface. And there are ways to implement 2D information running on a 3D engine, whereas the reverse is - I had thought - not the case. 

This makes your suggestion about implementing 3D in html with Javascript interesting. Actually now that I think about it, that has been very useful in the volumetric environments which are well suited to rendering of molecular scale objects just using straight up math equations. I am very glad you mentioned this. There is also some other reason I wasn’t sure about Unity, and I don’t recall whether it was policy related or platform related, so I’m definitely not assuming this is the best option. Just one it occurred to me to consider, with an intrinsic request for any other suggestions that would be an improvement.

Considering the extra time costs of building out a whole 3D platform vs. an ideally simpler html transition is also very important. The main thing I consider here is the longevity of whatever work is done - will the html version last for at least 3-5 years? How is the market for 3D gaming options in the VR/AR space going? From what I’ve seen, which is certainly not everything, there is room for, and even a need for a citizen science type game to exist in that market / space. There are many great indie efforts out there, but nothing so official as eterna. I imagine it won’t be hard for Foldit to deploy to a VR headset if they aren’t already in progress with that. Similarly, if Eterna’s core engine were 3D compatible, including the 2D view option, then we could deploy to a market space where there are many users hungry for content / entertainment.

So I see 3D deployment as the more long lasting investment, even if the initial money or time down is a little larger, the potential gains and security of being in a leadership space with technology is worth considering. Even if the 3D deployment is only a rendering of the 2D maps we are used to, without any 3D molecules at all, it may still have more longevity as a platform. Perhaps the best compromise is the 3D Javascript suggestion, but someone who knows more than me would have to comment. One library I know has had some success is called three.js
https://threejs.org

I don’t know if this answers your questions. I very much appreciate your thoughtful and serious reflection on potential issues - I don’t know enough depth about some of these things to know the best path forward myself, so I am depending on anyone who does know to please help us make good decisions. 

At the end of the day, my goal is to be able to log on and nav and submit puzzles, labs, data, comments, anything within ideally 1 second or less. And I could probably stand 1-2 seconds if absolutely necessary. But when you click through as many pages as quickly as one must to do proper research and contribution, I really am in awe of those of you who have had the patience, and not had your computer overheat.

Thanks again, and please do take your time in any response, I am in no rush.

1 Like

To comment on the fundraising option, I just saw this happy news:
http://www.reuters.com/article/us-buffett-charities-idUSKBN19V2QY

And going to the gates foundation website found these grant resources:
https://www.gatesfoundation.org/How-We-Work/General-Information/Grant-Seeking-Resources

It doesn’t appear that any of their current grant opportunities apply to us, and they have no active grant challenges, but perhaps some future opportunity will be available and compatible with Eterna’s mission.
https://www.gatesfoundation.org/How-We-Work/General-Information/Grant-Opportunities

In any case, I am logging this info here for future reference.

When I said it isn’t secure I meant that a full C# file might be dangerous; IDK IF THE CURRENT JAVASCRIPT SCRIPTS AREN’T, and maybe there are restrictions to be made.
I need to check some stuff on unity before writing a real comment. I should response in like 2 hours or so.

I found that there is a way to call EXISTING unity functions via html/js, but I can’t get it to work myself. However we willl need to have the building blocks already in unity for the js scripts to call.
When I said that html will have 3d at some point, I forgot to mention that there are already 3d libraries out there. Also, we could have the 3d be done in unity and the 2d in svg or something like that.

The about page lists 3 player Dev,'s, jnochol, Nando and Omei.  Let me refer to them as “Stanford” Dev,'s. I think they have access to “Stanford” servers where most of the game exists.
Omei is also a “Player Dev.” Recently, he has been the go to player to relay information to and from “Stanford Dev,'s” and lab personnel.

For the last half year or so, Omei has been working on getting the “R” numbered lab rounds into the new data browser.  Final loading of that data requires someone who can access the right server locations.

lfp6 has been working on the HTML chat software.  He has it on a new server, but it still has to go to a Flash Server for the game and lab puzzles.  He is not listed as a “Stanford Dev.” but he probably should be.

Both Omei and lfp6 are very busy and fit in their Eterna projects whenever they can.  

If I have this wrong, I have confidence that they will let me know:)

My impression is that a lot of the software work can get stalled on the Stanford side mainly because I don’t see much on the player side. Masterstormer is working on scripts and chat, but his time has been limited also.
With the data-base maintenance and HTML chat as priorities, our two most experienced player Dev.'s don’t have much time to mentor others.  

Most of our web site is already html4. I have read where HTML5’s canvas element can do 2D or 3D graphics.  It is supposed to be able to handle WebGL, if the end user has specific hardware to handle the graphics.

Our 2D graphics can’t be that taxing on processing power. With the sequence string and dot-bracket notation as inputs, it doesn’t seem like it would be difficult to pair up 85 bases.  

I hope any players reading your post here will let us know their thoughts, experiences and recommendations.
        

@LFP6, please tell me where I was wrong here, because I am sure I was.
I think of the chat as a milestone in the open source-ness and revamping of eterna (I think I inherited it from lfp6, not sure though). Once it will be done, not only will LFP6 (and I, although I am less bound to it and am less significant than him), but also it will be a first step toward open source and player development.

Another thing is that it’s not that other people objectively can’t help in this, it’s that simply they think they can’t, they didn’t think of it at all, or most commonly, they can’t yet and won’t be simply because scripting isn’t a natural skill like orginizing eternacon, and there isn’t a progression for scripting, so the learning curve either is or just seems too steep for most people to get to a point where they can really make a difference.
This is one reason why I really want scripting chats to be a thing again. Or maybe even add a scripting progression? I see some potential ideas for “levels” to learn certain booster or site related concepts. Or maybe we could have (weekly? daily? permenent?) coding challanges related to the site, such as “In a switch with locked bases, the base paired to a locked base can be colored for certain. so can the one paired to it in the other state, and so forth. make a script that marks and colors bases that are certain by the locks”. I need to think about it for a while, it seems like something potentially pretty great.

1 Like

Thank you for sharing your thoughts and information. I support in principle anyone who wants to code or help others learn how. I used to have this level of enthusiasm for it. However, I was thinking, it has actually been going on 3 years now since I have been able to use Eterna puzzles or labs without my computer overheating, or slower and slower load times for everything from pages to coloring multiple nts at once in a puzzle. And my computer was new at the time! While being a laptop, it does have 2 processors and 16GB ram. If this platform is to be egalitarian, surely the bar of entry must not be higher than that? Who can buy a new top of the line computer every 2 years? That does not seem reasonable to me, and I am actually in the industry. I am not saying you suggest this, just that this game ought to be able to run on the average or above average but not supercomputer system.

The other issue I have seen emerge, you describe a bit, is that player dev efforts take time. Furthermore, in finding myself spending far more time on this project than I have time for ( I’ve spent approximately 24 hours in the last 2 weeks ), I have serious concern about leaning on volunteers for work which ought to be done by paid professionals. Now, I am still in favor of volunteering, and happy for anyone with the time, interest, and skill to participate in coding. But as I explain above, we cannot expect major platform issues to be resolved by volunteers - we can only be very happy and grateful when and if they are.

Therefore I have changed my own tactics, in feeling perhaps the way to get the platform overhauled is to get funding and hire a proper person or team to do so. Nonetheless, I do not close the door on player dev, and as it eeks along, I am still very grateful for it.

This goes hand in hand with my opinion that while it is nice to be able to apply custom scripts to the interface, I do not think this is a sine qua non of the project, because most people do not code. I take a cue from Foldit, which has been immensely successful in integrating player side scripting options into the Cookbook UI, and offloading major feature dev to the platform itself, not expecting users to do this code work. I mean, it is a *game* not a homework assignment. And while some are fortunate to have time free, others have families, work, illnesses, etc. that mean the meager time they have to volunteer should not be wasted doing unpaid labor.

As I have said, I do believe Eterna is not deliberately exploiting unpaid labor like some crowdsourcing platforms I can think of… nonetheless, I can no longer advocate for solving major platform issues solely through player dev. Again, I would not wish to see it shut down, because it offers many good things. However I have been with this project since its inception, seen the ebbs and flows of player participation, seen the general bandwidth ( or lack thereof ) of the internal and player devs, and knowing it is nobody’s fault, just a fact of distribution of energy, I am thinking about this from an energy standpoint. 

If the molecule needs x amount of ambient energy in the environment to catalyze folding into the proper shape, and we all sit there staring at it unfolded because there is not enough energy, frankly barring a miracle of someone bumping into the table or shining a random flashlight at it, I just don’t expect things to change around here without changing our ambient available energy.

This is where fundraising, partnership, etc. come into play. At the same time, I do include player dev as an option to pursue, and your comments are helpful in getting that option fleshed out more clearly, so I am very grateful to you for your comments. I do also want to state clearly that we cannot expect a path of *only* player dev to net us the results that we want.

So I am very grateful for all player dev efforts, and I don’t decry them. I only state, I have not been able to meaningfully engage with this platform in the last 2-3 years probably because of flash, and some other mishandling of memory - I left eterna loading a puzzle where I had cancelled the script but left the page open in Firefox for an hour, and when my computer started overheating to 74C without even having the window up, I remembered I must be logged into Eterna with my lap cooking like that. I checked my activity monitor and found memory slammed without any dips. Closed it, problem solved.

I simply cannot get into scripting for eterna if I can’t even nav and play the game normally. I have been relegated to things like writing and cheerleading, which are also great things, but certainly not why I loved the game in the first place. The fact is, for me, and I understand not for all others, that if I am not able to nav and play the game due to load times and overheating, I cannot participate fully, and I doubt I am alone in this. 

p.s. for those who are interested in holding classes, here is the wiki page I made when we so hopefully launched eterna university so many years ago, with classes archived for those who wish to review, or perhaps schedule new classes:
http://eternawiki.org/wiki/index.php5/EteRNA_University

1 Like

Thanks for all the great thoughts Elves. I’ll pitch in my two cents and the insight I have into existing plans for the future. This will be my general thoughts and reply to the initial post, anything targeted towards a specific reply I’ll comment on the reply.

***DISCLAIMER***: This post includes my current understandings, observations, opinions, and tea leaf reading. Some portions may be arguable, flawed, or downright false. Correct me if I’m wrong at any point and take everything here with a grain of salt.

So, it looks like what you’re talking about here is less about resolving the issues themselves, and more about how we can gain additional resources, in the translating to gaining developers and their time/skills. With this in mind, some thoughts I have that follow all four options you initially presented:

  1. For a closed-source project, of course you need to have some form of dedicated team. But even for open source projects, all decent sized, successful projects I’ve seen have a core team, volunteer, paid, or a mixture between the two. These people are able to dedicate a significant amount of time to develop and oversee the project. Both pieces of this are important: there needs to be consistent effort made to improve the project technically and to make sure it stays on track (including the quality of the code, the quality of the work, the direction of the project, standards, maintenance, technical administration, organizational administration, etc).

  2. I would strongly agree that Eterna needs a full-time (, paid, experienced) staff. Relying on volunteers leaves a project at the mercy of limited time, hectic schedules, outside responsibility, increased likelihood for burnout, and a limited pool of experience (“you get what you get”). It is not uncommon to have a paid team even for (F)OSS projects. Often, this is supported by some kind of “Enterprise version” (we had talked about licensing EternaBot at one point iirc).

  3. If we have paid staff, of course whoever is hired must be able to deliver. If there is a core team at all (there most certainly should be), this is still true for those members as well (while perhaps to a lesser degree because there isn’t money on the line, they are still by definition a trusted member of the project and so must be able to fill that role). It is part of the nature of having a team like this (in business, personal projects, or anything else) that you have to vet those who join.

  4. We do have to be careful about growing to big, too fast. It could be just as detrimental for us to raise a few million dollars in three months and hire a staff of 10 people with limited structure in place as it would be to stay on the track we are on now (it may not be obvious, but there is some movement). Now, is that likely to happen anyways? Probably no. However, the concept is still the same. It’s great to have large visions, but we need to make sure we stay grounded and make reasonable, logical steps. Completely changing the core of Eterna is not necessarily a good next step. Over time, maybe, but something like that should most likely take time, or else we run the risk of losing control ourselves. We have a lot of room for improvement and growth with what we have now.

  5. Now about that “10 people” - that’s only partially true. We don’t just need 10 programmers. Do we need programmers? You bet. But if you drop in 10 programmers to work on a product, you’ll get a great tech demo in return. If we’re making a choice, the first thing we could use is a couple programmers to get the Eterna infrastructure back on its feet. But after that, we can only go so far without people (specifically professionals) in the roles of graphics, UI/UX design, game design, software architecture, system administration, audio, qa, and so forth. This should be the eventual goal. Looking far out, sure, but I’ll put it out there as food for thought.

As for the specifics of the individual ideas you presented:

Fundraiser

To some degree this is an “obvious” solution. We need money, so we ask for money. :slight_smile: Of course it is already possible to donate, but there are many crowdfunding platforms out there that could give us increased visibility. That being said, you can’t just expect the money to roll in. As with anything, in order to get attention there needs to be some relatively long-term attention for advertising. Expecting something to go viral because you want it do doesn’t work, people have to know about it in order to share. On top of that, there is a fair amount of work that has to go into a campaign, from the initial prep (research, promo video, goals, rewards), running it (staying in constant communication with backers, posting updates, etc), and following through (handling the funds, sending out rewards, actual execution, etc).

If this is of interest, it’s really important to do a Google search for “successful crowdfunding”, or even narrow it down to a specific platform (“successful kickstarter/indiegogo/gofundme/etc”). Medium (what I would describe as a more professional blogging site) is another great bet for somewhere to look for thoughts and past experiences. Definitely try to find posts by groups/individuals who have led successful campaigns, and also those for whom it hasn’t turned out so well.

I’m also curious if it would be worthwhile for us to register with places like Humble Bundle, Amazon, Goodsearch, Bing Rewards, etc that allow you to contribute to an organization through either donating a portion of your purchase, using reward points, etc.

Player Dev

I think better instructions for how to get involved would be a great thing, and is definitely is something I’m attempting to keep in mind as I’m developing things myself (ie, creating a thorough readme in the chat repository). Consolidation of info is a great idea, and I’m surprised that it hasn’t come up before. There is definitely a lot that could still be done, and I’d definitely be up for helping with that. However, I don’t think I have the bandwidth to “run” this myself, unless I need a break at some point and this would be a good thing to work on.

There are a couple issues that need to be dealt with though.

First off is the limited nature of the currently available projects that can be contributed to. Let me run through the projects currently on GitHub (I’m not including things like scripts, as we’re talking about the platform itself, not user projects). See the first comment on this reply for more details (I opted to put it there because there’s a lot of info that would make this way more bloated than needed).

  • HTML Chat: I’m willing to support work with the existing code base, but there are sustainability issues which a) require a rewrite and others that b) stem from the current state of chat protocols which inherently limit what we can do or make it more difficult, with the possibility that we may eventually change

  • Data Browser: While certainly open to improvements, the code is relatively complex, and a rewrite could improve sustainability

  • eternadata: This is quite limited in scope

  • Mobile App/eternagame: This needs to be rebuilt, and we need appropriate store credentials set up

  • Eterna Script Interface: The repo has old code, and I’m not sure if I even want to suggest reviving it - it needs to be rewritten

  • Eterna Public: Not actually a project

As far as future projects:

  • Standards: Lots of details needing coordination and/or executive decisions, and possibly various pieces of analysis and design work

  • Development Tooling: Needs setup and decisions on which products to use

  • Write/Rewrite Everything in Vue: This is more meta than anything, being mostly covered in other projects, but the point is this involves rewrites and planning

  • Base Libraries and Templates: Relies on previous bullets

  • Website Frontend Rewrite : Somewhat relies on previous bullets, requires up front development, eventually requires fair amount of design work

  • Website (API) Backend Rewrite: Relies on frontend rewrite, requires up front development

  • Game Rewrite : Also somewhat relies on earlier bullets and requires up front effort, but also has a lot of questions regarding implementation; eventually requires significant design work

  • Wiki: Requires manual changes, design discussion, customization…

  • New Forums and Bug Tracking: Need to determine how to handle old content, infrastructure decisions, infrastructure setup

  • New Community Features: Only a very rough dream

  • Gamification/Incentive Overhaul: Also a rough dream

  • Our Own Energy Model: Another dream

The other issue is the whole situation with official roles, dev environments, responsibilities, etc. For open source contributors, this isn’t quite as much of an issue, as they just basically submit code changes. However, it still winds up creating a sustainability issue. What are the responsibilities of the core team (I’d argue they make directional decisions, run the infrastructure ie servers and the Github, and generally run the software and development process)? What’s the process and requirements to become a core team member (especially since you gain fairly deep access)? How will code reviews and testing work? Who makes decisions about designs, features, etc? How does code get released? How are system upgrades handled? What dev environments will actually exist?

Partnership

If an existing group is willing to help us out, I think that would be really cool, and could be potentially beneficial in sharing resources, strengthening philosophical ties, and cross promotions. However, there is one thing I will warn about this. We need to be careful about getting tied in too closely with another organization. From what I understand, when CMU pulled out/we lost the connection there, it was quite a process to get all the rights, resources, etc transferred over. It was mentioned to me at one point that Rhiju is looking to keep Eterna as a somewhat neutral organization, available for research through many different universities and also limiting the amount of bureaucracy that has to be dealt with. IIRC Eterna Commons was envisioned to help achieve this goal. I’m not saying we should outright deny partnerships - quite the opposite - we should just consider what terms this is made under. We can’t let the overhead be greater than the benefit that we gain.

Hackathon/Reward Bounty

I think this is a pretty cool idea. The visibility and community aspects here is awesome, and getting new people on board is a huge deal in my perspective. One big issue that I see though is that in my mind we’d really want to have existing infrastructure built ahead of time, so that we’re not inheriting whatever the participants wind up providing. There are plusses and minuses to that, but that’s my perspective. Definitely need a concrete idea of what we want out of it. personally, I see this as somewhat supplemental, can’t see a clear path forward for gaining the necessary interest (I’m open to ideas). I wonder if it would be possible for Stanford CS or another university/department/organization to step up and sponsor/run/participate in it? Just a thought.

I would also like to extend this idea beyond hackathons though. One aspect we could look into is something like Bountysource. In addition to Eterna itself sponsoring work to be done (which isn’t even necessarily required), anyone could sponsor a feature they want to see made or a bug they want to see fixed, and whoever resolves it gets the money put in for that particular item. Also, there are a number of websites out there where open source projects can post requests for help, available entry-level issues for new developers, and so forth - I think we should take advantage of those.

1 Like

--------------Existing Projects (on GitHub)--------------

HTML Chat

I’ll start with mine, as it’s probably the most current, and I know it well. :slight_smile: MasterStormer is helping me to finish up some last lingering bugs, but aside from that, the actual launch of the new client is waiting for Vineet and I to have some time free at the same time, as he has to actually go and update the site code (future updates I’ll be able to control, since the chat will be simply a frame of irc.eternagame.org, which I have access to) and we need to work out the interface with the Flash game (screenshots, hiding chat, etc).

Going forward with this will be interesting though. While it currently does fulfill the purpose of replacing the Flash chat (and making improvements on top of it!), the way I’ve written this (which was what i understood to be decent practice a year ago when I built this) will become somewhat difficult to maintain. It could really benefit from a rewrite using an MV* framework (after going back and forth a bit, I’m looking at Vue for various reasons). This means some concerted time on my behalf to set up the core project/code/functionality so that there is a strong base for others to build on. In the meantime, I will still support improvements to the current code, as MasterStormer has (awesomely!) stepped up to do, but the code is just somewhat hard to work with. In addition to this, there are also a number of hacks introduced by the Flash app that I want to remove, and some additional features that I’d like to add that would allow the chat to be more fully functional. Some of this is relatively easy with things like the new IRCv3 specs. However, some specifications are still being created for other needed features, and some features will probably always be hacks. This has prompted me to look at other protocols (XMPP/MUC/MIX and matrix, specifically), and the jury is still out. I don’t know that any one protocol does what we want (at least not currently), but changing protocols is something I would keep in the back of our heads… The point being, we are somewhat limited by the existing protocol, though I suppose we could always customize the server with our own protocol extensions (I know IRCv3 and XMPP have allowances for that, dunno about Matrix), though we’d need to decide how we’d set this up (a fork of the server maybe?).

Data Browser

This is definitely a big project, and Omei has done a great job. I’m sure he would be open to future enhancement by the community. I will note that this codebase is somewhat complex - I personally think it would also benefit from using an MV* framework (ie Vue), something that we can talk about in the future, but obviously not the highest priority.

Eternadata

This contains utilities to load data into the Fusion tables (which drive the data browser) from the lab spreadsheets and Eterna DB. From what I remember, there is some interest in expanding these utilities to make the workflow easier, but I think the scope is limited. The description is “tools for mining, curating, and analyzing eterna datasets”, but there currently is nothing else in there. Maybe Caleb (or others?) had thought about doing more, but there is no indication of what.

Mobile App/eternachat

Currently, this is just a mobile chat client for Eterna for iOS devices. I had talked to Vineet, and agreed that it’ll probably change from a custom chat client written in objective C to being a Cordova wrapper around the html chat client, so that it can both be cross platform and improve development efficiency (ie, only updating one codebase, instead of the html client and the app). He also expressed his goal (which I agree with) to make it more of a general community app, including interfaces to the forums, wiki, PMs, etc. However, it probably would be a waste of time to work on it until it’s rewritten - a process which is honestly pretty simple, but someone has to do it. (As a note, when we rebuild the site, maybe we want to just have the app be an augmented version of that, as opposed to something separate? Not sure) Also, Currently Vineet is the only one who can push changes up to the app store since it uses his developer account, and there is nothing set up for Google Play (or even Windows Store) - I’m going to guess that it would be good to set up an organization account for Eterna, and give the dev team access to submit new versions (also makes it “official”).

Eterna Script Interface

The current code on GitHub is old and out of date, and has been sitting dormant for years. To be honest though, I’m not sure if I want to see it revived. On one hand, if people want to make changes they’d be completely free to. On the other, it’s written using the old Eterna web infrastructure which is somewhat of a pain to work with, and there’s some significant issues with it in general (namely security, which I won’t get into here). Long story short, it needs to be completely rebuilt. This would probably be significant enough a piece that it could be developed as a separate project than the rest of the website, though it would need to be closely integrated into it and likely be relying on many of the core website components.

--------------Future Project Thoughts--------------

Standards

To be successful as an open source project, I believe that Eterna needs to set some standards across its code repositories. This includes (but is not limited to) creating a visual style guide (color scheme, icon sets, GUI elements), coding style guide (including usage of linting), decision on browser support (Do we need to support back to IE6? Somewhere from 7-11? Not at all? what does our userbase use?), creating guidelines for code review, developing a testing process with actual users, etc.

Development Tooling

Unit tests would be a real benefit in my mind. It’s amazing how many bugs I’ve found after altering the code that are relatively simple/obvious, but I just forgot to test a particular piece of code. This could potentially help to save a lot of time and improve quality. Maybe we want to add end to end tests too? Continuous integration would be really helpful to track these things, and there are even (free!) services out there that would allow us to test our code on many different browser versions. Also, as I mentioned before, code linting to make sure the codebase stays consistent.

Write/Rewrite Everything in Vue

MV* frameworks can really help to make code clearer to understand and much more concise. The current iteration of the HTML chat and the data browser are both built using the event-driven jQuery model of “stick all your display code in a bunch of functions that might have some form of state and do all sorts of manual adjustments to the DOM”. MV* allows you to simply write a series of components that make up your UI, including an internal state (the “model”, a template to describe what your UI will look like in any possible state  and reflecting the state (the “view”), and the code that handles some of the complexity of interpreting user input to eventually result in a state change (the “controller”/”viewmodel”/”*”).

Now, there are tons of Js MV* frameworks/libraries out there. You have Angular, React, Vue, Ember, Knockout, Backbone, Aurelia, Meteor, Marko, Mithril… The list goes on and on. Even the current website is built on an MV* framework (however, it has a number of problems - I see it as ahead of it’s time. It was custom rolled, and because of that suffers from a lack of documentation, fragility/generally not being well built, a painful API to use, bad tooling, etc - and it’s written in Coffeescript which a most people just plain don’t like - most of the actually useful features are in ES6 now anyways). Now, I’m suggesting we go with Vue. Why is that? Well, let me start off with saying this: the world of these frameworks is such that there is always a new one being hyped, and at some point you have to just choose one you like and move on, and not pay too much attention to the current hype. That being said, I do have some reasons for choosing it.

  • I’m comfortable with it and I somewhat know it. One of the biggest usages of this will probably be the website, and since that’s something ‘ll probably be pushing, that just kinda makes sense.

  • I like the API/syntax. It doesn’t get in the way, and it’s straightforward. Angular throws around a lot of terminology and weird syntax, I’m not a fan of React’s function-centric model, Backbone requires a fair amount of overhead, etc. With Vue, you have nice HTML templates, you have plain objects for your data, and it’s just plain easy to build something that works. For me, Vue is just plain easier and more intuitive, with a smaller learning curve - something that’s really important for a project such as ours where we have limited developer time and experience. Granted, it’s not quite as ubiquitous, so maybe not as easy to trip across developers with existing experience. Also, it does not (easily) support functional programming for those who are proponents of that - I’m personally not sure how I feel about the whole functional thing but that’s a whole different can of worms. If we found a bunch of React developers, I’d say we should go for that, but Vue seems like the better approach for where we’re currently at.

  • The documentation is great. As with ease of use, this is a huge help so that it’s both easy for new contributors to get involved and so that existing developers can find the information they need. Also, their Gitter chat is pretty active too, with plenty of people who are definitely willing to help you out if you’re struggling.

  • It’s popularity seems to be on the rise. Backbone was one of the originals, then Angular came along with a lot of power. Angular 2’s syntax estranged a number of developers because of its increased complexity (though that also came with increased power), and currently React seems to be the hot-button framework that you see used in a lot of projects on GitHub (I want to say Knockout and Ember also used to be more popular, but I could be making that up). At any rate, it looks to me like people are turning away from React and towards Vue, especially since Vue 2.x has made it much more powerful, adding many missing features. Interestingly Google trends doesn’t show that (maybe because people use documentation or Gitter more than something like stackoverflow, maybe because they’re newer so people haven’t really developed enough to talk about, I’m not sure), but looking up “React vs Vue” I’m starting to see a lot more people talking (tbh it seems to be getting to be more and more of a holy war), and they’re getting close in terms of number of stars on GitHub.

Base Libraries and Templates

We can use these to our advantage to help stay efficient and enforce consistency with the previously designed standards - for example, we can have stylesheets that could be used for consistent styling, and we can build Vue components so that we can increase code reuse in general across different apps (ie, a button on the site is the same as a button in the browser is the same as a button in the app, etc). Also, it would probably be advantageous to create some templates, like default tooling configuration, and a Vue-CLI template to quickly start new projects with our desired setup

Website Frontend Rewrite

This is actually what I have in sight for my next project. The current custom rolled framework for the frontend has generally been regarded as something that no one wants to touch because it’s so difficult/annoying to use, and the source of many a security concern (again, not getting into specifics). Rewriting the frontend would be a huge step, to allow for easier website upgrades, removal of security issues, and allowing it to go OSS. Going forward, we should also be looking at making the website mobile responsive, allowing for continual interaction regardless of device (yes, even for things unrelated to the game!). This might have to wait though (probably in some sort of stages), starting out by just rebuilding what’s there, as it’s quite a bit less resource intensive. At any rate, the idea is that it can even be rebuilt page by page, and dropped in without any changes other than actually setting it as the webpage.

Website (API) Backend Rewrite

The web backend (PHP/Drupal) has proved to be just as fragile (including in some form causing the significant website/API slowness observed and reported by Machinelves), however this can’t be easily replaced until the frontend is replaced, as a new API backend requires changes to the frontend (frontend rewrite does not require immediate API changes). I’m thinking Loopback might be a good candidate to help with this, because of its abstraction of database details and built in capabilities for things like logins.

Game Rewrite

We all know Flash needs to go, in terms of support, outdatedness, license preventing OSS, no mobile support, barrier to entry for development, etc. The biggest blocking point right now is the energy model, since is written in C.

  • The existing approach is using a plugin, which browsers are discouraging and requires different handling for mobile (they don’t have plugins, but a native app can call C - but that still doesn’t work in a mobile browser if we want that).

  • Omei and I discussed leaving Flash for the energy model and building a mobile app which could directly embed C. This seems like only a temporary solution at best.

  • We could put the energy model on the server, which would be cool, but no one had done something like that before, and we don’t even know if we’d have enough server resources for that. Distributed computing a la BOINC would be cool, but again no one has done it. I just talked to an old family friend who suggested looking into something like AWS Lambda which might actually be a decent answer.

  • We could build a new model in JS, but it would probably be terribly slow and a lot of work.

  • Emscripten could be used to compile the C to ASM.js or WebAssembly, but it sounds like it was tried somewhat and had some issues (I fussed with it and I think it’s workable?), we don’t know what the performance will be like (it’s better than just JS, WASM is essentially bytecode and so better than ASM), and browser support is limited (ASM is only a few years old, and while code will run even if the browser doesn’t support it, it will probably be quite slow. WASM just went out of preview in March. See http://caniuse.com/#search=Webassembly for a specific breakdown)

  • We could decide to go standalone app only, but that’s not something we’ve talked about, and would be a pretty big change in pace - we’d need to determine if we really would want that.

Any of these require work.

Past that, the UI still needs to be built. Either we need to modify an existing RNA visualization library (drawrnajs, forna, etc) so that it can handle things like oligos, or we need to build our own (maybe with Vue, maybe with xyz graphing library, etc). Either way, that’ll possibly be somewhat complex. What’s left is a relatively trivial Vue UI, the tutorial scripting, a user script API (oh, and what about those eternascripts that were used for a bunch of constraints, like EternaBot and things in the labs?), and any odds and ends I may have missed. Sooner or later, if we want to go mobile, there’s also quite a bit of work that will probably go into designing a user interface that will be usable on a smaller screen. This is the case of a lot of small things adding up - doable for sure, but with its share of difficulty.

Wiki

Design/structure/infrastructure revamp would be slick, especially with VisualEditor

New Forums and Bug Tracking

It’s been discussed, and does make sense - GetSat isn’t meant for how we’re using it.

New Community Features

Per my EternaCon ‘16 talk, there’s a lot that could be done to facilitate collaboration.

Gamification/Incentive Overhaul

More a part of the site/game, but noting it since I’ve brought it up - I do think at some point we should change the structure of the “game”

Our Own Energy Model

There’s been multiple discussions about this. The idea is that with the data we’ve gathered and the analysis we’ve done, we could work on our own energy model that could be better than what’s out there now. This would be cool, but also a huge amount of work.

1 Like

Thoughts on 3D/VR/AR

I do think trying to “garner interest from the bleeding edge tech crowd and prepare the eterna platform to be robust and potentially last the next 5-10 years” is a goal we should go after, and I would find 3D VR/AR to be a really neat avenue to explore.  However, I look at this from a very cautionary perspective. This would be a HUGE change. I’d be concerned about doing this from both the perspective of scope:

  • 2D is proven, but 3D only has only had limited usage for our work

  • This would change the identity of Eterna - are we ready for that, or would we wind up easily getting lost in the new tech, losing touch with what Eterna is and making an inferior application?

  • Is this one giant instance of feature creep? Do we really need this?

and also the amount of resources this would take (a lot of assumptions here, PLEASE correct me if anyone knows better):

  • From my understanding what Vineet created is only a prototype, and we’d really wind up creating something completely new from scratch, without any existing reference or implementation that would have much to pull from or referencce, unlike just rebuilding the Flash app

  • There is probably a lot more work involved in building a 3D/VR/AR UI in comparrion with rebuilding the 2D one just by the nature of the beast

  • There is probably a lot more work involved in building a 3D/VR/AR UI in comparrion with rebuilding the 2D one just by the nature of the beast

  • Vineet’s implementation was based on motifs, not mutation - do we want that, or do we want a 3D version of the 2D interface that allows you to manually change nucleotides? Correct me if I’m wrong, but I don’t know of any existiing 3D energy model, and I haven’t looked to see if there are any 3D visualization libraries ou there (I’m not sure how Vineet implemented the 3D app, so I don’t know if that would work for this scenario).

  • We have limited knowledge about the available tech stacks - this will take quite a bit of resources to actually make a decision, then we have to actually need to know HOW to build it (note: I was all over Unity3D a few years ago. I was, what, 13? I did NOT actually know what I was talking about, so don’t try to use that as evidence :)).

  • I’m not confident that we actually know what we want the result of this to be. This means a ton of resources will need to be dedicated to a completely new design, new interface, and just straight up figuring out “what do you do in this thing?” It’s potentially building a whole new game from the ground up. That takes a heck of a lot more resources than using a design we already have, maybe even with modifications.

In general, building a completely new UI would mean that we’d be taking a big-bang approach instead of making manageable, incremental changes. I’m not sure if this would be either healthy for the conceptual basis of the platform (ie, completely changing what Eterna’s about) or actually viable in terms of development resources (ie, taking completely more work since it requires a completely new application with no reference implementation). That being said, I’m not saying that we shouldn’t experiment or even go after 3D/VR/AR, I think this would be a fantastic opportunity. However, I don’t think this would be the logical next step. Longevity is an issue, for sure, but that’s not helpful if we don’t have the resources to implement the new version, we lose too much momentum in the project itself before it’s finished, or we go too fast and make an inferior product. I could potentially be convinced otherwise if we’re able to thoroughly flesh out WHAT we want and HOW we’ll be able to implement it (and WHY it will be sustainable aside from just the whiz-bang tech!), but I don’t see that at this point.

Platform

As far as the Unity/WebGL/JS/etc discussion goes, I think in many ways we need more information - this goes back to my previous point that it would be dangerous to dive right into a 3D app with a completely unknown tech stack (as opposed to replacing Flash in HTML5/JS which is a relatively transparent transition) when we neither have good knowledge about our options nor even know what we want the new app to be - see the last section.

However, I am not without opinions. One thing I do know is that we want to go cross-platform. Unity definitely enables this (it allows for standalone builds to pretty much any platform as well as a WebGL build for the browser) - there are other 3D game engines out there though which might be beneficial to look through, though Unity in my mind is the most ubiquitous (next to Unreal maybe). I personally don’t know anything about working directly with WebGL as I’ve never had to look (frankly I’ve barely dealt with Unity). IIRC Vineet built his app directly in JS using Three.js (on idea if that relies on WebGL). Which would be preferred for working on a 3D app? I don’t think we should jump to conclusions. We need to research the specific strengths and weaknesses of each one, and we need to know what we want to do with it.

Dealing with Issues

@Machinelves: As far as “some plan on the horizon that I am unaware of that will be addressing these issues”, see my post about current and future projects. I do have somewhat of a plan to revamp the website frontend and then the API (then the next step after that would probably be the game itself), though that’s a longer-term solution.

Security

@MasterStormer: The current mechanism used for scripting (directly running a script directly on the webpage) is INHERENTLY insecure. As far as ease of use, I would be highly surprised if there isn’t a Unity extension (or even a non-Unity library that you could just provide the script to as a string or something) that allows for an in-app scripting. The key though is that it needs to be sandboxed. Allowing the user to run code with the same privileges as code that is actually part of the application is an immediate indication of security vulnerabilities. The application would then provide an API to control any interactions with/modifications of the application from the user script.

@Machinelves, the risk from unsandboxed user scripts is much higher than old Flash. However, old Flash is still potentially a big issue - as far as enabling Flash at all, it’s better than out of date Flash, and Flash is a reputable application that’s been a mainstay of the web in years past, but there have been instances of security issues and that was one of the big reasons why many browsers have stopped supporting plugins. As far as enabling WebGL for just Eterna, that’s a matter of trusting Eterna to write its code well, and trusting the browser developer to not screw up (that’s the only way it would affect anything outside the Eterna domain). :slight_smile:

Modifications/Extensions/Scripting

Yes, having a sandboxed environment means that there would wind up being less capabilities for user scripts, but it is absolutely worth it for security. On top of this, I don’t think this is necessarily a completely bad thing. Frankly I’m not sure that it makes sense for the vast majority of situations to be able to make deep alterations to the applications. Scripts should extend the app, not gut it - that is thinking in terms of security, usability, and sustainability. We do have to remember that Eterna will be open source. Most actual modifications to the application (as opposed to algorithms, visualizations, utilities, etc) can/should be made by direct alterations to the source code. I understand the feeling that users should be able to make it work for them and have the ability to be creative with ideas for significant changes, but I would argue user scripts does not present a method to do this that makes a lot of sense. For example, consider extended base marking - this should be a first-class member of the Eterna application, not delegated to be forever an add-on. Sure, some tools like that could make cool user scripts, but I’d argue that almost always it would be handled best by providing a good set of consistent modding interfaces (ie, annotations, UI elements, etc).

1 Like

“Stanford Team”

Jnicol, Nando, and Omei are specifically previous players, which is they are listed as “Player Devs”. However, what you might classify as the “Stanford Devs” is actually larger - there are also grad students such as Caleb and (presumably) Ben who have access to Eterna resources, as well as Vineet and others (I don’t know what the current group looks like for certain, who has what access, etc).

As far as whether I should be in this group - it’s kinda complicated. The only access to “Stanford resources” (which is really more accurately “Eterna infrastructure”) I have is the chat server and repository on GitHub. I have not signed an agreement with Stanford, I am not involved in internal development communications and do not have access to any other access to code repositories or servers (however I do have access as a contributor on the YouTube/Google+ so that I could upload the edit of last years Eternacon (I’m REALLY sorry that I still haven’t gotten that finished, but I couldn’t get it done immediately and then after that school and other things at Eterna, ie the chat, took priority). Is this current situation a good setup? More than anything it’s “necessary at the moment”. What my role will be in the future, whether I should be getting more access, etc - some of that will be determined in time, and I’m certainly willing to do whatever is best for the project.

Priorities and Mentorship

I would agree that the core team can be a bit of a black hole at times (getting things updated that only they have control over is getting to be quite a process). Omei has been an invaluable resource as a liaison to the dev team and mentoring/guiding myself and the work I’m doing, as well as in our discussions about what the future of Eterna as a project might look like (and he’s been super patient with me, which I really appreciate!). While there is a lot more I’d like to do, once the HTML chat client is launched it will become much less of a priority and a this point it seems that the website frontend will be my next target. I’d be more than happy to give some guidance to anyone who’s looking to contribute, as getting more contributors is critical to maintain sustainable development going into the future (while I like being able to build the core structure myself, after a point it’s kinda nice to have other people do things instead of just me :)).

Infrastructure

Saying “most of our website is already HTML4” is a bit of a misnomer. That sorta makes it sound like it’s a matter of “upgrading” - HTML5 really is the latest specification, which includes a set of new capabilities. This in many ways is almost less substantial (though still important) in comparison to CSS3 and the latest ECMAScript (JS) specifications, namely ES5 (I think that may actually be earlier), ES6, and beyond. As far as the website itself is concerned, the biggest portions of the frontend that need to be replaced is actually the specific JS that defines the functionality (and, actually, display) of the website.

As far as the game, it’s not the graphics that’s the issue. If you have the sequence and dot bracket, the display is not resource heavy at all. The issue is the energy model, which transforms the sequence string to the dot bracket notation, energy values, etc. This gets VERY computationally heavy. If we decide to go 3D, this could also be potentially heavy, but I can speak with no certainty as to whether this is the case or to what degree.

The Role of Chat

As MasterStormer said, one of the aims of the HTML chat project is to push the movement of Eterna to revamp infrastructure and make more and more of the project open source (and as far as inheriting it, I have definitely put you to work taking care of various details, and I really appreciate that you’ve been willing to put in the time and effort!).

Perception of Development/Scripting

I definitely agree that there tends to be a misconception from many that they’re incapable of learning how to code, when this simply isn’t true. I think in general it would be a great idea to encourage people to foray more into scripting, which could translate into potential OSS contributors. Looking into some sort of scripting challenges or such would be a really cool thing (also makes me thing of RNA-Algorithm Wars, RIP), though we don’t exactly have the ressources to build it into the website at this point.

Bar of Entry

@Machinelves: I just want to note specifically that your problems really have nothing (or very little) to do with your machine. The page load time issues seem almost certainly to be directly caused API, and the overheating/in-puzzle issues (probably aside from puzzle submission as that one is probably caused by the API), while maybe due to some issues with OS X specifically, is an issue that is not a lack of resources but instead some form of bug/memory leak. The issue has nothing to do with minimum resource usage/optimization and everything to do with infrastructure that’s badly in need of repair.

Usage of Volunteers

As I mentioned in my overall reply to this topic, I definitely agree that going after professional resources would be extremely helpful and just generally a smart idea. I would like to mention though that I think it is possible for major platform issues to be resolved by players, as I have made some plans myself to do so. However, this comes at the sacrifice of speed, potential quality (I think I can do a halfway decent job, but I’m not a professional), and certainly this isn’t exactly sustainable - if we want to continue to make significant improvements, we can’t do that on such a limited amount of resources, and having a professional team would simply allow us to do much more and at a higher quality. I do find player development important as a way to provide additional resources as well as feed fresh ideas into the Eterna ecosystem.

1 Like

Wow!!! This is an amazing analysis, such very helpful, honest, carefully considered and useful feedback. I am still working through everything, so first I would just like to say wow and thank you so much. Your reflection on the pros & cons of our possible paths forward provides us good material from which to draw a development roadmap.

You have persuaded me that player dev is still a possible route, and for my own part I will look into what I can do myself with framing infrastructure and code as I have time.

However I must still caution to all who volunteer, that I hope for you to please always look after your own self care and personal responsibilities first. Community efforts are always appreciated - and at the same time, the purpose of the various proposed dev paths here is to take some pressure off of our gamers and amateur devs, and find a way to enable the core dev team to get results without depending on volunteers whose time and abilities are variable. For example, volunteers already work hard and generously, but we still have problems related to core platform issues.

There are also security issues members have pointed out which may affect the depth at which public dev is possible. I have mixed feelings about open source myself. I wish the molecules we discover to be open source, so that everyone has access to medicine and it doesn’t get patented into a dark hole. However when it comes to our code base, open source is a murkier issue.

When a platform is widely used and very public - say, a popular web browser or OS - then there are enough eyes on the code to catch malicious injections before they happen. However the definition of our problem here is a lack of senior devs. Therefore, I do not believe that open sourcing the code would be advisable, at worst due to security issues, at best due to simple lack of oversight to catch coding errors. The core dev team would have to be on board, and hold the keys, and still have gated access to push anything Live.

I have to think about it and research the pros and cons before saying more, but at the moment my instinct is to agree with LFP6 about the core dev team lacking bandwidth for code reviews on submission/push to main branch. As some of you may recall a couple years ago I was trying to get player dev more organized. I dropped it for this exact reason. There is simply not bandwidth on the staff side to ensure volunteer submissions to the main branch are properly vetted, which means open source could spell chaos and a messy decline for a project as small as this, in my personal estimation. Ironically, having a greater amount of volunteer submissions would only overwhelm them more, so that is why I did not build out infrastructure any more for player dev, to prevent a sudden tsunami of code submissions that would just sit in a pile waiting to be vetted.

The last thing I want is for any volunteers to feel their time has been wasted. We have to work with the reality of our limited resources.

So Rhiju, devs, please hear me on this: Many of us care deeply, some of us have skills or time we give as generously as we can. However we are each individual people, just like you. We are NOT “the internet”. We cannot magically solve all our problems.

We can crunch, we can fiddle, we can play, we can even code a bit. But we are not some magic machine that can just be set spinning and have it produce all you need to run the site. Volunteers are not a source of free labor. They are a source of people who care very much, who will do what they can, when they can. But make no mistake: “open source” and “volunteers” and “those weird interwebz people” are not magic ingredients which can be thrown together in a cooking pot to make an automatically functional project.

Just like random nucleotides thrown together, we will thrash about until we self assemble into something - but it might not be what you want. Any system that doesn’t take a few billion years to cook and work out the kinks, requires system design, it requires oversight. It requires organization and leadership.

Maybe we will get lucky and solve the problems ourselves on our free time. As I have many times before, I will even pledge some of my own time to try to help as best I can, while acknowledging all those citizens already doing just that. So I still do not wish to discourage player dev. But I have to think about our limited resources and how that affects the constraints of player dev. I’ll respond again with more reply to your other points LFP6, hopefully within the next week.

Many many many thanks to you for taking the time to so carefully consider each point and provide us tips for moving forward intelligently. This kind of thoughtful analysis is truly a gift to the community and the project, and I can see you will do very well on any team throughout your career - we are very lucky to have your help. Thanks for taking the time, and I trust you will also look after yourself, as you already know that your school and health and such comes first.

1 Like

Just read this relevant article:

https://www.gatesnotes.com/Health/How-Virtual-Reality-Can-Help-Us-Fight-Viruses

Thanks LFP6 for the great analysis on 3D/VR/AR - your technical feedback on these threads is especially invaluable, and I really appreciate the many specific tips and security notes.

I hear you on Vineet’s 3D prototype being a prototype. I mention it mainly for an eye to the future, and because it’s what we have so far. As Bill Gates has discovered ( see link in post above ), if we can sit there with a VR headset and get immersive, we may also learn things that simply aren’t accessible in 2D. Again with the caveat that we still want access to 2D & sequence formats.

So I leave it to the dev team to determine the most sensible roadmap for flash retirement, as you have noted elsewhere, Nando or someone else on the core team will need to take up further discussion. I don’t know whether 3D will be feasible before the required Flash retirement. But it’s good to consider, and 2D HUD overlays are possible for the other system data.

Thanks for the the first class tool concept for extended base marking. That’s exactly what I wanted to say.

Our Own Energy Model
There’s been multiple discussions about this. The idea is that with the data we’ve gathered and the analysis we’ve done, we could work on our own energy model that could be better than what’s out there now. This would be cool, but also a huge amount of work.

I love this idea – folks in my lab are working on it, but its quite tricky. The good news is that we’ll probably write the folding code from scratch, initially in python, so that we’ll have expertise in porting to C or JS – whatever we find useful. But expect 1 to 1.5 yrs of groundwork.

2 Likes

Data Browser
This is definitely a big project, and Omei has done a great job. I’m sure he would be open to future enhancement by the community. I will note that this codebase is somewhat complex -

From the Stanford developers’ end, we have a little money to support a part-time programmer/data analyst who can help with completing the move to the new data browser and helping omei, whbob, and others get all our collected data uploaded. I’ll be posting information about the job in early August, 2017.

We unfortunately don’t have funding for the other things – devs will look forward to hearing creative solutions from the community!

I’m curious why you’re allocating those funds towards this project, which is at least stable, as opposed to work on rebuilding the website/Flash app?