SpartanRefactoring / Main

Eclipse plugin that performs automatic refactoring of Java source code, making it shorter, more idiomatic and more readable
https://www.spartan.org.il
100 stars 56 forks source link

Finding a new project idea #847

Closed OriRoth closed 7 years ago

OriRoth commented 7 years ago

Post your suggestions here - put a like on the ideas you love so we can get a feeling of the final result. @yossigil FYI

OriRoth commented 7 years ago

Project Idea: TeachAid Eclipse plugin that supply tutorial building tools. The tutorials can vary from Java language tutorials to project-specific tutorials. The plugin will make it easy to build various help utilities, such as:

The idea is to build a base plugin, from which others will be able to create their own tutorial plugins at ease. Moreover, it will allow existing projects to define interactive tutorials that can be easily integrated into the project's structure.

Use Examples:

See #840

ravivos commented 7 years ago

@OriRoth please post the ratings idea too. @mdoron and I will describe the market idea to details later together.

yossigil commented 7 years ago

If nothing works, I always have a bunch of deaults.

yossigil commented 7 years ago

Clever extract method?

OriRoth commented 7 years ago

I suggested working on the law of Demeter but they did not show enthusiasm... I guess it is still an option though. (for the interested, this project idea is highly connected to the Spartanizer).

Don't give away my thesis so easily! :O

ravivos commented 7 years ago

Project idea - Telegram groups bot A telegram bot that helps organizing groups - helps by parsing the conversation and understands that events are being planned by messages and organized the event for example. of course this is a very generalized Idea that we need to form together and I only brought a very simple and specific example for a use-case

OriRoth commented 7 years ago

@all remember to put a đź‘Ť on the ideas you like!

yossigil commented 7 years ago

OR :-1:

ravivos commented 7 years ago

Project idea - Market Evaluation Revolutionary software that scrapes web shops (s.a Amazon, ebay, etc) and compares prices, detail, value, etc. Using algorithms and models we learned throughout our years in the Technion such as graph searches, we will extract the data we need and evaluate it. The software will be able to find the market demand and supply of exact product with account of the distance, and to determine the fairest price both for the producer and consumer. For practical use - we can create a GUI interface using the knowledge we gained from the course "software engineering methods" (which is one of the Prerequisites to this course). We can make the program be practical for use for every ordinary consumer and producer by making an interface that gets a product, evaluates the result and returns the data it evaluated together with the place that sells the product with values closest to our calculated optimal. We can also push the project one step further and even create an “online virtual store” with only best valued prices that our software evaluated (even only for research use because we don’t want to envolve money in the equation just yet). We searched the web thoroughly for similar products and even found this list of online marketing evaluation solutions:

https://www.shopify.com/blog/7068398-10-best-comparison-shopping-engines-to-increase-ecommerce-sales.

But with that said, we didn’t find anything close to “an online virtual market which evaluated the fairest price for producers and consumers”. We honestly think that besides having a lot of fun making practice of all we've learned throughout our degree and of course learning methods to write high quality code we will gain in this course, we can also make a product which is an innovation in the online marketing subject and a necessity which hasen't been created yet. Redundant to say we are very positive that this is a project where everyone is a potential client for it and has high percentage of becoming "famous" and highly used.

mdoron commented 7 years ago

@ravivos I think this is the best idea so far. Our brainstorming was productive and we have plenty of more ideas related to this one.

OriRoth commented 7 years ago

@yossigil OK we are pretty done. By democratic vote (@kfir-marx has sent me a "kolot-hayama'im" vote) we decided the order of projects by priorities:

That means first of all we want to do Market Evaluation, and if it is absolutely impossible or unacceptable project idea for some reason we suggest doing TeachAid as second priority project idea.

yossigil commented 7 years ago

In full honesty, I believe both are completely unrealistic. Although the market research sound the more unreasonable of the two. But, what do I know? What do you mean by a fair price? Do you have the background in economy? There is also a huge theory of auctions behind.

Teaching aid? I will have to hear more about it, but again, I doubt you searched the market and technology well enough. 00.pdf

OriRoth commented 7 years ago

Well, after some thought I decided to break the idea of TeachAid into two concepts:

Eclipse bound Java tutorial: a Java tutorial that uses eclipse's capabilities. Use examples:

Project bound tutorials creation tool: a project owner would be able to create a tutorial for his/er project using our plugin (the tutorial files are included in the project). Then other users (probably new contributors to the project) would be able to enjoy extensive tutorial tools. For example, the new contributors to the Spartanizer project can make use of:

An idea that @yossigil suggested: Eclipse visual tutorials: instead of filming a tutorial and uploading to YouTube, tutors would be able to record a series of actions done in eclipse. Then pupils can rewatch the tutorial, running on their own eclipse!

OriRoth commented 7 years ago

An idea of @yossigil: Have you ever encountered a very badly written code, and desperately tried to analyze it? Our tool would offer a new layout for Java code, that is much more readable and appealing! For example....

boolean f() {
 return someObject.someAction().anotherAction(anotherObject.something());
}

What is going on here? I am really not sure... by refactoring the code code we can get a clear view of it:

boolean f() {
  MyClass myClass = someObject.someAction();
  int i = anotherObject.something();
  return myClass.anotherAction(i);
}

Now it is much clearer, we can differ each function call and see intermediate types. Great for debugging! This is going to be an Eclipse plugin and a cmd tool - a bit less dramatic than the Spartanizer, but would still offer powerful refactoring tools for Java developers.

ravivos commented 7 years ago

@yossigil Some of us had done a course in economics and all of us were planning on studying everything we do need in order to accomplish our goal. In our opinion one of the goals in this yearly project specifically and in academical institutes s.a the Technion in general, is to learn more, enrich our knowledge and outreach for the "unknown". we thought that we have a great Idea and a yearly project can be a great way to accomplish it. With that said, I completely do understand your opinion and it is 100% clear for me that if you think it's unrealistic then it is unrealistic for the yearly project and we will choose one of the "realistic" ideas. For example, I like the idea Ori posted on behalf of you and vote for it - I think it will go great among with the spartanizer (spartanized code is clear and simpler, but for example when debugging programmers can use this plugin to get a hold of what is happening better). Then again, if we honestly believe the market product is "the next big thing", we will find time to do it anyways, regardless of a course in the Technion, and "Reap the benefits" for ourselves

mdoron commented 7 years ago

@yossigil, We understand that this idea seems unrealistic now, but this is how every idea starts. We have clear view of what we want this to be, and we know we can achieve it in some version of it.

As @ravivos said, we want to do this project anyways, so I think it's a good start to be lead by someone like you in terms of clearness of code and software engineering methods. Maybe it's a good place to test your methods in a large project, which is start-up like, and not exactly in "laboratory conditions".

yossigil commented 7 years ago

Some of the issues I discussed with @ravivos include

All these require much attention. What worries me is not only the huge load that this is going to put on you, but something worse: the fact that all these points seems to have escaped you. The idea is great, if it was a startup backed with a good technology support, I would consider investing in it. But, it is much too much for a yearly programming project of six students.

BTW, did you check this tool?

yossigil commented 7 years ago

@mdoron @ravivos: how about it if I try to help you in this project, and even consider awarding it with credit, if you want, but not within YPP?

As I said: I think it is a great direction.

ravivos commented 7 years ago

@yossigil It sounds like a great idea and certainly something we would like to discuss. Can a meeting be arranged with all our team members who might like to take part? @OriRoth @mdoron @kfir-marx @tomerdragucki

mdoron commented 7 years ago

@yossigil, sounds phenomenal. @ravivos was quicker, but my response is the same, for those of us who are interested in this project, this may be the answer.

yossigil commented 7 years ago

NP. Let's fix a technical meeting, before we discuss academic and credit issues. In the next group meeting, I would like to discuss Athenizer vs. TeachAid (still). Maybe TeachAid could be moved to the next semester.